Forum: Mikrocontroller und Digitale Elektronik Problem bei Atmega 32 programiereung


von omnikron (Gast)


Lesenswert?

Hallo alle zusammen.

Ich arbeite gerade an einem Roboter, der per Bluetooth gesteuert,
und eine Linie nachfahren kann.

Es gibt zwei modi:

1. Linie folgen
2. PDA Controll

Mit meinem PDA kann ich den Roboter Steuern und auf Linie folgen 
umschaltenn.
Das Steuern mit PDA funktioniert 1A aber das Umschalten zwischen 
Liniefolgen und steuern krig ich einfach iht hinn.

Das Programm ist in C geschriebern ich binn zwar kein Profi aber das 
nötigste kann ich.

1
while(Data[0]==81){
2
3
4
while((sl1)||(sr1)){
5
6
if((sl2)||(sr2)){
7
if(sl2){right();while(bit_is_set(PINB,0)){}}
8
if(sr2){left();while(bit_is_set(PINB,2)){} }
9
10
}
11
12
13
if(sl1){right();}
14
if(sr1){left();}
15
16
17
}
18
forwart();
19
}
Diese Schleife sollte solange wiederholt werden bis in der Variable 
Data[0] eine andere Zahl steht.
Data[0] wird von einem UART Interrupt geladen.
Aber aufgrund der Schleifen in der Rutine lässt sich die Rotine nicht 
beenden.

Meine Frage:

Wie könnte man mein Problem am besten Lösen?

von g457 (Gast)


Lesenswert?

> Data[0] wird von einem UART Interrupt geladen.

Ich biete ein volatile (oder zwei). Wer bietet mehr?

von Vlad T. (vlad_tepesch)


Lesenswert?

omnikron schrieb:
> forwart();
leicht WM-geschädigt?
 *SCNR*

von omnikron (Gast)


Lesenswert?

Oh danke

volatile

das funktioniert jetz klasse
echt vielen Dank

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.