avr-gcc problem z programem.

czesc, Potrzebuje zrobic sobie timeout do rs'a, cos mi to nie dziala i nie bardzo wiem dlaczego. Moze ktos "rzuci" okiem i zobaczy: Generalnie chcialbym by po ustawieniu rs_stop na 1 usart wyslal K i zakonczyl dzialanie. Wiem ze timer dziala poprawnie (dostaje komunikat). A moze jakos inaczej to realizowac? Jestem otwarty na propozycje...

pozdrawiam, bartek.

PS. Zadzialalo mi to jezeli mialem wlaczone usart0_transmit('e') (wysyla e na drugi port), ale opoznienie ktore probowalem wstawic niz juz nie zmienilo.

unsigned char USART1_Receive( void ) { char status,data; while (1) { while(rs_stop != 0x01){ if (((status=UCSR1A) & RX_COMPLETE)!=0){ data=UDR1; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) return data; } //USART0_Transmit('e'); //_delay_loop_2(100); } if (rs_stop == 0x01){ return 'K'; } }; }

SIGNAL (SIG_OVERFLOW0){ rs_timeout++; if (rs_stop == 0x00){ if (rs_timeout >= 220){ rs_stop = 0x01; usart0_send("RS time outss"); } } TCNT0= 0x29; //reload counter value wdt_reset(); }

Reply to
Bartosz Waleska
Loading thread data ...

Bartosz Waleska wrote: ...

A masz rs_stop zadeklarowane jako volatile?

...

BTW> a gdzie zerujesz rs_timeout

To rozumiem, że tylko testowo, bo wypisywanie w ISR stringu przez UART jest co najmniej problematyczne.

To bardzo zły pomysł, a w zasadzie błąd (w 99.9% przypadków). Nie resetuj watchdoga w przerwaniu, a szególnie przerwaniu timera.

Pozdrawiam,

Reply to
Artur Lipowski
</ciach>

wiem, wiem... na razie poprostu nie mam jeszcze zadnego kodu, trudno wiec cokolwiek zerowac. A test jakos przeprowadzic trzeba, no a co z moim rs timeout? Jak to robic poprawnie? moze ktos moze pochwalic sie gotowcem? Zalozenie: w timerze (1) jest zadanie danych (rs_recive) a w timerze 0 pojawia sie rs_timeout i teraz jak przekonac rs_recive zeby odeslala jakiekolwiek znaki co by zaspokoic potrzebe 1 timera? Dlaczego moj sposob niezbyt chce dzialac?

pozdrawiam, Bartek.

Reply to
Bartosz Waleska

Bartosz Waleska wrote: ...

... A co z odpowiedzią na moje dwa pytania kontrolne?

Pozdrawiam,

Reply to
Artur Lipowski
Reply to
Bartosz Waleska

A to jest FAQ #1 I w 90% przyczyna tzw. "problemów" z przerwaniami.

Pozdrawiam,

Reply to
Artur Lipowski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.