- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 4 von 4

Thema: Timer1 Capture im BASCOM Simulator

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124

    Timer1 Capture im BASCOM Simulator

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    vermutlich bin ich einfach zu ....
    Ich spiele ein bisschen mit dem Timer 1 und dem Bascom Simulator rum und will mit ICP1 den aktuellen Timerwert aus Timer1 auslesen, also

    Code:
    $regfile = "M32def.dat"
    
    'Disable Jtag
    Mcusr = &H80
    Mcusr = &H80
    
    'Timervariablen
    Dim Timer_capture As Word
    
    'Capture Interrupt
    On Capture1 Cap_int
    
    'Timer Config
    Config Timer1 = Timer , Capture Edge = Falling , Prescale = 1
    
    
    ' Interrupts starten und freigeben
    Enable Capture1
    Enable Interrupts
    
    'Testroutine
    Do
    Print "testroutine"
    Loop
    End
    
    ' Timer1 Capture Interrupt Routine
    Cap_int:
    Timer_capture = Capture1
    Print Timer_capture
    Return
    Problem:
    Timer1 zählt so wie gewollt,
    beim ICP1 Interrupt wird in die Routine gesprungen,
    aber die Bascom Variable CAPTURE1 ist und bleibt immer NULL.

    Ausprobiert hab ich es mit V1.11.7.4 und V1.11.7.7.

    Fehlt was oder ist es ein BUG im Bascom Simulator?
    Das Capture Beispiel aus dem ROWALT Buch zeigt den gleichen Effekt.

    Ciao,
    Werner

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Ich weiß nicht, ob ich das jetzt richtig sehe, aber wo schreibst du irgendwas vom Timer in caputre1?
    Du definierst zwar:
    Dim Timer_capture As Word
    aber woher erhält Timer_capture irgendeinen Wert?

    Und ein Frage, ist beim Interrupt der Timer nicht immer 0?
    Oder was genau ist Capture? ist das einfach ein Timer der Intern mit Prescale1 hochläuft? Vermutlich ja, aber mir ist Capture nicht bekannt, ich arbeite mit:
    On Timer1 Timer1_int
    oder so.
    Der Wert vom Timer steht in Timer1.

    MFG Moritz

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124
    Hallo Moritz,

    Dim Timer_capture As Word
    aber woher erhält Timer_capture irgendeinen Wert?
    Aus der Pseydovariablen Capture1. Capture1 sind in Bascom die beiden Capture Register ICR1L und ICR1H des Atmel.

    Und ein Frage, ist beim Interrupt der Timer nicht immer 0?
    Du bist gedanklich beim Overflow Interrupt.

    Capture ist das Auslesen des aktuellen Timerwertes durch einen hardware Interrupt. Es gibt zwei mögliche Quellen für den Capture Interrupt, die eine ist der Analogkomparator, die andere der ICP-Pin. Der Timer wird dabei nicht gestoppt, er läuft weiter.

    Ciao,
    Werner

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.09.2004
    Beiträge
    124
    Hallo,
    ich hab den erzeugten Code jetzt mal im Simulator des Studio4 laufen lassen. Da scheint es zu gehen. ICR1L und ICR1H werden beim auftreten des ICP Interrupt gesetzt.

    Ciao,
    Werner

Berechtigungen

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

LiFePO4 Speicher Test