-
        

Ergebnis 1 bis 5 von 5

Thema: Timer1 macht Zicken

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.03.2006
    Beiträge
    244

    Timer1 macht Zicken

    Anzeige

    Hallo alle zusammen.

    Ich habe ein Problem mit timer1. Und zwar läuft dieser sofort nach dem "enablen" über. Mein Code sieht schematisch immer so aus:

    Code:
    Config Timer1 = Timer , Prescale = 1024 , Capture Edge = Falling , Noise Cancel = 1
    On Timer1 Timer1_uberlauf                                   ' Bei Überlauf springe zum Interrupt
    
    timer1=preload
    enable timer1
    
    
    Timer1_uberlauf:
      disable timer1
      mache anweisungen
    return
    Und warum auch immer wird sofort nachdem der timer aktiviert wird, zum Überlauf gesprungen. Wäre dankbar wenn jemand eine Idee oder einen Hinweis hat, woran das liegen könnte

    mfg Joachim

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Wenn das das gesamte Programm sein soll: Logisch springt er da rein. Anderer Code ist ja nicht da. Bascom rattert den Code der Reihe nach von oben nach unten durch; irgendwann kommt er dann eben an der Stelle
    Code:
    Timer1_uberlauf:
      disable timer1
      mache anweisungen
    return
    vorbei.
    #ifndef MfG
    #define MfG

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Und wenn das nicht der ganze Code ist: "Capture Edge = Falling" und "Noise Cancel = 1" lassen vermuten, dass Du den Timer eigentlich als Zähler für externe Ereignisse nehmen möchtest. Hast Du es schonmal mit Config Timer1 = Counter versucht?

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.03.2006
    Beiträge
    244
    Also den gesamten Code kann man auf http://lars-projekt.de/?cmd=Software&id=1 ansehen. Er hat bei uns eigentlich nur die Funktion sobald eine Bedingung eintrifft, nach einer Zeit zu schauen, ob diese Bedingung immer noch erfüllt ist, und wenn dies der Fall ist die Motoren zu stoppen.

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.03.2006
    Beiträge
    244
    sodele, jetzt hab ich nochmal ne ganze weile rumprobiert ..

    Ganz am Anfang vom Programm lass ich den Timer 3mal Überlaufen und mess mit der Stoppuhr ( ganz professionell ) die Zeit .. eigentlich sollten es 12s (3x4s) sein.
    Ich hab einige Durchläufe (jedes Mal nen Reset durchgeführt) gestoppt, mit folgendem Ergebnis:

    In den meisten Fällen läuft der Timer das erste Mal sofort über, ich stoppe also 8s. Manchmal stoppe ich jedoch 12s. Ergibt reichlich wenig Sinn .. dies trit sporadisch auf, meist nach 2-3 durchläufen mit 8s einer mit 12s ..


    Außerdem glaub ich, dass der Timerwert meistens sofort "hochgesetzt " wird, nachdem ich ihn gesetzt habe. Denn wenn ich nach dem Interrrupt den Timerwert abfrage, so erhalte ich iwas zwischen 2000 und 3000 (durchaus logisch .. )

    Wäre dankbar für andere Ideen ...

    Das Noice Cancel / Capture Edge .. ist glaub nur für den Zählbetrieb notwendig oder? Das ist jetzt gelöscht (hat aber keine Auswirkungen gehabt) Wir brauchen schon den "richtigen" Timer.

Berechtigungen

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