выполняется.
не хотел приводить код, потому что для очень многих людей слово
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А) чип...