ATmega8 и АЦП

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Открыл глаза
Аватара пользователя
Сообщения: 68
Зарегистрирован: Чт дек 03, 2009 19:55:03

Сообщение DIMA040891 »

Помогите пожалуйста найти ошибку. Хотел в ATmega8 задействовать АЦП. АЦП должен измерять напряжение раз в 0,5 С на вывоже ADC0 (PC0), затем прочитав это значение из ADCH (выравнивание влево) вывести значение в остальные вывода порта C. PC1-PC5 подключены светодиоды. Почемуто непроисходит ничего :(, светодиоды негорят :( Напряжение на ADC0 беру с переменного резистора, который соиденён с источником питания МК. Помогите разобраться кто может.

.

.

.

ldi Temp,low(RamEnd) ;установка указателя стека
out SPL,Temp
ldi Temp,high(RamEnd)
out SPH,Temp

ldi Temp,0b11111110
out DDRC,Temp

ldi Temp,0b00101000
out PORTC,Temp

ldi Temp,0b11100000
out ADMUX,Temp; выбор канала, а так же выравнивание влево(бит 5),+(биты 6 и 7)
; включение опорного напряжения внутреннего источника

ldi Temp,0b10000101
out ADCSRA,Temp; старший бит вкл АЦП, младшие - предделитель

reset: sbi ADCSRA,ADSC ; уст бит "старт преобразования"

WaitADC:

sbis ADCSRA,ADIF
rjmp WaitADC
; тут отсчет готов...
in Temp1,ADCH ; ст байт

out PORTC,Temp1

ldi Temp3,0x06
ldi Temp2,0x1A
ldi Temp1,0x80


Delay: subi Temp1,1;ждём 0,5С
sbci Temp2,0
sbci Temp3,0
brcc Delay

rjmp reset
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

А что за дериктива такая SBCI?
Наверно имеется в виду SBIC? Так оно тоже не пройдёт.
Вот SBRC...
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 68
Зарегистрирован: Чт дек 03, 2009 19:55:03

Сообщение DIMA040891 »

Де вроде всё правильно. SBCI-Вычесть непосредственное значение с переносом, а SBIC Пропустить если бит в регистре I/O очищен.

Де и к тому же в предидущих своих программах я использовал для задержки комнду sbci.
Мучитель микросхем
Аватара пользователя
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

:roll: Всё, пошёл спать...
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Реклама
Эиком - электронные компоненты и радиодетали
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

если ничего не путаю, то читать надо оба байта ADCH:ADCL, иначе там какая-то бяка получается
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

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

Сообщение GP1 »

что нарыл:
1. в М8 регистр обзывается не ADCSRA - а ADCSR
2. ты забыл разрешить прерывание от ADC, поставь ADIE в 1 и все заработает :))), ну в соответствии с установками портов.
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Открыл глаза
Аватара пользователя
Сообщения: 68
Зарегистрирован: Чт дек 03, 2009 19:55:03

Сообщение DIMA040891 »

1. В даташите нет токого регистра ADCSR, есть только ADCSRA, хотя в одной из книг написано что у mega8 этот регистр называется просто ADCSR.
Кстати непонятно если в программе пменять название с ADCRA на ADCSR, и нажать кмпиляция то компилятор на изменения названия нериагирует, ну всмысле всё нормально компилирутся! Надо будет и так попробывать.
2. А это разве необхадимо))?? У меня же вроде как АЦП не от прерываний работает :)))?? Но всё равно обязательно попробую оба варианта как домой приду.
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

Проект для VMLab 3.15 все работает

ЗЫ если будешь включать IE поставь заглушку по адресу ADCCaddr=$00e
Вложения
dima040891.rar
(8.23 КБ) 162 скачивания
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Потрогал лапой паяльник
Сообщения: 344
Зарегистрирован: Ср май 13, 2009 20:36:44

Сообщение Scuby_Du »

о как все сложно! неужели нужно так досконально разбираться с асмом
в кодевижоне генеришь новый проект с использованием ацп и пишешь

PORTB=readADC();

все :))) :))) :)))
Открыл глаза
Аватара пользователя
Сообщения: 68
Зарегистрирован: Чт дек 03, 2009 19:55:03

Сообщение DIMA040891 »

Не неинтерсно!!!! :))) :))) :)))
Потрогал лапой паяльник
Сообщения: 344
Зарегистрирован: Ср май 13, 2009 20:36:44

Сообщение Scuby_Du »

DIMA040891 писал(а):Не неинтерсно!!!! :))) :))) :)))
зато за 10 секунд :))) :))) :)))
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

Scuby_Du писал(а):о как все сложно! неужели нужно так досконально разбираться с асмом
в кодевижоне генеришь новый проект с использованием ацп и пишешь

PORTB=readADC();

все :))) :))) :)))
И главное не надо понимать как это работает. :tea:
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Прорезались зубы
Сообщения: 206
Зарегистрирован: Сб фев 27, 2010 11:58:50
Откуда: Горец: Уральские горы

Сообщение Smirnov »

Даже в официальных даташитах немало примеров на си, что в асм лезут, непонятно :shock:
Мучитель микросхем
Аватара пользователя
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

Ну, ща опять полемика начнётся. Пишите Вы на чём хотите, и других не трогайте. Я вот СИ вообще НЕНАВИЖУ, а по чему, уже не раз писал на форуме.
Научить нельзя, можно научиться. Пифагор.
Вставь недостающие буквы в слово *у*ня. Если у тебя получилось слово кухня, значит ты интеллигентный человек.
Открыл глаза
Аватара пользователя
Сообщения: 68
Зарегистрирован: Чт дек 03, 2009 19:55:03

Сообщение DIMA040891 »

А что будет если к выводу задействованному под АЦП подтянуть внутренний подтягивающий резастор?? Просто будет показывать что напряжение на этом выводе 5В?? или что??

in Temp1,ADCH ; ст байт
out PORTC,Temp1 - ведь этой командой в зависимости от напряжегия на ножке ADC0, может и внутренний резистор подтянуться, к ней же, так ведь?? Может из-за этого неработает????

Установка бита ADIE непомогла :evil: :evil: :evil: :evil:
GP1
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград

Сообщение GP1 »

тогда выложи весь код, у меня работает.
подключать Rp не пробовал, вероятно при отсутсвии сигнала там будет Vcc
Чем дальше, тем больше становлюсь занудой...
Изображение
Контактная информация:
Встал на лапы
Сообщения: 123
Зарегистрирован: Вс янв 31, 2010 21:31:24
Откуда: Краснодар

Сообщение avruser »

Не могли бы схему выложить?
Открыл глаза
Аватара пользователя
Сообщения: 68
Зарегистрирован: Чт дек 03, 2009 19:55:03

Сообщение DIMA040891 »

Плучилось грубовато, но вроде всё понятно.
Вложения
Схема.jpg
(35.62 КБ) 496 скачиваний
Встал на лапы
Сообщения: 123
Зарегистрирован: Вс янв 31, 2010 21:31:24
Откуда: Краснодар

Сообщение avruser »

Схема вроде норм. Попробуй вывести просто число и посмотри - выводится или нет.
Закрыто

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