Controllerabsturz nach: enable_interrupts(INT_TIMER0);
Dienstag, 22. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  CCS Compiler  |  Timer (CCS)  |  Controllerabsturz nach: enable_interrupts(INT_TIMER0); « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Controllerabsturz nach: enable_interrupts(INT_TIMER0);  (Gelesen 1646 mal)
 
r2d2
Gast
« am: November 01, 2008, 16:11:45 »

Hallo zusammen,

bin neu hier im Forum, arbeite aber seit einiger Zeit mit CCS.

Bin gerade dabei mein xtes Projekt mit timer-Interrupt zu programmieren, aber egal was ich versuche, nach dem freigeben des timer0-Interrupts stürzt der Controller sofort ab?!
Controller: 18F252
Compiler PCH 4.032

Main:

        set_timer0(0);
      setup_counters(RTCC_INTERNAL, RTCC_DIV_1 | RTCC_8_BIT);
      enable_interrupts(INT_TIMER0);
      enable_interrupts(GLOBAL);

Interruproutine:

        #INT_TIMER0
        void clock_isr() {
      set_timer0(10);
      printf("Hallo\n\r");
        }


Wenn ich versuche zu simulieren sehe ich wie timer0 überläuft, es erfolgt aber kein Sprung zur ISR.
Nach einigen Programmschritten erfolgt ein Sprung irgendwo mitten ins Programm -> Absturz.

habe versucht timer1 zu benutzen, bekomme aber das gleiche Problem.

Was kann das sein?

Vielen Dank für Eure Antworten!
Gespeichert
Steffen
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 1235


Profil anzeigen
« Antworten #1 am: November 03, 2008, 11:40:06 »

Du betreibst den Timer mit internem Takt ohne Vorteiler --> Überlauf nach 256 Maschinenzyclen.

Die Sicherungsorgie des CCS beim Einsprung in den Interuptvektor und das printf in der ISR wird aber mehr in Anspruch nehmen, daher springt er sofort nach dem Verlassen der ISR wieder in diese und der Controller "hängt".

Zeitraubende Sachen, wie z.B. printf, gehören nie in eine ISR!

Das wäre jedenfalls eine mögliche Erklärung, ohne das Ganze jetzt überprüft zu haben. Dein Simulationsergebnis passt da aber nicht so recht dazu.

Gruß
Steffen
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.032 Sekunden mit 18 Zugriffen.
 
Top! Top!