|
|
  |
Проблема с АЦП у Atmega48(V) |
|
|
|
May 1 2008, 11:16
|
Группа: Новичок
Сообщений: 12
Регистрация: 19-04-07
Пользователь №: 27 175

|
Кто-нибудь сталкивался с некорректной работой АЦП. Подаю разное напряжение на вход АЦП в том числе и стандартное 1,1V никакого результата. Подавали даже напрямую напряжение батарейки на разные входы - результат одинаковый - в регистрах ADCL,ADCH - нули или около того порядка 5-10 (dec) (скорее всего шумы). Тактовая частота 8 МГц. предделитель АЦП 1/32. Возможно программная ошибка? или всё таки аппаратная ошибка?
|
|
|
|
|
May 1 2008, 13:08
|
Группа: Новичок
Сообщений: 12
Регистрация: 19-04-07
Пользователь №: 27 175

|
Часть кода отвечающая за работу АЦП. Результат работы АЦП сравнивается с Umin.
.equ Umin =500 ;миниммальное пороговое значение напряжения ;============== Ацп ========== ;Задаём кол-во измерений ldi r16,0b11100110 ;включение Ацп и Timer/Counter1 sts PRR,r16 ;PRR ldi r18,0b01100010 ;выбираем 2-ой канал sts ADMUX,r16 ;ADMUX ldi r16,0b10000111 ;настройка Ацп sts ADCSRA,r16 ;ADCSRA ldi r16,0b00000100 sts DIDR0,r16 ;Сделаем 1-ое преобразование (его учитывать не надо, т.к. оно ложное)
ldi r16,0b11000111 ;сделаем 1-ое измерение sts ADCSRA,r16 ;уст бит "старт преобразования" ;sbi ADCSRA,ADSC WaitADC1: ;ждём пока выполнится преобразование lds r16,ADCSRA sbrs r16,4 rjmp WaitADC1 // sts ADCSRA,r16 lds ZH,ADCH lds ZL,ADCL ;здесь отсчёт уже сделан ldi r16,0b11000111 ;сделаем 2-ое измерение sts ADCSRA,r16 ;уст бит "старт преобразования" ;sbi ADCSRA,ADSC WaitADC2: ;ждём пока выполнится преобразование lds r16,ADCSRA sbrs r16,4 rjmp WaitADC2 // sts ADCSRA,r16 lds ZH,ADCH lds ZL,ADCL ;=================== Сравнение напряжений ======================= ;Установка Umin (YH YL) ;Сравнение напряжений ZH,ZL (U) с Umin cpi ZH, Umin brlo LowPower
|
|
|
|
|
May 1 2008, 13:28
|
Участник
  
Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695

|
Цитата lds ZH,ADCH lds ZL,ADCL ;здесь отсчёт уже сделан When ADCL is read, the ADC Data Register is not updated until ADCH is read. Consequently, if the result is left adjusted and no more than 8-bit precision is required, it is sufficient to read ADCH. Otherwise, ADCL must be read first, then ADCH.
|
|
|
|
|
May 1 2008, 14:21
|
Группа: Новичок
Сообщений: 12
Регистрация: 19-04-07
Пользователь №: 27 175

|
Цитата(tazik @ May 1 2008, 17:39)  Конструкцию вида: ldi r16,0xAA sts ADCSRA,r16 применять нельзя
вместо sts нужна команда out
sts адресует всю SRAM, включая 32 регистра r0-r31, out - только I/O область SRAM. Адреса регистров, перечисленные в файле ...def.inc рассчитаны на применение команд in/out, а не sts/lds
если все-таки хочется использовать команду sts, то к адресу регистра необходимо прибавлять смещение 0x20h (адреса регистров r0-r31) регистр ADCSRA и ADMUX не относятся к I/O области. Так что sts тут к месту. Хотя я на всякий случай попробовал с out. С ним вообще программа не компилируется. AVR Studio пишет M:\2008.04\....\Proga.asm(109): error: Operand 1 out of range: 0x7c Так что проблема не в sts. Но всё равно спасибо.
|
|
|
|
|
May 1 2008, 14:49
|
Группа: Новичок
Сообщений: 12
Регистрация: 19-04-07
Пользователь №: 27 175

|
Заметил  Буду проверять в железе. Спасибо. Надеюсь проблема только в этом.
|
|
|
|
|
May 1 2008, 15:02
|
Частый гость
 
Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691

|
Цитата(exert @ May 1 2008, 22:21)  регистр ADCSRA и ADMUX не относятся к I/O области. Так что sts тут к месту. Хотя я на всякий случай попробовал с out. С ним вообще программа не компилируется. AVR Studio пишет M:\2008.04\....\Proga.asm(109): error: Operand 1 out of range: 0x7c Так что проблема не в sts. Но всё равно спасибо. Скачал pdf на мегу 48. Да, действительно, Вы правы
Сообщение отредактировал tazik - May 1 2008, 15:15
|
|
|
|
|
May 2 2008, 05:53
|

Местный
  
Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947

|
Цитата(exert @ May 1 2008, 15:16)  Возможно программная ошибка? или всё таки аппаратная ошибка? А Вы сами как дуиаете? У тысяч людей, использующих Меги, нет никакой "аппаратной ошибки", а вот Вы такой особенный, что именно у Вас она есть
--------------------
После устранения бага в программе она стала работать....хуже
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|