реклама на сайте
подробности

 
 
> atmega32A - ADC
chu
сообщение Apr 23 2013, 17:47
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246



atmega32A 16MHz, прошивка amforth 5.1
АЦП показывает одно и тоже значение на входе А0, не реагирует на потенциометр. опыта работы с АЦП практически нет.
АЦП настроен - однократные измерения, частота 125 КГц
CODE
> ADMUX c@ .x
60 ok
> ADCSRA c@ .x
87 ok
> ?adc.
amforth 5.1 ATmega32A AD Converter
(ADMUX) ADC Multiplexer Selection Register = 60
Reference Selection Bits=40
AVCC with external capacitor at AREF pin
ADLAR = left adjust
Analog Channel and Gain Selection Bits
Single Ended Input - A0
(ADCSRA) ADC Control and Status Register A =87
ADC turned ON
AD Convertion is complete
single convertion

ADC Interrupt disabled
ADC Prescaler Select Bits= 7
ADC clocks = 125 KHz
ok
>

пин PORTA 0 настроен на вход
в чем я косячу и где порыться? от даташита уже тошнит.

проверил вход А1 - таже хрень
CODE
> ADMUX c@ 1 or ADMUX c!
ok
> ?adc.
amforth 5.1 ATmega32A AD Converter
(ADMUX) ADC Multiplexer Selection Register = 61
Reference Selection Bits=40
AVCC with external capacitor at AREF pin
ADLAR = left adjust
Analog Channel and Gain Selection Bits
Single Ended Input - A1
(ADCSRA) ADC Control and Status Register A =87
ADC turned ON
AD Convertion is complete
single convertion

ADC Interrupt disabled
ADC Prescaler Select Bits= 7
ADC clocks = 125 KHz
ok
> adc-tst
FFC0
FFC0
FFC0
FFC0
FFC0
FFC0
FFC0
FFC0
FFC0
FFC0
FFC0
ok
>

чета лыжи не едут...

Сообщение отредактировал IgorKossak - Apr 23 2013, 19:59
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
chu
сообщение Apr 24 2013, 07:26
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246



выполняется.
не хотел приводить код, потому что для очень многих людей слово Forth является "красной тряпкой для быка"
не хотелось бы, чтобы тема зафлудилась и превратилсь в тролль-бас.
видимо, придется.
запуск преобразования:
Код
: adc-start     ADCSRA    ADCSRA_ADSC over c@ or swap c!;

проверка готовности данных:
Код
: adc-data?     ADCSRA c@ ADCSRA_ADIF and    ;

сброс флага готовности:
Код
: adc-end       ADCSRA    ADCSRA_ADIF over c@ or swap c!;

одно измерение:
Код
: adc?
      adc-start
          begin adc-data? until
      ADC dup c@ swap 1+ c@ 8 lshift +
      adc-end
;

тестирование:
Код
> : adc-tst begin adc? .x cr 500 ms pause key? until key drop ;
ok
> adc-tst
FFC0
FFC0
FFC0
FFC0
FFC0
ok
>



совсем уже "врукопашную"
запуск преодразования
Код
> ADCSRA ADCSRA_ADSC over c@ or swap c!
ok
>

смотрю регистр ADCSRA
Код
> ADCSRA c@ .x
97  ok
>

видно - флаг ADIF (0х10) установлен
читаю регистры данных ацп - младший. старший:
Код
> ADC c@ .x ADC 1+ c@ .x
C0 FF  ok
>

сбрасываю флаг и проверяю:
Код
> adc-end ADCSRA c@ .x
87  ok
>
флаг ADIF сброшен
я понимаю вашу мысль - сомнение в коде.
код работает корректно, я уже обнюхал каждый битик в ацп...
бредовая идея - но попозже "поменяю коня" - прошьюсь в другой (тоже мегу32А) чип...
Go to the top of the page
 
+Quote Post
Палыч
сообщение Apr 24 2013, 07:30
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(chu @ Apr 24 2013, 11:02) *
не хотел приводить код... видимо, придется.

Да-а-а-а... Forth... Тут - я "не взуб ногой"...
Надеюсь, что при запуске преобразования Вы устанавливаете единицу в ADSC не затрагивая другие биты регистра ADCSRA.
При проверке окончания преобразования (готовности АЦП) достаточно контролировать ADSC: единица, записаная при старте, будет "держаться" до окончания преобразования, потом сбросится в ноль - тут-то и можно читать ADC.
На флаг ADIF можно "наплевать". Если будете использовать прерывания - он сам "автоматом" сбросится, а не будете - пусть "телепается", это ничему не повредит.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th August 2025 - 23:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01371 секунд с 7
ELECTRONIX ©2004-2016