atmega8 гонит ADC или я косячу?
Re: atmega8 гонит ADC или я косячу?
Да вот у меня получился бесполезный nop, например
Только я не понял, почему компилятор должен выкинуть написанные тобой nop'ы (значит нужные) без volatile? Не выкидывает ведь.
Re: atmega8 гонит ADC или я косячу?
[/quote]hybroid писал(а):Код: Выделить всё
int n = 0;
int n1 = 0;
n = ADCH;
n1 = ADCL;
Нафига?
это отладочный костыль - не мог понять по чему не работает и думал что может я не тот байт читаю или еще чего...
У меня вообще код ужасный - не программист я...
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: atmega8 гонит ADC или я косячу?
а почему компилятор может выкинуть переменные, которые в прерывании обрабатываются, если они не volatile? их ведь программист написал, значит нужные?hybroid писал(а):Да вот у меня получился бесполезный nop, напримерТолько я не понял, почему компилятор должен выкинуть написанные тобой nop'ы (значит нужные) без volatile? Не выкидывает ведь.
битва с дураками проиграна, победители торжествуют. слава победителям!
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: atmega8 гонит ADC или я косячу?
Qwq писал(а):У меня вообще код ужасный - не программист я...
да и не ломайте голову, почему не работает не совсем корректный код, просто напишите корректный, однозначно работающий:
Код: Выделить всё
int adc_result;
adc_result = ADC;битва с дураками проиграна, победители торжествуют. слава победителям!
Re: atmega8 гонит ADC или я косячу?
Не нужны ему последние два бита. Ему нужно ADLAR в 1 и вот это:
Код: Выделить всё
uint8_t adc; // unsigned char, если не нравится это
adc = ADCH;Re: atmega8 гонит ADC или я косячу?
так уже все 100 лет работает... собственно с тех пор как pyzhman подсказал про то что оба байта читать надо... я уже почти все дописал, мелочевка осталась...
Re: atmega8 гонит ADC или я косячу?
Аналогично " Result is not written to the ADC register because it has been locked""" 
ADCSRA = ADCSRA | _BV(ADSC);
while((ADCSRA & _BV(ADIF)) == 0)
values[current] = ADC;
ADCSRA = ADCSRA | _BV(ADSC);
while((ADCSRA & _BV(ADIF)) == 0)
values[current] = ADC;