Доброго времени суток Небольшая загвоздка с таймером1 в меге8 Значит, установил режим СТС, разрешил прерывания таймера по совпадению с OCR1A, загрузил числа в OCR1A. По прерыванию инвертируем состояние портаB. В avrstudio4 работает нормально, в протеусе и железе - почему-то частота инвертирования порта не зависит от OCR1AH, т.е. все происходит только по младшему регистру.
...
1. Читаем правила обращения к 16 разрядным регистрам таймер-счетчиков. 2. загрузка начального значения OCR1A должна производится ДО установки режима работы таймера
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
;таймер ser temp ; устанавливаем числа, с которыми будет сравниваться таймер out OCR1AH, temp out OCR1AL, temp ; out OCR1AH, temp clr temp out TCCR1A, temp ; ОС1А отключен
ldi temp, (1<<OCIE1A) out TIMSK, temp ; разрешаем прерывания по совпадению out TIFR, temp ; Cброс флага OCF1A ldi temp, 0b00001001 out TCCR1B, temp ; режим СТС :1 sei
Старт режима будет с предшествующим произвольным значением содержимого регистров.
Я к тому, что при больших делителях это некритично; таймер не успеет единичку отсчитать, а у нас уже записано верное значение OCR1A. akl, да, точно, я не подумал о сбросе флага, благодарю
...флаг в TIFR не устанавливается, поэтому и сбрасывать его не надо.
Да, флаг не устанавливается, если нет предистории. Если она есть и связана с другими режимами работы Т1, сбрасывать обязательно. Например, генерация 1 секунды без сброса флага
.cseg .org 0 rjmp Reset .org 6 rjmp T0_COMPA ;Timer/Counter0 Compare Match A
rjmp Start
Reset: ldi Temp,0b11111111 out DDRB,Temp
ldi temp, low(RAMEND) ; инициализацыя стека out SPL,temp
ldi Temp,0 out TCNT0,Temp ;обнуляем счетный регистр
ldi Temp,124 ;регистр сравнения out OCR0A,Temp
ldi Temp,0b00000100 ;разрешить прерывание по совпадению таймера/счетчика 0 out TIMSK0,Temp
ldi Temp,0b00000100 ;Флаг наступления прерывания по совпадению out TIFR0,Temp
ldi Temp,0b00000101 ;тактовый сигнал = CK/1024 out TCCR0B,Temp
ldi Temp,0b00000010 ; out TCCR0A,Temp
ldi Temp1,0 clr Second clr Minutes
sei
rjmp Start
T0_COMPA: inc Second cpi Second,60 brne Exit_compa ldi Second,0 inc Minutes Exit_compa: reti ;============== Start: out PortB,Minutes
rjmp Start
По идее на 5й ноге должен изменятся сигнал каждую минуту (60 сек), но в реальности это происходит каждые 69 сек. Proteus 8,5 моделирует красиво, прошитый контроллер считает криво.
программа прошивки: progisp 1,7 програматор: USBasp
_________________ Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.
Заголовок сообщения: Re: Ассемблер (ASM) для AVR в вопросах и ответах
Добавлено: Сб мар 04, 2017 11:39:02
Встал на лапы
Карма: 3
Рейтинг сообщений: 7
Зарегистрирован: Чт сен 10, 2015 06:59:03 Сообщений: 106 Откуда: Гродно, BY
Рейтинг сообщения:0
Я спросил какое ДЕЙСТВИТЕЛЬНО значение частоты встроенного генератора 128 кГц. Можно открыть описание: Figure 19-52. 128 kHz Watchdog Oscillator Frequency vs. VCC; Figure 19-53. 128 kHz Watchdog Oscillator Frequency vs. Temperature. Изучай матчасть.
Просто на 4,8 и 9,6 МГц я не сразу нашел целых делителей так что бы считать одним регистром, так как 16ти битного регистра в 13 нету, а морочится с ними программным путем - лень. И судя по графикам, внутренний генератор на любых частотах в ней кривоватый, и нужно пересчитывать с поправками.
_________________ Если я чего-то не знаю, это не говорит о моем невежестве, а только о том, что раньше этот вопрос лежал вне сферы моих интересов.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения