Обсуждаем контроллеры компании Atmel.
Ответить

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вт мар 27, 2018 15:01:56

Не понятно какой контроллер, не известен код программы


Извините что не сказал- контроллер atmega8.
А как он вообще устанавливается?,везде пишут что буфер приемника переполнен?,как вообще это досканально понять?
к примеру я отправил данные и чатаю их:

Код:
read:
sbis UCSRA,RXC
rjmp read

in R17,UDR


получается флаг установиться если во время чтения придет еще байт в UDR что ли?
Я пока в железе устройство не собирал решил сделать приборчег который показывает процент ошибки передачи данных по UART на модулях hc-12,пока смотрю в симуляции,возможно протеус логает не пойму,если я подключаю виртуальный терминал в симуляции и сам передаю данные через него куча раз то устанавливается флаг DOR типо что переполнен UDR приёмника я как понял,но почему то после установки DOR сразу все виснит в :


Код:
read:
sbis UCSRA,RXC
rjmp read


и данные больше не читаются RXC=0 всегда

:dont_know: ,а как вообще сделать так чтобы флаг DOR =0 после того как он станет =1 ?, так что ли???:
Код:
in R17,UDR
,в симуляции так не выходит.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вт мар 27, 2018 16:01:37

Может здесь найдете что-то полезное:

http://radioparty.ru/prog-avr/program-c ... -usart-avr

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт мар 30, 2018 22:03:28

Народ, что то не пойму - или лыжи не едут, или я. На тини 2313 не могу вывести сигнал тактирования на порт д2. Порт сконфигурирован на выход, фьюз установлен, а на PD2 тихо. :dont_know:

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пт мар 30, 2018 23:15:32

Народ, что то не пойму - или лыжи не едут, или я. На тини 2313 не могу вывести сигнал тактирования на порт д2. Порт сконфигурирован на выход, фьюз установлен, а на PD2 тихо. :dont_know:

Эта фича делается фьюзами, а не программно. Нужно ли настраивать порт на выход не помню. Пробуйте так и так. Давно было, у меня обратная ситуация была, устройство не работало, так как пин фьюзами был настроен как выход кварцевого генератора.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб мар 31, 2018 04:21:37

... На тини 2313 не могу вывести сигнал тактирования на порт д2. Порт сконфигурирован на выход, фьюз установлен, а на PD2 тихо.
Если запрограммировать FUSE-бит CKOUT, всё, на лапе PD2/CKOUT/XCK/INT0 будет тактовая с учётом CKDIV8.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб мар 31, 2018 16:14:38

значит протеус тупит

Добавлено after 7 hours 12 minutes 20 seconds:
Народ, помогите. Кто может сгенерировать ассемблеровския листинг вот из этого http://radiokot.ru/circuit/digital/home/239/03.zip проекта, а то скачал студию, а разобратся не могу.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб мар 31, 2018 19:23:22

Это СИшный проект, а не ассемблерный.
8)

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Сб мар 31, 2018 19:52:17

я в курсе. Именно поэтому прошу асемблерный листинг после компиляции СИшного кода в студии. Если кто работает в студии это будет быстрее чем мне сейчас в ней ковырятся + к тому в протеусе нету файлов которые указаны в .include, и он на них ругается, а без них листинг мягко говоря не полный

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Пн апр 23, 2018 20:52:05

Всем доброго времени суток!
Задача: помигать св-диодом с частотой 1Гц. МК - тини2313, частота 500кГц (что бы с коеф. дел 1024 получить частоту мигания 1Гц). Св-диод управляется кнопкой (переключение по фронту, без внешних прерываний). В программе обязательно задействовать таймер (для практического закрепления изученного материала). Таймер Т0 изучил все, кроме ШИМа.
Я уже когда то задавал подобный вопрос здесь (313 страница), из предложенных вариантов выбрал такой (какой больше смог понять :) ):
в главной программе я опрашиваю сост. кнопки. Если кнопка нажата, то... то что делать дальше не понимаю. Не понимаю как построить свою программу и где какой блок должен размещаться.
Я имею ввиду, к примеру, вот где нужно разместить всю инициализацию связанную с таймером (все, включая уст. флага внеш. прерыв. и уст. необходимого коеф. дел.)?
1) до входа в осн. цикл (тогда где то я должен буду обнулить таймер?)
2) вкл. внеш. прерыв. до осн. цикла, а в подпрограмме вкл св-диод и задать коеф. деления
3) или нужно связать свою судьбу с прерыванием в канале А или В?
в общем, мне не хватает понимая где что размещать и как построить програму так, что бы она состояла из блоков, как конструктор (как я понимаю, ведь к этому же необходимо стремится, создавая проект на ассемблере)
Возможно у кого то есть пример правильного/профессионального построения программы? (желательно не сложную, сложности в "мигание двумя св-диодами" будет достаточно пока :) )
надеюсь, никого не запутал. Спасибо за ответы!

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вт апр 24, 2018 03:42:36

