Проблемы с эмуляцией ADC Mega8 в Proteus

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пн май 14, 2007 19:49:16
Откуда: Краснодар

Сообщение Rubin »

Уважаемые форумчане, сталкнулся с такой проблемкой: связка ADC и LCD на меге8. В AVRStudio все вроде работает, а при запуске в Proteus такое впечатление что АЦП не запускается. Посмотрите, может в коде, может в схеме накосячил. Спасибо.
Вложения
ADC+LCD.rar
файл протеуса, асм и hex
(16.1 КБ) 353 скачивания
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

В этом куске кода

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

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 
пропущен RET после последней строки rcall...
У меня заработало.

По входу я так понял стоит делитель на 10?
Если да, то вот что еще изменить нужно

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

	ldi temp, 0b11100000		
	out ADMUX, temp
Реклама
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пн май 14, 2007 19:49:16
Откуда: Краснодар

Сообщение Rubin »

Да, по входу делитель на 10, с этим разобрался, подцепил внутренний ИОН, поставил RET, АЦП измерять начал, но опять затык, такое впечатление, что после первого преобразования второе и последующие не запускаются. Пробовал и в режиме непрерывного преобразования, та же песня. :(
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 174
Зарегистрирован: Вт июл 31, 2007 20:32:30
Откуда: Киев, Украина

Сообщение Томатный »

что такое делитель на 10 ?
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Мучитель микросхем
Аватара пользователя
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

Rubin писал(а):Да, по входу делитель на 10, с этим разобрался, подцепил внутренний ИОН, поставил RET, АЦП измерять начал, но опять затык, такое впечатление, что после первого преобразования второе и последующие не запускаются. Пробовал и в режиме непрерывного преобразования, та же песня. :(
В AVRStudio все как будто работает :)
Честно говоря, сам раньше когда писал на ASM и в Proteus симулировал теже грабли выходили (тоже была ATMega8), как будто проходило только одно измерение и на индикаторе ничего не менялось...Кстати на одном из форумов я даже задавал по этому поводу вопрос, но ничего не выяснил. После этого перешел уже на Cи и Proteus начал симулировать гладко.
Собрал реальное железо и Си код нормально работал, а вот ASM код забыл проверить.
Думаю если ты соберешь реальное железо и проверишь, то скорее всего что-то выяснится. По крайней мере в реальности виднее будет, чем эти всяческие глюко-симуляторы.
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

Томатный писал(а):что такое делитель на 10 ?
На входе ADC микроконтроллера 2 резистора, которые образуют делитель напряжения на 10.
Т.е. входное напряжение изменяется от 0 до 25В, а ADC уже измеряет от 0 до 2,5В, а на экран выводит результат с поправкой на этот делитель.
Реклама
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пн май 14, 2007 19:49:16
Откуда: Краснодар

Сообщение Rubin »

С измерением по одному каналу вроде разобрался, в Протеусе задышало. А вот переключение каналов не происходит. Опять же, в Студии работает.
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

В чем был глюк измерения по одному каналу?
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пн май 14, 2007 19:49:16
Откуда: Краснодар

Сообщение Rubin »

Был установлен низкий коэффициент деления предделителя.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пн май 14, 2007 19:49:16
Откуда: Краснодар

Сообщение Rubin »

Кстати, а почему отказывается работать АЦП при работающем таймере. Прерывание ADC_CC не вызывается. Может необходимо перед измерением отстанавливать таймер?
Тогда вопрос - как вместе с измерением организовать Fast PWM?
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 438
Зарегистрирован: Вт сен 25, 2007 19:40:26
Откуда: Челябинск

Сообщение mr.Kirill »

Rubin писал(а):Кстати, а почему отказывается работать АЦП при работающем таймере. Прерывание ADC_CC не вызывается. Может необходимо перед измерением отстанавливать таймер?
Тогда вопрос - как вместе с измерением организовать Fast PWM?
Все намного проще - Proteus криво симулирует прерывания (где-то на форуме www.kazus.ru это обсуждалось уже)
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пн май 14, 2007 19:49:16
Откуда: Краснодар

Сообщение Rubin »

to mr.Kirill
Спасибо, буду иметь ввиду.
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 534
Зарегистрирован: Пн янв 16, 2006 08:00:17
Откуда: Иркутск

Сообщение Mamonth »

Под кнопкой WWW поищи...

Я писал программы и на Си и на АСМ - проблем с протеусом не было...
Today fine night...
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пн май 14, 2007 19:49:16
Откуда: Краснодар

Сообщение Rubin »

Да, сайт твой очень полезен, в свое время много полезной инфы там почерпнул. Респект и сливок тебе в блюдце! :)
И все же согласен с mr.Kirill, как то кривовато Proteus работает с мегой. При переключении канала АЦП вываливается ошибка (если ставить преобразование на частотах до 200 кГц.
И ксати, в AVRStudio так и не выполняется прерывание ADC_CC когда работает ШИМ. Где могут быть грабли?
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 534
Зарегистрирован: Пн янв 16, 2006 08:00:17
Откуда: Иркутск

Сообщение Mamonth »

Rubin писал(а):Да, сайт твой очень полезен, в свое время много полезной инфы там почерпнул. Респект и сливок тебе в блюдце! :)
Спасибо... Только жаль что времени не хватает... Сейчас есть много инфы по АРМ9... но время-время... :(
Rubin писал(а): И все же согласен с mr.Kirill, как то кривовато Proteus работает с мегой. При переключении канала АЦП вываливается ошибка (если ставить преобразование на частотах до 200 кГц.
И ксати, в AVRStudio так и не выполняется прерывание ADC_CC когда работает ШИМ. Где могут быть грабли?
Копать в сторону сервис паков от АВРСтудии - хотя в последней версии так и не устранили... Совет один: отключай ШИМ - проверяй АЦП, затем наоборот ))
Today fine night...
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»