Re: Probleme mit Start: F10 - reset Kategorie: Programmierung C (von Mansfeld - 12.05.2010 13:22) | |
Als Antwort auf Re: Probleme mit Start: F10 - reset von PeterS - 11.05.2010 14:52
| |
> > 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(); > > > > } | |
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum