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

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

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

Сообщение xkp »

щас ведутся испытания программы. вывод на LCD значение счетчика. на входе генератор (меандр). при частотах ниже 15 кГц, если быть точным ниже 14878 Гц, работает не корректно. что в протеусе, что в реале. значение на индикаторе плавает. МК тактируется временно от внутреннего RC на 8 мГц.
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

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

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

Сообщение xkp »

так я же обнуляю счетчик при переднем фронте, а по заднему беру значение.
логика примерно:

прерывания:
если передний фронт обнуляем счетчик TCNT1L TCNT1H
иначе берем значение из ICR1L ICR1H в r24 r25
выход из прерываний.

в основном цикле программы примерно два раза в секунду вывожу на LCD значение r24 r25 перекодированные в десятеричный формат.

PS. дополнение к предыдущему сообщению. значение плавает от 0 до 65000. плывет примерно по 2000-3000 (зависит от частоты) в порядке возрастания от 0 до 65000.
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

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

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

Сообщение xkp »

каких именно флагов? в проге меняется только флаг отвечающий за то по какому фронту вызывается прерывание
СпойлерTIM1_CAPT:         ;прерывания
***
   in tmp,tccr1b      ;берем для установки бита
   ori tmp,(1<<ices1)   ;устанавливаем бит ICES1
   out tccr1b,tmp      ;устанавливаем
   rjmp out_tim      ;на выход
onn:
***
   in tmp,tccr1b      ;очищаем бит ICES1
   andi tmp,$ff-(1<<ices1)
   out tccr1b,tmp
out_tim:
   reti            ;выход с прерываний

там же очистка счетчика
СпойлерTIM1_CAPT: ;прерывания
***
onn:
clr tmp ;очищаем счетчик
out tcnt1l,tmp ;младший
out tcnt1h,tmp ;старший
***
out_tim:
reti ;выход с прерываний
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

Регистр флагов требования прерываний. Контроллер ведь не знает, что ему на вход шлепает и устанавливает флаги независимо от программы.
Спойлер
TIFR_MEGA32.GIF
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

akl писал(а):Не нашел в проге очистку флагов.

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

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

Сообщение xkp »

а вот тут начинается интетресное...
в инициализации поставил
Спойлерcap_init: ;инициализация прерываний
ldi tmp,$41 ;ICES1=1 CS1=1
out tccr1b,tmp
ldi tmp,$20 ;TICIE=1
out timsk,tmp
ldi tmp,$10 ;OCF1A=1
out tifr,tmp

ret

странно но этой командой он обнуляет (!) этот бит (OCF1A). устанавливается же этот бит сам когда устанавливаем timsk.
но что более странно - вроде заработало.

ЗЫ. нет. все таки не работает. если в прерываниях стоит
СпойлерTIM1_CAPT: ;прерывания
in tmp,tccr1b ;берем для сравнения
sbrc tmp,ices1 ;смотрим бит ICES1
rjmp onn ;если 1 то на метку
in tmp,icr1l ;если 0 то запоминаем значения
sts timel,tmp ;из памяти потом выводим на индикацию
in tmp,icr1h
sts timeh,tmp ;из памяти потом выводим на индикацию
***

то значения плавают от 0 до 65000
если поменять младшие со старшими
СпойлерTIM1_CAPT: ;прерывания
in tmp,tccr1b ;берем для сравнения
sbrc tmp,ices1 ;смотрим бит ICES1
rjmp onn ;если 1 то на метку
in tmp,icr1h
sts timeh,tmp ;из памяти потом выводим на индикацию

in tmp,icr1l ;если 0 то запоминаем значения
sts timel,tmp ;из памяти потом выводим на индикацию
***

то выводит только значения до 255, потом начинает с 0.
Последний раз редактировалось xkp Чт окт 18, 2012 11:44:22, всего редактировалось 2 раза.
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

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

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

Сообщение akl »

При чем здесь чистка флага сравнения OCF1A? Нужно чистить ICF1.

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

