- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: verursachen 2 Interrupts probleme?

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Anzeige

    Praxistest und DIY Projekte
    Das sollte echt kein Thema sein (vorausgesetzt es werden wirklich nur Pins gesetzt und der Compiler setzt das gut um).

    Kann es evtl. sein, daß du in INT0 den INT1-Pin wechselst und umgekehrt? Dann hängen sich die IRQs natürlich auf...

    Die "Länge" einer ISR kannst du eigentlich nicht in Codezeilen messen. Was da entscheidend ist, ist die Anzahl der erzeugten Instruktionen. Und da gilt: So kurz wir nötig. Bei deinem Code sollte es aber wie gesagt absolut unkritisch sein.

    Und wenn nix falsch ist an deine Code, was willst du dann wissen???
    Disclaimer: none. Sue me.

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2004
    Beiträge
    206
    weil es eben nicht geht.
    dachte, daß es da z.b. noch spezielle einstellungen gibt, oder saß man nur den int0 oder den int1 oder int2 verwenden darf/kann.

    oder was weiß ich, drum frag ich ja.
    ist mir halt ein rätsel, warum der eine nicht zurückspringt, und der andere sofort, auch wenn die int. bedingung noch erfüllt ist.

  3. #13
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    Also das setzen einiger Pins ist im Normalfall kein Problem, ein guter Compiler verpackt das in ganz wenigen Assemblerbefehlen.


    In ganz kritischen Fällen beschränke ich meine ISRs wirklich nur auf gaaanz wenige Befehle, nämlich:
    - setzen eines Flags in irgendeiner Variable, um dann im Hauptprogramm ganz in Ruhe auf den Interrupt reagieren zu können

    und falls nötig:
    - speichern eines Wertes in einer Variable (z.B. Zählerstand, ADC-Wert etc.)
    - setzen von interruptspezifischen Registern (bei Overflow-Interrupts z.B. das entsprechende TCNT Register)

    Im Normalfall kann eine ISR aber auch deutlich länger ausfallen ohne daß Probleme entstehen.


    was ich in einer ISR grundsätzlich niemals verwende sind Schleifen und Bibliotheksfunktionen (denn man weiss ja bei Funktionen die man nicht selbst geschrieben hat meist nicht wie lang sie wirklich sind). Und Sprünge aus einer ISR heraus an eine andere Stelle im Code sind sowieso verboten. (das kann nämlich dazu führen daß eine ISR zwar immer wieder neu aufgerufen wird aber niemals beendet, was dir deinen Stack überlaufen lässt)
    So viele Treppen und so wenig Zeit!

  4. #14
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2004
    Beiträge
    206
    das ist die ISR


    Int0_isr:
    Pwm1a = 0
    Portd.6 = 0
    Portc.3 = 0
    Pwm1b = 0
    Portc.2 = 0
    Portc.4 = 0
    Pwm1a = 180
    Portd.6 = 0
    Portc.3 = 1
    Pwm1b = 0
    Portc.2 = 0
    Portc.4 = 0
    Return

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2004
    Beiträge
    206
    GELÖST:
    waren falsch angesteckte leitungen an einem motor, warum er sich komisch verhalten ha.

    danke trotzdem.

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

LiFePO4 Speicher Test