- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 9 von 9

Thema: formel für timr0 berechnung gesucht

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Beiträge
    209

    formel für timr0 berechnung gesucht

    Anzeige

    E-Bike
    Hallo Leute,

    habe das forum schon durchsucht, aber scheinbar finde ich den wald vor lauter bäumen nicht.


    habe bei einem mega8 und neuester Bascom full-version das problem,
    daß irgendwie die zeit nicht stimmt.
    jetzt bin ich schon so verzweifwelt,daß ich an meiner formel (aus schlauem buch) für die korrekte zeit zweifle

    Const Ticks0 = 63

    Config Timer0 = Timer , Prescale = 64

    If H_flag = 1 Then
    Incr H
    End If


    Timer0_isr:
    Load Timer0 , Ticks0 '0,001sek
    H_flag = 1
    return

    erhöht doch variable H alle 0,001sek, oder?
    weil bei
    if H=500 then display paar sachen

    nicht alle 500ms, sondern so alle 666ms was angezeigt wird (jeweils eine minute gemessen, also kein rechenfehler)

    timer und adc sind die einzigen interrupts, kein RS232 und keine versteckten waits oder so rekursion etc....einer ne idee?
    ist ein 4mhr extern quarz am mega8 in einem professionellen board.
    fuses etc stimmen...

    besten dank

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Die Zahl sollte 62 sein für 1000 HZ. das reset für H_FLAG ?

    If H_flag = 1 Then
    H_flag = 0 ' fehlt das ?
    Incr H
    End If
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer
    Registriert seit
    16.11.2005
    Ort
    Berlin
    Beiträge
    4
    Beim Testen von m_herr's Timer-Problem bekam ich folgende Fehlermeldung:
    Error: 61 Label not found [Timer_Jump
    Der Label erscheint auch nicht im IDE-Fenster
    ------------------------------------------------------------------------
    version 1.11.8.1 / xp
    kann das bitte mal einer testen - Danke
    ------------------------------------------------------------------------
    $regfile = "m8def.dat"
    $crystal = 4000000
    Dim H_flag as byte
    Dim H as word
    Const Ticks0 = 62

    Config Timer0 = Timer, Prescale = 64

    On Timer0 = Timer_Jump
    Enable Timer0
    Enable Interrupts
    H = 0
    H_flag = 1

    Do
    If H_flag = 1 Then
    Incr H
    Print H
    End If
    loop until H = 500
    end

    Timer_Jump:
    Load Timer0 , Ticks0 '0,001sek
    H_flag = 1
    return

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Beiträge
    209
    If H_flag = 1 Then
    Incr H ^
    h_flag=0
    End If

    so die if-anweisung. habe es aus versehen gelöscht...
    ich habe 63 genommen, weil meiner formel nach 62.5 rauskommt. hab da einfach aufgerundet....oder ist das schlimm?


    habe den quelltext getestet, er findet da das label auch nicht, auch wenn ich den namen ändere...komisch.

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Was soll das "=" ?
    On Timer0 = Timer_Jump
    Ich würde schreiben
    On Timer0 Timer_Jump
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Beiträge
    209
    wir haben einen gewinner *gg

    bleibt nur noch die frage, warum bei mir die tatsächliche zeit zwischen 30% -60% höhe ist als die gewünschte zeit.
    warum bei i alle 500ms was auf dem display ausgeben fast 700ms werden...einer ne idee?

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    In dieser Routine brauchst du länger als eine mS, d.h. du verlierst Ticks

    If H_flag = 1 Then
    H_flag = 0
    Incr H
    Print H ' bei 9600 braucht 1 Byte ~1 mS
    End If
    Loop Until H = 500 ' welchen zweck hat das ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Neuer Benutzer
    Registriert seit
    16.11.2005
    Ort
    Berlin
    Beiträge
    4
    @ PicNick
    Habe den Timer0 nur einfach so getestet,ohne irgendwelche Zeitmessung.Das mit "Print H" war nur eine Kontrolle, ob Schleife das "H" hoch zählt.
    Mein Problem war eigentlich das mit dem "Label-Error"

    Trotzdem Danke an Euch!

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Beiträge
    209
    dann wäre das auch geklärt. *g

    bei mir gibts kein print oder andere RS232 dinge. also was könnte noch dafür verantworlich sein, daß die gewünschte zeit von der realen abweicht?

Berechtigungen

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

Labornetzteil AliExpress