Ой, так не годится. Я то думал, что Ц-шные исходники более читаемые и эти определения уже поставляются производителем кристаллов. Вот пользую микрочиповский MPASM или GNUшный GPUTILS - там подключаешь инклюд и всё там есть - и регистры и биты. И мне не надо ничего помнить (ну за исключением в какой странице памяти оно находится), просто пишу bsf intcon, 1<<GIE. Тут Zheleznjakov посоветовал порыть библиотеки... пока откопал stm8swlib. Пытаюсь изучить, но похоже, она пытается от меня всё спрятать за функциями типа void GPIO_Write (GPIO_TypeDef * GPIOx, u8 PortVal ). Еще откопал stm8s-discovery_dev.zip - там есть каталог Project_template, который вроде как можно куда-то скопировать и от-туда плясать. Там вроде есть stm8s_clk.h итп. Но не наблюдаю хелпов, где почитать. Наверное, предполагается, что надо изучать сырцы. Извините, что пишу глупости, но это моя первая попытка программить на С микроконтроллеры. До этого всегда пользовался только макроассемблером. Можно было и здесь это продолжить, но не хотелось тратить силы на изучение новой мнемоники команд, а взамен изучить иную технику программирования.
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Да, если первый раз то сложнова-то будет или очень интересно Я предполагал что вы глянете заголовочники и по ним поймете методологию работы. С другой стороны ни кто не мешает вам создать свои заголовочники, у них будет одна проблема актуальность (обновление). Хотя используя заголовочники из либы конструкция получается вроед не такой уж и страшной: CLK->ECKCR = CLK_HSE_ON; или так CLK->ECKCR = CLK_HSE_ON | CLK_LSE_OFF; при этом сами функции из либ ни кто не обязывает использовать пишите свои.
_________________ С уважением, Денис Железняков aka ZiB Мой блог: http://ziblog.ru
придумал на работе поставить Cosmic (16k без ограничения срока годности). Оказалось, у него гораздо лучше userguide. Но сегодня зарегистрировать не удалось - выходные.
Zheleznjakov писал(а):
С другой стороны ни кто не мешает вам создать свои заголовочники, у них будет одна проблема актуальность (обновление).
Уже обосновывал своё нежелание этим заниматься.
Zheleznjakov писал(а):
Хотя используя заголовочники из либы конструкция получается вроед не такой уж и страшной:
Такая мысль была промелькнувши, но не хотелось делать кашу. А то будет так, что напишу своё, а точно то же оказывается написано рядом. Хотя, я несколько уже разочаровался. Каждый компилятор организует интерфейс по-своему. И не могу придумать к чему приткнуться. Но это первые шаги - всегда трудные.
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Если писать на си, то не пойму я вас в чём проявиться разница? Если вы вязли заголовочник из либы, то у вас будет один стил во всех компиляторах: CLK->ECKCR = CLK_HSE_ON; возьмите заголовочники у иара будет у вас везде вот такая запись: CLK_ECKR_bit.HSEEN=1;
_________________ С уважением, Денис Железняков aka ZiB Мой блог: http://ziblog.ru
Плюнул я на неблагодарное занятие - привинчивание чужих хедеров. Не барское это занятие. Сделал по-тупому - свои дефайны написал. Может когда освоюсь - разберусь. Зато лампочка замигала. Сначала не хотела мигать, если собирал Release. Потом отрубил оптимизацию по размеру - завелось. Хотя теперь по размеру от Debug не отличается.
_________________ А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Если вы вязли заголовочник из либы, то у вас будет один стил во всех компиляторах: CLK->ECKCR = CLK_HSE_ON;
Наверное есть смысл портировать демо-проекты курса на заголовочники из либы, поскольку не IARом единым... Мне было проще начать с него, потому что есть многолетний опыт на нем с AVR и ARM. А цель данного курса - познакомить народ, которому тяжко без русской документации с тем, как на STM8 решать практические задачи по работе с периферией. т.е. подразумевается, что человек знает основы си, имеет понятие о микроконтроллерах вообще (51, AVR, PIC, ARM - не важно), не боится брать паяльник в руки и хочет понять, чего можно ожидать от STM8, стоит ли использовать его в новых проектах или нет. Я пишу эти уроки на основе собственного опыта изучения STM8 и все, о чем пишу, проверяю на практике самостоятельно. В дальнейших планах - сенсорная кнопка, простая кнопка, матрица кнопок, энкодер, клавиатура PS/2, Beeper, UART, АЦП, HD16440, DS18B20, DS1307, USB, DMX512, SPI, 74HC595, IR RC-5. Все это когда-то делалось на AVR, собралась даже в некотором смысле своя библиотека, построеная на макросах, и вот теперь эти наработки буду переводить на STM8, а затем и на STM32 и LPC. И взлет цен на AVR здесь тоже сыграл свою роль.
Возможно под ОУ или например часы или ещё чего -- Сегодня повозися с космиком и симулятором, довольно интересная штука. Эх если бы не два курсача что нибудь бы слабал
_________________ С уважением, Денис Железняков aka ZiB Мой блог: http://ziblog.ru
Может и ошибаюсь ( хорошо бы) . При эксперементах выяснилось , что битовые операции у STM8S (конкретно пока только с Дискавери проверялось) имеют 2 такта а не 1. См. мои посты и kison'а http://kazus.ru/forums/showthread.php?t=20861&page=64 Посмотри у себя плиз...
Пошаговая трассировка? да 2 такта, т.к. конвеер походу при пошаговом выполнении сбрасывается. А, если верить моим экспериментам, число тактов на команду соответствует даташиту (для некоторых методов адресации может быть (и есть) больше).
_________________ - Если вы такие умные, то почему тогда строем не ходите? ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Пошаговая трассировка? да 2 такта, т.к. конвеер походу при пошаговом выполнении сбрасывается. А, если верить моим экспериментам, число тактов на команду соответствует даташиту (для некоторых методов адресации может быть (и есть) больше).
То есть можно считать в даташите - описка ? BRES, BSET,BCPL -2 такта
Хм, у меня в даташите 1 такт на эти команды. Rev2 от 5-Jun-2008 Один такт они занимают, просто при пошаговом прогоне с отладчиком, конвеер команд сбрасывается, поэтому добавляется 1 такт на чтение очередной команды, а при нормальной работе сколько написано тактов в даташите, столько они и занимают времени на выполнение.
_________________ - Если вы такие умные, то почему тогда строем не ходите? ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Хм, у меня в даташите 1 такт на эти команды. Rev2 от 5-Jun-2008 Один такт они занимают, просто при пошаговом прогоне с отладчиком, конвеер команд сбрасывается, поэтому добавляется 1 такт на чтение очередной команды, а при нормальной работе сколько написано тактов в даташите, столько они и занимают времени на выполнение.
В том то и дело , что проверялось это не в отладчике . Проверялось при прогоне Release, с контролем на осциллографе и логическом анализаторе . В цикле
При выполнении переходов конвейер сбрасывается, для чистоты эксперимента попробуй увеличить число BCPL, пар BSET/BRES хотя бы до десятка, тогда можно будет с уверенностью говорить об опечатке в даташите.
_________________ - Если вы такие умные, то почему тогда строем не ходите? ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
При выполнении переходов конвейер сбрасывается, для чистоты эксперимента попробуй увеличить число BCPL, пар BSET/BRES хотя бы до десятка, тогда можно будет с уверенностью говорить об опечатке в даташите.
Вот эти и займусь в понедельник . Есть задумка - как привязать эпюры к тактам . Сразу будет видно все . Я собственно не грешу на STM, поэтому и писал :
Щас в отладчике посмотрел, точно, выходит на битовые операции с памятью по 2 такта, по всей видимости читать модифицировать и писАть в память за один такт он не может. (прогонял цепочку из 20 команд BCPL с четырьмя ячейками памяти и смотрел изменение счетчика TIM1 с предделителем 1)
Значит надо взять на заметку - проверять такты операций с памятью. А даташит не исправили, последняя ревизия на сайте от июня 2008.
UPD: INC DEC также выполняются по 2 такта. Справедливо предположить, что все операции чтение-модификация-запись ячейки ОЗУ выполняются не менее чем за 2 такта. По всей видимости даташит писАлся "копипастой"
UPD: Выкопал свой частотомер на меге, проверил еще и команду MOV - тоже по 2 такта, и константа->ОЗУ и ОЗУ->ОЗУ (в даташите 1).
UPD: Все оказалось гораздо сложнее, чем казалось на первый взгляд...
_________________ - Если вы такие умные, то почему тогда строем не ходите? ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
странно у меня такие результат с платой дисковери dec a - 1 такт (как по даташиту) decw x - 2 такта (как по даташиту) на счет остальных команд похоже все одно тактные команды которые имеют длинну больше 4, в отладчике отрабатываются за два такта. на работе проверю детально, дома нет приборов...
_________________ С уважением, Денис Железняков aka ZiB Мой блог: http://ziblog.ru
Как я вчера выяснил, команды чтение-модификация-запись ОЗУ с длиной кода команды меньше 4 байт выполняются за 2 такта, но благодаря конвееру(ширина которого 4 байта), если команда, следующая за этой командой не обращается к ОЗУ (регистровые пересылки и арифметика-логика, команда не более 4 байт длиной), то эта команда выполняется "во время" второго такта первой. Т.е. код:
Код:
inc var1 ; 2 такта ld a,#23 ; 1-1 такт inc var2 ; 2 такта dec a ; 1-1 такт ; Всего 4 такта
Потребует для выполнения столько же тактов, что и код:
Код:
inc var1 ; 2 такта inc var2 ; 2 такта dec a ; 1-1 такт ; Всего 4 такта
Причем в эту особенность попадают и некоторые 4-байтные команды. Вот только команды манипуляции битами (BRES, BSET, BCPL) с которых все началось требуют 2 такта в любом случае, т.е. как будто они сбрасывают конвеер. Так как первый байт кода этих команд совпадает с первым байтом кода команд проверки бита и перехода BTJF и BTJT, то это и не удивительно. И еще заметил особенность команды безусловного перехода JRA (она же JRT): если ее код попадает в одну 4-байтную страницу с предыдущей 1-2-байтной командой, то на ее выполнение затрачивается один такт вместо двух. (измерял время цикла, смещая тело цикла в памяти NOP-ами вставляемыми перед телом цикла).
_________________ - Если вы такие умные, то почему тогда строем не ходите? ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения