PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Seltsames Verhalten bei Wait Funktion...



pentagonchicken
16.06.2006, 18:24
Hallo, ich bin gerade dabei die Rn_Minicontrol mit C zu Programmieren .
Atmega 168.
Dabei bin ich auf folgendes seltsames Phänomen gestoßen. Ich habe vor mit folgender Funktion einfach eine Zeitlang zu warten.

ISR(TIMER2_OVF_vect) {
count++;
if(!count){
time ++;
}
}

void Msleep(unsigned int timeb)
{
time=0;
while (time <= 2) {
//PrintInt(time);
}

}
Der Timer 2 wird im Hauptprogramm wie folg initialisiert.



TIMSK2 |=0x1; //Enable Interrupt Timer2
TCCR2A=0;
TCCR2B=0x07;

Sobald ich das auskommentierte PrintInt nicht auskommentiere funktioniert es.
solbald es auskommentiert ist bleibt er in der while schleife endlos hängen ... keine Ahnung warum vieleicht kann mir wer helfen.
Die PrintInt Funktion macht folgendes:

void PrintInt(int wert)
{
char text[6]=" ";
itoa(wert,text,10);
SerWrite(text,5);
SerWrite("\n\r",2);
}
void SerWrite(unsigned char *data,unsigned char length)
{
unsigned char i = 0;
UCSR0B = 0x08; // enable transmitter
while (length > 0) {
if (UCSR0A & 0x20) { // wait for empty transmit buffer
UDR0 = data[i++];
length --;
}
}
while (!(UCSR0A & 0x40));
for (i = 0; i < 0xFE; i++)
for(length = 0; length < 0xFE; length++);
}

linux_80
16.06.2006, 20:30
Hallo,

u.a. hast Du damit das Warteschleifen-Problem, schau Dir dazu diese Seite im Wiki an:
https://www.roboternetz.de/wissen/index.php/Warteschleife

Edit:
dabei meine ich die While-schleife