- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: Grundlegendes Problem mit Port-Zugriff und Timer-Interrupts

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.05.2007
    Beiträge
    16

    Grundlegendes Problem mit Port-Zugriff und Timer-Interrupts

    Hallo,

    verwende zur Zeit nen PIC18F2550 und Piklab + SDCC.
    Ich verwende auch den USB-Bootloader von Sprut.

    LEDs hängen an RC0, RC1 und RC2.
    Quarz ist 4 MHz, Fosc ist 48 Mhz (wegen PLL).

    In Grunde funktioniert das schon.

    Jetzt hab ich aber ein seltsames Problem.

    Ich habe zuerst ein Programm geschrieben, daß in main() in einer Endlos-While-Schleife die LEDs nacheinander ein und ausschaltet und dazwischen Zeit vergeudet in dem es drei geschachtelte for-Schleifen durchläuft.

    Danach wollte ich das selbe mit Timer-Interrupts machen. Ich lasse den Timer alle 1500 Schritte mit dem 1/8 Prescaler überlaufen, d.h. der Interrupt tritt alle 1 ms auf.
    Ich zähle die Interrupts mit, und alle 500 mal, toggle ich die 2. LED.

    Das funktioniert, alle 500ms ändert die 2. LED ihren Zusand.

    Jetzt das Problem: Wenn ich beide Varianten zusammen betreiben möchte, also LED 1 und 3 in der main() und LED2 in der isr ansteruen, dann funktioniert das nicht wie gewünscht.

    Die LED2 blinkt dann korrekt, währen die LED1 und 3 flackern.

    Woran könnte das liegen?

    MIr ist irgendwie sowas in den Sinn gekommen wie: beim Einsprung in die ISR werden die Ports gesichert und danach wieder hergestellt. Aber ich weiß nicht wonach ich da genau suchen kann.

    Evtl. liegt es ja auch an was ganz anderem?

    Anbei der Quellcode.
    Angehängte Dateien Angehängte Dateien

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen