Страница 1 из 1
Вольтметр на Atmega16
Добавлено: Сб авг 24, 2013 13:08:54
tux
Пытаюсь вот все освоить программирование AVR. Решил сделать вольтметр. Написал программу. Часть честно спер, часть написал сам. Запускаю в протеусе - ни фига на дисплей ни выводит. Может кто укажет на ошибку? Код на ассеблере.
Re: Вольтметр на Atmega16
Добавлено: Сб авг 24, 2013 15:41:51
Vov123
Протеус позволяет в ряде случаев сымитировать работу проектируемого девайса,а также разработать для него печатную плату.Если нужно только проверить работу микроконтроллера,лучше не использовать ключевые транзисторы и гасящие сопротивления,а подключать непосредственно к потребителю - не сгорит.
Сначала выведи на дисплейчик какое-нибудь статическое значение,например 1234,а потом уже можно будет его заменить на значение переменной ADC.
И последнее.Я заметил здесь очень мало любителей ковыряться в чужом асме.Будьте проще,пишите на С.
Re: Вольтметр на Atmega16
Добавлено: Вс авг 25, 2013 00:58:02
tux
Да код для вывода на дисплей 100% рабочий. Я уже пытался сделать часы просто на таймере, но заглох с кнопками. Тоже долго бился с ними и решил отложить это и попробовать с АЦП. И с ним заглох тоже. А насчет си - хотелось бы сначала все таки разобраться в ассемблере, чтоб понимать как все битики ходят.
Я уже на проблеме с часами понял, что тут нет любителей ковыряться в асемблере. Написал на всякий случай - вдруг таковой объявится

. Хочется все таки написать свой рабочий код..
Re: Вольтметр на Atmega16
Добавлено: Вс авг 25, 2013 01:41:21
Vov123
Re: Вольтметр на Atmega16
Добавлено: Вс авг 25, 2013 04:49:12
tux
Хотел свой код написать просто, который я сам понимаю как работает. Но чую придется сначала по Ревичу разобраться. Может после него осознаю свою ошибку..
Re: Вольтметр на Atmega16
Добавлено: Вс авг 25, 2013 05:19:30
Vov123
Ну вот код на С(для CVAVR),хочешь переведи его в асм
Объявляем переменную для АЦП
Настраиваем АЦП
Код: Выделить всё
ADCSRA=0b10000111; //настройкаа АЦП.Включен АЦП,прескалер максимальный
ADMUX=0b01000011; //опорное напряжение от питания,выравнивание в право(10бит),ручное преобразование,вход на ADC3
В теле программы снимаем показания АЦП
Код: Выделить всё
ADCSRA.6=1; //запускаем преобазование
while(ADCSRA.6==1){}; //ждём пока идёт преобразование(пустой цикл)
a=ADCW; //результат преобразования сохраняется в регистре ADCW
Всего делов.