при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
В принципе передача и без прерывания работает.Но если есть - чего не использовать....ARV писал(а):а вам на самом деле важно, чтобы контроллер не простаивал?
Да, если a - указатель на структуру, то доступ к её элементам либо через a->item; либо через (*a).item.amd9800 писал(а):Чтобы с помощью указателя на структуру получить доступ к ее членам, необходимо использовать оператор стрелка ->.
Код: Выделить всё
main.c:57:1: error: 'for' loop initial declarations are only allowed in C99 or C11 mode
for (char i=0;i<5;i++) { };
^
main.c:57:1: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your codeДа я как-то к прерыванию и иду чтоб без проверок и безгеморойней...Да и время как-то распределится.Вот эту чудную строку как-то хочется попрерывать...zero648 писал(а):На самом деле при передаче быстрее работать без прерываний, т.к. прерывание подразумевает вход и выход из обработчика и это на каждый байт передачи, плюс другие прерывания в это время обработаться не могут. Лучше в основном цикле проверять флаг готовности буфера передачи, и если готов, передать очередной байт и дальше идти по программе, если еще не готов передавать, тогда просто пропускать и идти дальше по программе.
Значит надо читать до такой степени, пока не поймёте. Ибо это должна быть настольная книга, к которой нужно постоянно обращаться за помощью.нихрена я там не пойму
Вы считаете, что подобные ответы - не помощь ? Или Вы хотите видеть в ответах только то, что хотите видеть ? Тут уж извините, это форум, а не индивидуальные курсы обучения.Хотите помочь помогите
Код: Выделить всё
#define p_on PWRD=0;TIMSK=0b00000100;ADC_Enable;delay_ms(10);ScreenLEDCount=0;
#define p_off lcd_clear();delay_ms(10);TIMSK=0b00000000;ADC_Disable;PWRD=2;
#define ADC_Int_Enable (ADCSRA=ADCSRA|0b00001000)
#define ADC_Int_Disable (ADCSRA=ADCSRA&0b11110111)
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{TimeCount++;
if (PWRD==0)
{
if (testing<1)
{
//ADC_Start;
if (PIND.3==0) {ButPressCount++;ScreenLEDCount=0;} else {ButPressCount=0;ScreenLEDCount++;}
if (ScreenLEDCount>ScreenLEDmax) {PORTB.1=0;}
if (ScreenLEDCount>PowerDownMax) {ScreenLEDCount=PowerDownMax+1;p_off;}
else {LCDscreen();
ADC_Int_Enable;
idle();
}
}
}
}
interrupt [EXT_INT1] void ext_int1_isr(void)
{
if (PWRD==2){p_on}
if (testing<1)
{
if (PINB.1==1)
{
menu++; if (menu>4) {menu=0;}
if (menu==3) {TimeCount=0;}
lcd_clear();
}
else{PORTB.1=1;}
}
}