HaraldB schrieb:
> Auszug Main:
Tu dir selbst ein paar Gefallen
> volatile int count = 0;
> volatile int send;
> volatile int data[10];
wenn Variablen per Design keine größeren Werte als 255 haben können und
auch nie haben werden, dann bürde dem µC keine 16-Bit Airthmetik auf.
Mal abgesehen davon, löst sich dann auch das Problem des atomaren
Zugriffs in Luft auf, sobald ISR mit dieser Variable im Spiel sind. 8
Bit pro Variable tuns auch:
volatile uint8_t count = 0;
volatile uint8_t send;
volatile uint8_t data[10];
> if(data[count] == 1)
> {
> send = 1;
> } else if(data[count] == 0)
> {
> send = 0;
> }
tus nicht.
data KANN bei dir per Design nur 0 oder 1 sein. Andere Werte gibt es
nicht. Wenn data[count] nicht 1 ist, dann KANN es daher nur 0 sein. Das
muss man nicht testen. Jedes Wort, dass du unnötig schreibst, ist eine
potentielle Fehlerquelle.
> if(send == 1)
> {
> PORTB |= (1<<PB1); // High
> } else if(send == 0)
> {
> PORTB &= ~(1<<PB1); // Low
> }
selbiges.
Wenn send nicht 1 ist, dann kann es per Definition nur 0 sein.
Wozu eigentlich der ganze komplizierte Umweg über send? Wickle doch
gleich alles komplett in der ISR ab, anstatt die Logik quer über das
ganze Programm zu verstreuen.