Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > > Hi, > > > > > > das folgende Programm verhält sich unterschiedlich beim Starten mit F10 und reset: > > > Starte ich mit F10, so wird das Programm (while-loop in main() ) korrekt durchlaufen. > > > Starte ich aber mit reset (also ohne USB Kabel), so bleibt das Programm in der > > > while-loop hängen. Es sieht so aus, als ob die Interrupts 6 und 7 ihre Arbeit eingestellt > > > hätten. > > > Wie unterscheidet sich die Arbeitsweise der beiden Starts: F10 und reset? > > > > > > Gruss > > > Fred > > > > Die Msg_Write() Anweisungen werden natürlich nur durch geführt, wenn die IDE aktiv ist, > > sonst mußt Du die RS232 Funktionen nutzen. Woher weißt Du, das er in der while_loop > > hängen bleibt? > > > > Gruss Peter > > Hallo, > das Programm bleibt in der while-loop, der Roboter fährt und fährt, > nachfolgender Code (BEEP()) wird nicht ausgeführt. > Der Effekt tritt nur auf, wenn ich mit reset (ohne USB-Kabel) starte. Starte ich > hingegen mit F10 ist alles ok. > > Lösung: SPI_Disable() in servos_init() ausgeführt. Dann alles ok. > > Gruss > Fred > > > > > > > > > > > > > > > > > > #include "servos.h" > > > > > > int steps_l, steps_r; > > > > > > > > > // Interrupt 7 > > > void count_l_isr(void) > > > { > > > int irq_cnt; > > > steps_l++; > > > irq_cnt = Irq_GetCount(INT_7); > > > } > > > > > > // Interrupt 6 > > > void count_r_isr(void) > > > { > > > int irq_cnt; > > > steps_r++; > > > irq_cnt = Irq_GetCount(INT_6); > > > } > > > > > > > > > void main(void) > > > { > > > steps_l = 0; > > > steps_r = 0; > > > servos_init(); > > > > > > ENC_LED_ON(); > > > DRIVE_ON(); > > > > > > Timer_T1PWA(200); > > > Timer_T1PWB(200); > > > > > > while(steps_r < 80) > > > { > > > Msg_WriteInt(steps_l); > > > Msg_WriteChar(SPACE); > > > Msg_WriteInt(steps_r); > > > Msg_WriteChar(13); > > > } > > > > > > DRIVE_OFF(); > > > ENC_LED_OFF(); > > > > > > }