-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Zwei Timer = Problem

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.08.2005
    Ort
    bei Graz
    Alter
    27
    Beiträge
    225

    Zwei Timer = Problem

    Anzeige

    Hallo,
    ich habe gestern ein LCD Display mit einem AtMega 32 verbunden und eine Kleine Drehzahlmessung programmiert.
    Soweit kein Problem. Das ganze ist mit Timer0 gemacht worden und basiert auf interrupts.
    Timer1 verwende ich dazu um alle 16 sec die Anzeige des Displays zu verändern.

    Ergebnis: Drehzahl funzt, wechsel nicht.

    Im Simulator bin ich draufgekommen das sich die Timer " überschneiden" d.h es werd der Drehzahlinterupt ausgelöst und während dieser lauf wird der wechselinterrupt ausgelößt. Ich habe schon probiert den timer1 mit einem anderen wer zu loaden, er fäng jedoch immer bei 0 an.

    Codeschnippsel kann ich leider im Mom nicht bieten aber vielleicht hatte jemand ein ähnliches Problem.

    MfG Moritz

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Codeschnippsel kann ich leider ...
    Is schade, denn offenbar ist da irgendetwas sub-optimales drin.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    31.08.2005
    Ort
    bei Graz
    Alter
    27
    Beiträge
    225
    Hallo,
    bitte erkläre mir mal suboptimal

    MfG Moritz

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    optimal ~= das Beste
    sub = darunter, unterhalb
    unterhalb des Besten ==> nicht gar so gut, eher mäßig (eigentlich schrottig)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Ich antworte dir jetzt mal weil hier ja sonst lieber gesülzt wird.

    Also ein interrupt kann einen anderen nicht unterbrechen. Hatte dieses Problem schonmal. Du kannst das umgehen indem du interrupts wieder mit 'sei' aktivierst. Nachteil: dein Stack kann überlaufen, wenn du schlecht programmiert hast.
    Mein vorschlag wäre einen zähler einzusetzen, der im hauptprogramm ausgewertet wird.

    angenommen Drehzahlinterrupt 1x pro sekunde

    do

    if zähler=16 then
    displayausgabe
    zähler=0
    end if

    loop

    end

    timerinterrupt:
    incr zähler
    (drehzahlauswertung)
    .
    .
    .
    return

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    .. weil hier ja sonst lieber gesülzt wird..
    geht das deutlicher ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Is schade, denn offenbar ist da irgendetwas sub-optimales drin.
    Hallo,
    bitte erkläre mir mal suboptimal

    MfG Moritz
    optimal ~= das Beste
    sub = darunter, unterhalb
    unterhalb des Besten ==> nicht gar so gut, eher mäßig (eigentlich schrottig)
    drei antworten, weder fachlich noch zum thema passend.

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    präpotent = überheblich, klugsch...r
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    03.11.2004
    Beiträge
    370
    Merkst du eigentlich das du ein kleines bisschen unsachlich wirst?

    Leider ist nicht nur dein Ton ein Problem, sondern auch Inhalte, bei denen nix fachliches dabei ist.

    @moritz: wenn noch fragen sind PM mich
    hier ist anscheinend niemand an einer problemlösung interessiert sondern eher am lustig machen und eigene schlechte laune abreagieren. [/quote]

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.03.2004
    Beiträge
    185
    Vielleicht sollte man das Posten von Codeschnipseln in den Forumsregeln verankern um solche ausufernden nichtssagenden threads zu vermeiden.
    Dann genügt ein einfacher Hinweis auf die Forumsregeln.
    Zitat Zitat von Moritz f.
    Im Simulator bin ich draufgekommen das sich die Timer " überschneiden" d.h es werd der Drehzahlinterupt ausgelöst und während dieser lauf wird der wechselinterrupt ausgelößt.
    Überschneidungen lassen sich nur mit Enable/Disable Interrupt und TimerX erzeugen. Ansonsten wartet der µC mit der ISR des ausgelösten Interrupts bis er wieder auf ein RETI stößt.
    Prüfe bei zwei ISR mal den $hwstack!

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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