Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
27.09.2009, 12:34
|
|
Временная регистрация
Регистрация: 30.06.2005
Адрес: Санкт-Петербург
Сообщений: 73
Сказал спасибо: 2
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
АЦП в ATmega48
Помогите разобраться с АЦП
;************************************************* ********
; Инициализация Т1
;************************************************* ********
ldi tmp16,(1‹‹OCIE1A)|(1‹‹OCIE1B)
sts TIMSK1,tmp16
ldi tmp16,(1‹‹WGM10)|(1‹‹WGM11)|(0‹‹COM1A0)|(1‹‹COM1A1 )
sts TCCR1A,tmp16
ldi tmp16,(0‹‹CS00)|(1‹‹CS11)|(0‹‹CS12)|(1‹‹WGM12)|(0‹ ‹WGM13)
sts TCCR1B,tmp16
clr tmp16
sts TCNT1L,tmp16
sts TCNT1H,tmp16
ldi tmp26,(1)
sts OCR1AL,tmp26
ldi tmp27,(255)
sts OCR1AH,tmp27
;************************************************* ********
; Инициализация АЦП
;************************************************* ********
ldi tmp16,(0‹‹MUX0)|(0‹‹MUX1)|(0‹‹MUX2)|(0‹‹MUX3)|(0‹‹ ADLAR)|(1‹‹REFS0)|(1‹‹REFS1)
sts ADMUX,tmp16
ldi tmp16,(1‹‹ADPS0)|(1‹‹ADPS1)|(0‹‹ADPS2)|(1‹‹ADATE)| (0‹‹ADSC)|(1‹‹ADEN)
sts ADCSRA,tmp16
ldi tmp16,(0‹‹ADTS0)|(1‹‹ADTS1)|(1‹‹ADTS2)
sts ADCSRB,tmp16
sei
;************************************************* ********
;
;************************************************* ********
Run:
rjmp Run
;************************************************* ********
;
;************************************************* ********
TIM1_COMPA:
ldi tmp16,(1‹‹ADPS0)|(1‹‹ADPS1)|(0‹‹ADPS2)|(1‹‹ADATE)| (1‹‹ADSC)|(1‹‹ADEN)
sts ADCSRA,tmp16
reti
;************************************************* ********
;
;************************************************* ********
ADC_:
lds tmp26,ADCL
lds tmp27,ADCH
sts OCR1AL,tmp26
sts OCR1AH,tmp27
reti
Программа должна по прерыванию от таймера считывать данные из регистров АЦП и переписывать в регистры сравнения таймера T1.
Но ничего похожего не происходтит.
|
|
|
|
27.09.2009, 17:12
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Re: АЦП в ATmega48
Настройте мастером CVAVR и будет работать правильно.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
27.09.2009, 18:50
|
|
Временная регистрация
Регистрация: 30.06.2005
Адрес: Санкт-Петербург
Сообщений: 73
Сказал спасибо: 2
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: АЦП в ATmega48
Спасибо за совет, но я с CVAVR не работал.
|
|
|
|
27.09.2009, 19:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: АЦП в ATmega48
Сообщение от Gonchar
|
clr tmp16
sts TCNT1L,tmp16
sts TCNT1H,tmp16
|
Ошибка. Запись производится вначале в старший байт слова.
Сообщение от Gonchar
|
ldi tmp26,(1)
sts OCR1AL,tmp26
ldi tmp27,(255)
sts OCR1AH,tmp27
|
То же самое.
Сообщение от avr123-nm-ru
|
lds tmp27,ADCH
sts OCR1AL,tmp26
sts OCR1AH,tmp27
|
И опять...
Исправляйте.
Похоже форум слегка глючит - третья цитата от того же автора, а не от avr123-nm-ru.
|
|
|
|
27.09.2009, 20:32
|
|
Временная регистрация
Регистрация: 30.06.2005
Адрес: Санкт-Петербург
Сообщений: 73
Сказал спасибо: 2
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: АЦП в ATmega48
Все исправленно, а не работает
|
|
|
|
27.09.2009, 21:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: АЦП в ATmega48
Вы бы весь исходник привели. Вектора например - вдруг там пусто. Гадать на кофейной гуще неинтересно.
|
|
|
|
27.09.2009, 22:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: АЦП в ATmega48
И напишите что получить хотите. Лазить по даташиту и смотреть в какой режим что настроено тоже неинтересно.
|
|
|
|
27.09.2009, 23:37
|
|
Временная регистрация
Регистрация: 30.06.2005
Адрес: Санкт-Петербург
Сообщений: 73
Сказал спасибо: 2
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: АЦП в ATmega48
.cseg
.org 0x000 rjmp RESET ; Reset Handler
.org 0x00B rjmp TIM1_COMPA ; Timer1 Compare A Handler
.org 0x015 rjmp ADC_ ; ADC Conversion Complete Handler
;************************************************* ********
; Инициализация микроконтроллера AVR
;************************************************* ********
Reset:
ldi tmp16,high(RAMEND)
out sph,tmp16
ldi tmp16,low(RAMEND)
out spl,tmp16
;************************************************* ********
; Инициализация портов
;************************************************* ********
ldi tmp16,(1‹‹PB1)
out DDRB,tmp16
ldi tmp16,(0‹‹PC0)
out DDRC,tmp16
Осталное было выше...
Программа должна по прерыванию от таймера считывать данные из регистров АЦП и переписывать в регистры сравнения таймера T1.
Регулировка ШИМ
|
|
|
|
27.09.2009, 23:52
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: АЦП в ATmega48
Сообщение от Gonchar
|
Программа должна по прерыванию от таймера считывать данные из регистров АЦП и переписывать в регистры сравнения таймера T1.
|
Ну-ну. Задача ясна. А теперь смотрим реализацию:
Сообщение от Gonchar
|
TIM1_COMPA:
ldi tmp16,(1‹‹ADPS0)|(1‹‹ADPS1)|(0‹‹ADPS2)|(1‹‹ADATE)| (1‹‹ADSC)|(1‹‹ADEN)
sts ADCSRA,tmp16
reti
|
Здесь есть перезапись значения из регистров АЦП в регистры сравнения таймера?
Зато у нас есть обработчик прерывания от АЦП, который никогда правда не вызовется, ведь бит ADIE в ADCSRA не взводится.
А еще есть веселый запуск АЦП - по прерыванию от таймера 1 по переполнению. Которого тоже никогда не будет если таймер в режиме шим. Почему не используется режим free run? И зачем настраивать режим на аппаратный запуск, если хочется запускать АЦП в прерывании от таймера?
Тут программа из кучи несуразностей и пока Вы не опишете алгоритм простым человеческим языком помочь Вам сможет только настоящий телепат. Я, к сожалению, подобным даром не обладаю.
Посмотрел режим таймера. Прерывание от него все же будет. Но мне уже надоело Вытягивать клещами инфу. Удачи в поисках багов!
Последний раз редактировалось kison; 27.09.2009 в 23:58.
|
|
|
|
28.09.2009, 18:07
|
|
Временная регистрация
Регистрация: 30.06.2005
Адрес: Санкт-Петербург
Сообщений: 73
Сказал спасибо: 2
Сказали Спасибо 11 раз(а) в 11 сообщении(ях)
|
Re: АЦП в ATmega48
kison, благодарю за разъяснения, сейчас попробую исправить
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:21.
|
|