Я писал неоднократно. Книги: Вольфганг Трамперт "AVR-RISC микроконтроллеры фирмы ATMEL". Джон Мортон "Микроконтроллеры AVR. Вводный курс". Там примеры программ. И не только.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вт апр 24, 2018 03:53:14

начальные настройки таймера (и не только) делаются (т.к. они один раз делаются) до главного цикла, там указываешь и режим работы и делители и разрешаешь прерывания.
для более точных интервалов обычно используют режим СТС - в OCR0A заносишь значение и счетчик, досчитав до него сам обнуляется, для запуска обработчиков используй прерывания по совпадению (по переполнению работать не будет, т.к. переполнения не происходит).

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вт апр 24, 2018 19:12:44

Подскажите кто знаком с БОД
В тини13а есть функция программного отключения БОД. Пытаюсь ее активировать в IDLE режиме вот таким образом:

Код:
   ldi r_temp, (1<<SE)|(0<<SM1)|(0<<SM0)
   out MCUCR, r_temp

   ldi r_temp, (1<<BPDS)|(1<<BPDSE)
   out BODCR, r_temp

   ldi r_temp, (1<<BPDS)|(0<<BPDSE)
   out BODCR, r_temp

   sleep


Естественно БОД включен во фьюзах, но по току потребления вижу что при переходе в IDLE БОД не отключается (должно быть снижение на 15-17 мкА)
Может программное отключение БОД возможно только в Power Down режиме? Даташит как-то расплывчато об этом говорит, остается ощущение что не только в Power Down

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вт апр 24, 2018 19:58:46

По-моему, в даташите конкретно сказано, в каком режиме BOD отключается:
Изображение
Вложения
screenshot-ww1.microchip.com-2018.04.24-21-01-04.jpeg
(163.93 KiB) Скачиваний: 621

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вт апр 24, 2018 20:04:14

IDLE-режим по большому счету бесполезен. Снижение тока потребления минимально, так как работает практически все. Если и есть польза, то только в единственном случае, минимизировать собственные шумы при аналого-цифровом преобразовании. Так как в этом режиме выполнение программы остановлено, нет переключений сигналов в мк и на целевой плате.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Вт апр 24, 2018 20:38:17

И сам бы отказался от IDLE, да вот только прерывание от таймера необходимо, а как известно таймер из Power Down не пробуждает.
С другой стороны в аппноуте "Innovative Techniques for Extremely Low Power Consumption with 8-bit Microcontrollers" перечислены и другие режимы кроме Power Down
Вложения
Снимок.JPG
(150.42 KiB) Скачиваний: 425

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Ср апр 25, 2018 06:07:16

Не понятно, зачем включать BOD, стремясь при этом снизить потребление.

По "бесполезности" режима IDLE. Картинка показывает снижение в ~4 раза. Если ещё отключить аналоговый компаратор, лапы перевести на вывод, потребление будет ещё ниже.
СпойлерИзображение
Вложения
TN13_ACTIVE_IDLE.PNG
(42.12 KiB) Скачиваний: 321

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Ср апр 25, 2018 07:29:05

БОД используется для обеспечения сохранности ЕЕПРОМ. По логике вещей отключить его программно в ИДЛЕ должно быть возможно, потому что в этом режиме отключается тактирование флэш и цпу, а значит и выполнение неверных команд, которые могут привести к порче памяти, невозможно

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Ср апр 25, 2018 14:00:06

Понятно. Нет под рукой tiny13a, можно было бы похулиганить.
Код:
   LDI   R20,1<<SE|1<<SM1
   LDI   R21,1<<SE

   OUT   MCUCR,R20
   LDI   R22,1<<BPDS|1<<BPDSE
   LDI   R23,1<<BPDS
   OUT   BODCR,R22
   OUT   MCUCR,R21
   OUT   BODCR,R23
;********************
WAIT:
   SLEEP
   RJMP   WAIT

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Ср апр 25, 2018 18:20:20

Нет, не мурчит(

Я имею ввиду для IDLE режима. Для Power Down работает.

Re: Ассемблер (ASM) для AVR в вопросах и ответах

Чт апр 26, 2018 10:27:07

Feruz писал(а):Нет, не мурчит
а разве была надежда? производитель черным по английскому вам написал - только POWER DOWN. какие еще надежды, откуда?!
Ответить