Страница 2 из 2
Re: atmega8 гонит ADC или я косячу?
Добавлено: Ср мар 28, 2012 11:23:07
hybroid
Да вот у меня получился бесполезный nop, например

Только я не понял, почему компилятор должен выкинуть написанные тобой nop'ы (значит нужные) без volatile? Не выкидывает ведь.
Re: atmega8 гонит ADC или я косячу?
Добавлено: Ср мар 28, 2012 13:06:50
Qwq
hybroid писал(а):
Код: Выделить всё
int n = 0;
int n1 = 0;
n = ADCH;
n1 = ADCL;
Нафига?
[/quote]
это отладочный костыль - не мог понять по чему не работает и думал что может я не тот байт читаю или еще чего...
У меня вообще код ужасный - не программист я...
Re: atmega8 гонит ADC или я косячу?
Добавлено: Ср мар 28, 2012 13:25:18
Мастер Ломастер
hybroid писал(а):Да вот у меня получился бесполезный nop, например

Только я не понял, почему компилятор должен выкинуть написанные тобой nop'ы (значит нужные) без volatile? Не выкидывает ведь.
а почему компилятор может выкинуть переменные, которые в прерывании обрабатываются, если они не volatile? их ведь программист написал, значит нужные?

да потому, что компилятор имеет полное право исключать при оптимизации коды, НЕ ИЗМЕНЯЮЩИЕ СОСТОЯНИЕ "ВИРТУАЛЬНОЙ" ИСПОЛНЯЮЩЕЙ МАШИНЫ сиречь ПРОГРАММЫ. если нет обращений к переменной - она лишняя. если NOP не длает ничего, что меняет содержимое других переменных и т.п. - он лишний. вот и может удалить. МОЖЕТ - не факт, что удалит, но МОЖЕТ. и надеяться на его доброту - это опасно. скольконовичков попали на пустых циклах, из которых они надеялись получить программные задержки? вот и объяснение.
Re: atmega8 гонит ADC или я косячу?
Добавлено: Ср мар 28, 2012 13:26:36
Мастер Ломастер
Qwq писал(а):У меня вообще код ужасный - не программист я...
да и не ломайте голову, почему не работает не совсем корректный код, просто напишите корректный, однозначно работающий:
Re: atmega8 гонит ADC или я косячу?
Добавлено: Ср мар 28, 2012 13:38:41
hybroid
Не нужны ему последние два бита. Ему нужно ADLAR в 1 и вот это:
Код: Выделить всё
uint8_t adc; // unsigned char, если не нравится это
adc = ADCH;
Re: atmega8 гонит ADC или я косячу?
Добавлено: Ср мар 28, 2012 14:07:40
Qwq
так уже все 100 лет работает... собственно с тех пор как pyzhman подсказал про то что оба байта читать надо... я уже почти все дописал, мелочевка осталась...
Re: atmega8 гонит ADC или я косячу?
Добавлено: Вт авг 14, 2012 22:48:42
Furcat
Аналогично " 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;