програмирование AVR на АСЕМБЛЕРЕ для чайников

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение xkp »

английский я знаю по стоьку по скольку.... в школе слышал, а не учил. как сейчас понимаю ЗРЯ!!! за статейку лайк и спасибо. почитал. но! я такой что мне надо объяснять, либо взять готовое и разобраться самому. а вот писать что то для себя из таких статей я еще котенок, т.е. не подрос еще, маленький, не умею... :dont_know: :cry:
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение xkp »

не могу запустить таймер_счетчик_0_по_переполнению.
помогите.
Вложения
Текстовый документ.txt
(1.71 КБ) 308 скачиваний
Последний раз редактировалось xkp Вт фев 21, 2012 22:39:18, всего редактировалось 1 раз.
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение pyzhman »

Попробовал в AVRStudio 4.13 SP2. Действительно не запускается.
Docendo discimus
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение Engineer_Keen »

В 4.17 вообще не считает, следовательно и прерывание по переполнению никогда не сработает.
В протеусе пашет :)))
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение xkp »

да. действительно в протеусе работает. кстати MCUCR обязательно задавать?
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение xkp »

вопрос
помогите замяукать 8-разрдный АЦП на attiny13. большая просьба выложить текст (от .include до .exit) с коментариями замяукования уровня АЦП в регистр, например R20.

остается
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение Alexeyslav »

а предделитель для таймера настроил? он же в отключенном состоянии.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение pyzhman »

2Alexeyslav:

Код: Выделить всё

ldi tmp,0b00000100 ;0b00000100 ;0.25мкс*128=64мкс
out tccr0b,tmp
Docendo discimus
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение Engineer_Keen »

xkp писал(а):вопрос [...]остается

Инициализация:

Код: Выделить всё

OUTI   ADCSRA,(1<<ADEN)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS0) ;Включаем АЦП, его прерывание, настраиваем предделитель тактовой частоты
OUTI ADCSRB,0 ;источник автосрабатывания отключен
OUTI   ADMUX,(1<<ADLAR)|(1<<MUX1) ;выравнивание влево (ADCH - 8 старших бит), 1-й канал

OUTI - распространенный макрос, упрощает написание кода.

Код: Выделить всё

   .macro   OUTI
   LDI   R16,@1
   OUT   @0,R16
   .endm

Чтение АЦП:

Код: Выделить всё

ADC_INT: ;сюда попадаем по JMP\RJMP из таблицы векторов прерываний
IN R24,ADCH ;читаем АЦП в R24
RETI ;выход из прерывания

Как пользоваться:

Код: Выделить всё

;там где надо прочитать АЦП пишем:
SBI   ADCSRA,ADSC      ;выставить бит начала преобразования
;после чего, по прошествии нескольких тактов (зависит от предделителя) произойдет прерывание АЦП
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение xkp »

почти все понятно, если не учитывать ругань аврстудии

D:\proshivki\AStudio\acp_tnl3\acp_tnl3\acp_tnl3. asm(33): error: OUTI: Unknown instruction or macro
D:\proshivki\AStudio\acp_tnl3\acp_tnl3\acp_tnl3. asm(33): error: ADCSRA: Unknown instruction or macro
D:\proshivki\AStudio\acp_tnl3\acp_tnl3\acp_tnl3. asm (33): error: syntax error, unexpected ','
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение xkp »

беру свои слова обратно, ибо смысл не сразу понял. ЗАРАБОТАЛО!!! СПАСИБО!!!


будем думать дальше...

а именно: сравнивать значение АЦП с датчиком оборотов на эл.двигателе и регулировать его скорость
двигатель: 18в, 6000 оборотов
датчик: оптический, 2 импульса на один оборот
Вложения
Текстовый документ.txt
(1.83 КБ) 210 скачиваний
Последний раз редактировалось xkp Вт фев 21, 2012 22:41:00, всего редактировалось 1 раз.
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение xkp »

поправочка на прерывания, забыл сохранить на всякий случай

adc_inc:
push tmp
push tmp0
in tmp,sreg
push tmp

IN R24,ADCH

pop tmp
out sreg,tmp
pop tmp0
pop tmp
reti


PS. в протеусе работает
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3868
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение Engineer_Keen »

Макросы лучше до .cseg ставить, а можно их вообще в отдельный файл запихать, чтоб из разных программ можно было подключать, как библиотеки в Си.
Кстати, на будущее, лучше использовать этот вариант, он умеет работать с адресами устройств В/В больше 0x3F:

Код: Выделить всё

   .macro   OUTI
   LDI   R16,@1
   .if   @0>63
   STS   @0,R16   
   .else
   OUT   @0,R16
   .endif
   .endm
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение xkp »

продолжаем мучать.....
подскажите как сделать апаратный шим на тини13. какие битики нужно забить и чем регулировать ширину импульса.

вот написал программно (изменение ширины от ацп), но хотелось бы аппаратный шим, а то на этом и частота меняется((


полный текст программы во вложении
Вложения
acp_tn13.asm
(4.42 КБ) 343 скачивания
Последний раз редактировалось xkp Вт фев 21, 2012 22:42:01, всего редактировалось 1 раз.
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение Alexeyslav »

Все подробности работы таймера в режиме ШИМ прекрасно расписаны в даташите на контроллер. Даже с примерами и подробными диаграммами работы.
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение xkp »

если по внимательнее читать то выше я писал что не дружу с английским. а даташита на русском я не видел.
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение Alexeyslav »

Заниматься микроконтроллером не зная английского - это блуждать ночью в темном лесу.

Ну да ладно.

Для таймера выбираешь режим FAST PWM.

Биты регистра TCCR0A: COM0A1=1 COM0A0=0 или 1(инверсный выход)
WGM01=1 ,WGM00=1.

Биты регистра TCCR0B: WGM02=0,
CS02-CS01-CS00
0 0 0 - таймер выключен
0 0 1 - предделитель = 1
0 1 0 - предделитель = 8
0 1 1 - предделитель = 64
1 0 0 - предделитель = 256
1 0 1 - предделитель = 1024

В регистре OCR0A - значение момента при котором будет меняться состояние выхода OC0A.
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение xkp »

спасибо работает отлично!!!

только вот в моей программе уже 4 прерывания используется и после "таймер-счетчика 0 по переполнению" (tim0_ovf) вылетает на начало векторов на RJMP RESET
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение xkp »

:shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock:
ОПАЧКИ!!!

TIM0_OVF заработал в аврстудии!!! как? он же раньше не работал!!!
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

Re: програмирование AVR на АСЕМБЛЕРЕ для чайников

Сообщение xkp »

интересная вещичка...
на вывод PB0 и GND вешаем светодиод, на вывод PB4, CND, Vcc переменный резистор. светодиод плавно загорается и плавно гаснет, скорость регулируется переменным резистором.

я собрал 3 таких а на выход через транзисторы подключил кусочек RGB ленты, забавно.
Вложения
Текстовый документ.txt
(2.87 КБ) 224 скачивания
Последний раз редактировалось xkp Вт фев 21, 2012 22:43:37, всего редактировалось 1 раз.
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Закрыто

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