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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
sirha
Вымогатель припоя
Сообщения: 550
Зарегистрирован: Ср авг 17, 2011 23:12:30

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

Сообщение sirha »

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


Извините что не сказал- контроллер 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
,в симуляции так не выходит.
Аватара пользователя
Jetetex
Встал на лапы
Сообщения: 117
Зарегистрирован: Ср окт 15, 2014 12:45:46
Откуда: Анапа

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

Сообщение Jetetex »

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

http://radioparty.ru/prog-avr/program-c ... -usart-avr
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.
Аватара пользователя
Jetetex
Встал на лапы
Сообщения: 117
Зарегистрирован: Ср окт 15, 2014 12:45:46
Откуда: Анапа

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

Сообщение Jetetex »

Народ, что то не пойму - или лыжи не едут, или я. На тини 2313 не могу вывести сигнал тактирования на порт д2. Порт сконфигурирован на выход, фьюз установлен, а на PD2 тихо. :dont_know:
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

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

Сообщение Demiurg »

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

Эта фича делается фьюзами, а не программно. Нужно ли настраивать порт на выход не помню. Пробуйте так и так. Давно было, у меня обратная ситуация была, устройство не работало, так как пин фьюзами был настроен как выход кварцевого генератора.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

... На тини 2313 не могу вывести сигнал тактирования на порт д2. Порт сконфигурирован на выход, фьюз установлен, а на PD2 тихо.
Если запрограммировать FUSE-бит CKOUT, всё, на лапе PD2/CKOUT/XCK/INT0 будет тактовая с учётом CKDIV8.
Аватара пользователя
Jetetex
Встал на лапы
Сообщения: 117
Зарегистрирован: Ср окт 15, 2014 12:45:46
Откуда: Анапа

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

Сообщение Jetetex »

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

Добавлено after 7 hours 12 minutes 20 seconds:
Народ, помогите. Кто может сгенерировать ассемблеровския листинг вот из этого http://radiokot.ru/circuit/digital/home/239/03.zip проекта, а то скачал студию, а разобратся не могу.
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15541
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Это СИшный проект, а не ассемблерный.
8)
Аватара пользователя
Jetetex
Встал на лапы
Сообщения: 117
Зарегистрирован: Ср окт 15, 2014 12:45:46
Откуда: Анапа

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

Сообщение Jetetex »

я в курсе. Именно поэтому прошу асемблерный листинг после компиляции СИшного кода в студии. Если кто работает в студии это будет быстрее чем мне сейчас в ней ковырятся + к тому в протеусе нету файлов которые указаны в .include, и он на них ругается, а без них листинг мягко говоря не полный
Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.
dumbass
Встал на лапы
Сообщения: 89
Зарегистрирован: Вт мар 31, 2015 01:12:46

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

Сообщение dumbass »

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

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

Сообщение Demiurg »

Я писал неоднократно. Книги: Вольфганг Трамперт "AVR-RISC микроконтроллеры фирмы ATMEL". Джон Мортон "Микроконтроллеры AVR. Вводный курс". Там примеры программ. И не только.
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

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

Сообщение Ivanoff-iv »

начальные настройки таймера (и не только) делаются (т.к. они один раз делаются) до главного цикла, там указываешь и режим работы и делители и разрешаешь прерывания.
для более точных интервалов обычно используют режим СТС - в OCR0A заносишь значение и счетчик, досчитав до него сам обнуляется, для запуска обработчиков используй прерывания по совпадению (по переполнению работать не будет, т.к. переполнения не происходит).
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Feruz
Открыл глаза
Сообщения: 55
Зарегистрирован: Вс май 03, 2015 15:05:58

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

Сообщение Feruz »

Подскажите кто знаком с БОД
В тини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
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

По-моему, в даташите конкретно сказано, в каком режиме BOD отключается:
Изображение
Вложения
screenshot-ww1.microchip.com-2018.04.24-21-01-04.jpeg
(163.93 КБ) 662 скачивания
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

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

Сообщение Demiurg »

IDLE-режим по большому счету бесполезен. Снижение тока потребления минимально, так как работает практически все. Если и есть польза, то только в единственном случае, минимизировать собственные шумы при аналого-цифровом преобразовании. Так как в этом режиме выполнение программы остановлено, нет переключений сигналов в мк и на целевой плате.
Feruz
Открыл глаза
Сообщения: 55
Зарегистрирован: Вс май 03, 2015 15:05:58

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

Сообщение Feruz »

И сам бы отказался от IDLE, да вот только прерывание от таймера необходимо, а как известно таймер из Power Down не пробуждает.
С другой стороны в аппноуте "Innovative Techniques for Extremely Low Power Consumption with 8-bit Microcontrollers" перечислены и другие режимы кроме Power Down
Вложения
Снимок.JPG
(150.42 КБ) 440 скачиваний
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

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

По "бесполезности" режима IDLE. Картинка показывает снижение в ~4 раза. Если ещё отключить аналоговый компаратор, лапы перевести на вывод, потребление будет ещё ниже.
СпойлерИзображение
Вложения
TN13_ACTIVE_IDLE.PNG
(42.12 КБ) 342 скачивания
Feruz
Открыл глаза
Сообщения: 55
Зарегистрирован: Вс май 03, 2015 15:05:58

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

Сообщение Feruz »

БОД используется для обеспечения сохранности ЕЕПРОМ. По логике вещей отключить его программно в ИДЛЕ должно быть возможно, потому что в этом режиме отключается тактирование флэш и цпу, а значит и выполнение неверных команд, которые могут привести к порче памяти, невозможно
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

Понятно. Нет под рукой 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
Feruz
Открыл глаза
Сообщения: 55
Зарегистрирован: Вс май 03, 2015 15:05:58

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

Сообщение Feruz »

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

Я имею ввиду для IDLE режима. Для Power Down работает.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

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

Мой уютный бложик... заходите!
Ответить

Вернуться в «AVR»