in tmp,icr1h
sts timeh,tmp ;из памяти потом выводим на индикацию

in tmp,icr1l ;если 0 то запоминаем значения
Нормальное чтение 16-разрядных регистров периферии отменили?
Последний раз редактировалось akl Чт окт 18, 2012 11:49:55, всего редактировалось 1 раз.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

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

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

Сообщение xkp »

не знаю при чем тут чистка OCF1A, но работает программа иначе с очисткой, нежели без очистки. флаг ICF1 устанавливается сам при наступлении прерывания и очищается сам при прыжке на подпрограмму прерываний.
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

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

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

Сообщение xkp »

весь проект в АВР студии + протеус. на вход можно повесить генератор CLOCK называется в протеусе
test.rar
(64.08 КБ) 138 скачиваний

так же картинки тестовой платы
Спойлер
общая.JPG
(81.03 КБ) 156 скачиваний
эта нас не интересует.JPG
(62.44 КБ) 122 скачивания
значение счетчика.JPG
(57.3 КБ) 119 скачиваний
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

Сделал бы, примерно, так
Спойлер

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

   CLR   R0
   LDI   R20,$40      ; подготовка к CAPT
   OUT   TCCR1B,R20   ;
   LDI   R20,$20      ;
   OUT   TIMSK,R20   ;
   OUT   TCCR1A,R0
   OUT   TCNT1H,R0
   OUT   TCNT1L,R0
;   LDI   R21,$41
   LDI   R22,$01
   SER   R20
   OUT   TIFR,R20

   CLT
   SEI
main:
   BRTC   MAIN
   CLI
   CLT
;   .......
;   .......
;   .......
;   .......
;   .......
;   .......
;   .......
;   .......
;   .......
   RJMP   RESET
TIM1_CAPT:
   TST   R22      ; начало импульса
   BREQ   CAPT_END   ; уже конец
   OUT   TCCR1B,R22   ; да, начало. Старт таймера Т1 с разрешенным захватом по концу импульса
   CLR   R22      ; сброс признака начала импульса
   RETI
CAPT_END:
   OUT   TCCR1B,R0   ;
   IN   R25,ICR1L
   IN   R24,ICR1H
   SET
   RETI
Аватара пользователя
xkp
Опытный кот
Сообщения: 781
Зарегистрирован: Ср ноя 18, 2009 12:50:31
Откуда: ковров
Контактная информация:

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

Сообщение xkp »

r22 в прерываниях сбрасывается и больше ни где не устанавливается
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

akl
у тебя после первого окончания импульса таймер остановится и все...
да и счетчик в таком случае сбрасывать надо.

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

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

Сообщение akl »

Как я понял xkp меряет длительность одного импульса, делает преобразования, выводит куда-то и ВОЗВРАЩАЕТСЯ обратно. Тоже самое делает мой кусок кода, правда, он возвращается на RESET (так, на всякий случай). По поводу запущенного таймера. Сам активно пользуюсь этим. Например, в CL_LED2313 все действия разворачиваются на фоне непрерывно работающего таймера Т1, который и измеряет и динамическую индикацию осуществляет.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

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

Сообщение GP1 »

akl писал(а):Как я понял ...

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

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

Сообщение xkp »

GP1, ваш метод, как я понял, вычитать из старого значения счетчика - новое. завтра попробую. или вечером. сейчас уже голова болит от испытаний.
akl, выход после всего на ресет не есть хорошо. так как в программе после ресета будут стоять кучи инициализаций, чтение eeprom, все вместе по времени займет около 1-2 секунд. нужно замерять постоянно с N-переодичностью, думаю около 30 раз в секунду.
R5VCH
Хотелки:
СпойлерАналоговый осциллограф С1-112, С1-118, другие
не/рабочие модули от комплекса ОДА-102
всё что касается AVR, arduino, raspberry
всё что касается КВ-УКВ-радиосвязи, mashtastic
Ответить

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