- Вложения
-
- ADC+LCD.rar
- файл протеуса, асм и hex
- (16.1 КБ) 353 скачивания
Проблемы с эмуляцией ADC Mega8 в Proteus
Уважаемые форумчане, сталкнулся с такой проблемкой: связка ADC и LCD на меге8. В AVRStudio все вроде работает, а при запуске в Proteus такое впечатление что АЦП не запускается. Посмотрите, может в коде, может в схеме накосячил. Спасибо.
- Реклама
В этом куске кода
пропущен RET после последней строки rcall...
У меня заработало.
По входу я так понял стоит делитель на 10?
Если да, то вот что еще изменить нужно
Код: Выделить всё
napr: rcall BINtoBCD ;вывод измеренного значения
ldi lcdpol, 0x80 ;вывод со второй строки
....
ldi Temp,0x56 ;вывести "V"
rcall LCDOut ;перейти на вывод в порт
;Voltage:
;.db 0x56,0x4F,0x4C,0x54,0x41,0x47,0x45,0x2C,0x20,0x56,0x00 ;VOLTAGE, V
У меня заработало.
По входу я так понял стоит делитель на 10?
Если да, то вот что еще изменить нужно
Код: Выделить всё
ldi temp, 0b11100000
out ADMUX, tempДа, по входу делитель на 10, с этим разобрался, подцепил внутренний ИОН, поставил RET, АЦП измерять начал, но опять затык, такое впечатление, что после первого преобразования второе и последующие не запускаются. Пробовал и в режиме непрерывного преобразования, та же песня. 
В AVRStudio все как будто работаетRubin писал(а):Да, по входу делитель на 10, с этим разобрался, подцепил внутренний ИОН, поставил RET, АЦП измерять начал, но опять затык, такое впечатление, что после первого преобразования второе и последующие не запускаются. Пробовал и в режиме непрерывного преобразования, та же песня.
Честно говоря, сам раньше когда писал на ASM и в Proteus симулировал теже грабли выходили (тоже была ATMega8), как будто проходило только одно измерение и на индикаторе ничего не менялось...Кстати на одном из форумов я даже задавал по этому поводу вопрос, но ничего не выяснил. После этого перешел уже на Cи и Proteus начал симулировать гладко.
Собрал реальное железо и Си код нормально работал, а вот ASM код забыл проверить.
Думаю если ты соберешь реальное железо и проверишь, то скорее всего что-то выяснится. По крайней мере в реальности виднее будет, чем эти всяческие глюко-симуляторы.
- Реклама
С измерением по одному каналу вроде разобрался, в Протеусе задышало. А вот переключение каналов не происходит. Опять же, в Студии работает.
Был установлен низкий коэффициент деления предделителя.
Кстати, а почему отказывается работать АЦП при работающем таймере. Прерывание ADC_CC не вызывается. Может необходимо перед измерением отстанавливать таймер?
Тогда вопрос - как вместе с измерением организовать Fast PWM?
Тогда вопрос - как вместе с измерением организовать Fast PWM?
Все намного проще - Proteus криво симулирует прерывания (где-то на форуме www.kazus.ru это обсуждалось уже)Rubin писал(а):Кстати, а почему отказывается работать АЦП при работающем таймере. Прерывание ADC_CC не вызывается. Может необходимо перед измерением отстанавливать таймер?
Тогда вопрос - как вместе с измерением организовать Fast PWM?
to mr.Kirill
Спасибо, буду иметь ввиду.
Спасибо, буду иметь ввиду.
Да, сайт твой очень полезен, в свое время много полезной инфы там почерпнул. Респект и сливок тебе в блюдце! 
И все же согласен с mr.Kirill, как то кривовато Proteus работает с мегой. При переключении канала АЦП вываливается ошибка (если ставить преобразование на частотах до 200 кГц.
И ксати, в AVRStudio так и не выполняется прерывание ADC_CC когда работает ШИМ. Где могут быть грабли?
И все же согласен с mr.Kirill, как то кривовато Proteus работает с мегой. При переключении канала АЦП вываливается ошибка (если ставить преобразование на частотах до 200 кГц.
И ксати, в AVRStudio так и не выполняется прерывание ADC_CC когда работает ШИМ. Где могут быть грабли?
Спасибо... Только жаль что времени не хватает... Сейчас есть много инфы по АРМ9... но время-время...Rubin писал(а):Да, сайт твой очень полезен, в свое время много полезной инфы там почерпнул. Респект и сливок тебе в блюдце!
Копать в сторону сервис паков от АВРСтудии - хотя в последней версии так и не устранили... Совет один: отключай ШИМ - проверяй АЦП, затем наоборот ))Rubin писал(а): И все же согласен с mr.Kirill, как то кривовато Proteus работает с мегой. При переключении канала АЦП вываливается ошибка (если ставить преобразование на частотах до 200 кГц.
И ксати, в AVRStudio так и не выполняется прерывание ADC_CC когда работает ШИМ. Где могут быть грабли?
Today fine night...


