Alles sehr sehr komisch....
Wenn ich alles aus der Timer-ISR rausschmeiss ausser dem bRxCount
Also so:
while-Schleife:Code:#pragma vector=TIMER0_OVF_vect __interrupt void tim0_ovf(void) { TCNT0 = T0_PRELOAD; // Refresh preload // ========================================================================== // receive // ========================================================================== if (bRxFlag & RX_M_RECEIVE) // receive ? { DDRB |= (1<<PB2); // Status LED initialization PORTB ^= (1<<PORTB2); // toggle status LED /* if (bRxCount & 0x08) // is this the stop-Bit (9th) { bRxFlag &= ~RX_M_RECEIVE; // receiving sequence done bRxFlag |= RX_M_DATA; // signal data GICR |= 1<<INT0; // re-enable int0 for next } else */ // { // bRxByte >>= 1; // Shift right data bRxCount++; bRxFlag |= RX_M_MUHKUH; /* if(PIND&(1<<PD2)) //set bit or leave it { bRxByte |=0x80; bRxCount++; } */ // } } }
wird kein INT0 ausgelöst. d.h. nur HW-Uart Echo, kein bRxCounter Stand.Code:while(1) { if(bRxFlag & RX_M_MUHKUH) { //bRxFlag &= ~RX_M_DATA; bRxFlag &= ~RX_M_RECEIVE; bRxFlag &= ~RX_M_MUHKUH; hw_transmit_byte(bRxCount + 0x30); } }
Kommentiere ich aber bRxFlag &= ~RX_M_RECEIVE; und bRxFlag &= ~RX_M_MUHKUH; aus, wird INT0 ständig ausgelöst (ein Tastendruck reicht...)
Was dann gesendet wird:
!+5?IS]gq{…™£*·ÁËÕßéóýCMWaku‰“§±»ÅÏÙãí÷
)3=GQ[eoyƒ—¡«µ¿ÉÓÝçñû#-7AKU_is}‡‘›¥¯¹Ã
also nur Müll halt...







Zitieren

Lesezeichen