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.
Der Timer 2 wird im Hauptprogramm wie folg initialisiert.Code:ISR(TIMER2_OVF_vect) { count++; if(!count){ time ++; } } void Msleep(unsigned int timeb) { time=0; while (time <= 2) { //PrintInt(time); } }
Sobald ich das auskommentierte PrintInt nicht auskommentiere funktioniert es.Code:TIMSK2 |=0x1; //Enable Interrupt Timer2 TCCR2A=0; TCCR2B=0x07;
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:
Code: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++); }







Zitieren
Lesezeichen