- Labornetzteil AliExpress         
Ergebnis 1 bis 8 von 8

Thema: Timer soll bei jedem überlauf +1 machen

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.07.2004
    Beiträge
    178

    Timer soll bei jedem überlauf +1 machen

    Anzeige

    Praxistest und DIY Projekte
    Ich möchte mir gerade ein kleines Lauflicht mit einem Timer Programmieren.

    Der Timer1 ist so eingestellt das er jede 0.5s überläuft.
    Bei jedem Überlauf soll er nun einen Wert um +1 erhöhen bis er bei 8 angekommen ist.
    So kann ich immer bei jedem Wert eine LED Leuchten lassen und habe ein Lauflicht.

    If wert = 0
    then LED1 = 1
    if wert = 1
    then LED2 = 1
    usw...


    ontimer1:
    incr wert
    if wert = 8 then
    wert = 0
    end if


    Blos was muss ich als wert nehmen? Ich habe mal "dim wert as byte" versucht aber das klappt irgentwie nicht.

    Danke schonmal für die Hilfe.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Blos was muss ich als wert nehmen? Ich habe mal "dim wert as byte" versucht aber das klappt irgentwie nicht.
    Sollte aber.

    If wert = 0
    then LED1 = 1
    if wert = 1
    then LED2 = 1
    usw...
    Hast du die End IF da auch alle geschrieben?

    Einfacher wäre:
    If Wert = 0 Then LED1 = 1
    If Wert = 1 Then .....

    Da brauchst du kein End If

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.07.2004
    Beiträge
    178
    hmm dann liegt der Fehler sicher woanders. Ich werde nochmal ein bischen rumprobieren und wenn ich nicht drauf komme melde ich mich nochmal.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Wenn du dich nochmal meldest, dann am besten den ganzen Code schreiben.
    Hast du die Interrupts denn aktiviert?

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.07.2004
    Beiträge
    178
    Es funktioniert nun einigermaßen. Ein Großer Fehler ist noch vorhanden den ich einfach nicht finden kann.

    Das Lauflicht soll in folgender Reihenfolge ablaufen:

    LED_gr an
    0.5s
    LED_gr aus
    LED_ge an
    0.5s
    LED_ge aus
    LED_ro an
    0.5s
    LED_ro aus
    LED_gr an
    usw.

    Blos leuchtet bei meinem Programm LED_ro fast dauerhaft. Sie geht nach zufall mal an und mal aus hab ich das Gefühl.



    Code:
    $regfile = M8def.dat
    $crystal = 3686400
    
    Ddrd = &B11100000                                           'PD7, PD6, PD5 als Ausgänge festlegen, rest Eingang
    
    
    Dim Zler As Byte
    
    
    On Timer1 Ontimer1
    Config Timer1 = Timer , Prescale = 64                       'Timertakt = Crystal / 64
    Enable Timer1                                               'Timer1 einschalten
    Enable Interrupts                                           'Interrupts Global einschalten
    Const Timervorgabe = 36736                                  'Hat mir rnAVR so berechnet
    
    
    '###Deklarationen###
    
    Led_gr Alias Portd.7                                        'LED Grün
    Led_ge Alias Portd.6                                        'LED Gelb
    Led_ro Alias Portd.5                                        'LED Rot
    
    
    
    '###Hauptschleife###
    
    Do
    If Zler = 1 Or Zler = 4 Or Zler = 7 Then
     Set Led_gr
     Else
     Reset Led_gr
    
    
    If Zler = 2 Or Zler = 5 Or Zler = 8 Then
     Set Led_ge
     Else
     Reset Led_ge
    
    
    If Zler = 3 Or Zler = 6 Or Zler = 9 Then
     Set Led_ro
     Else
     Reset Led_ro
    
    
    
    End If
    End If
    End If
    Loop
    End
    
    '###OnTimer1###
    
    Ontimer1:
    Timer1 = Timervorgabe
    Incr Zler                                                   'Zler + 1
    If Zler = 10 Then                                           'Wenn Zler = 9 dann...
    Zler = 1                                                    '...Zler = 0
    End If
    
    Return

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,

    probier mal die End Ifs nach jedem If-Block zu schreiben, nicht alle am ende, denn jetzt werden die in Abhängigkeit zur verherigen ausgeführt, was evtl. Probleme macht.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.07.2004
    Beiträge
    178
    wow nun gehts!! Vielen dank

    Auf was man alles achten muss ist echt nicht mehr schön ... -_-

    EDIT: Aber warum bitte fängt der von hhinten an? Erst Leuchtet Led_ro dann Led_ge dann Led_gr

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Auf was man alles achten muss ist echt nicht mehr schön ... -_-
    Zitat Zitat von Marco78
    Einfacher wäre:
    If Wert = 0 Then LED1 = 1
    If Wert = 1 Then .....
    Noch einfacher wäre es hier unter Bascom nach Lauflicht zu suchen.
    Das Thema hatten wir schonmal. Da wurde nur dem Port eine andere Zahl zugeordnet. Wenn du es nicht findest such ich es nachher mal raus.

Berechtigungen

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

Solar Speicher und Akkus Tests