-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 26

Thema: Komme mit meinem Programm nicht weiter (PWM LED Leiste)

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

    Komme mit meinem Programm nicht weiter (PWM LED Leiste)

    Anzeige

    Hallo,

    ich bin gerade dabei mir eine LED leiste zu bauen. Die ansteuerung will ich mit einem ATmega/Tiny machen.

    Es geht darum RGB Leds zu dimmen und somit viele Farben zu erzeugen.

    Die PWM erzeugung funktioniert bei mir wunderbar. Es wird immer automatisch von Dunkel auf Hell gedimmt und umgekehrt.
    Mein Problem liegt jetzt dadrin, das die LEDs nicht alle gleichzeitig an und ausgehen sollen, sondern nacheinander.

    Ich habe mir überlegt, dass ich einfach immer ein Byte um 1 erhöhe wenn einmal von Hell auf Dunkel gefadet wurde. Wenn das byte 3 ist, dann wird es wieder auf 1 gesetzt.

    Dann habe ich jeder Farbe einen Wert vom Byte zugeordnet.
    Also kann z.B Rot erst angehen wenn Blau wieder aus ist. Grün kann dann erst angehen wenn Rot wieder aus ist usw.

    Aber irgentwie will das Programm nicht so wie ich. Wäre nett wenn jemand mal einen Blick raufwerfen kann um mir zu sagen wo da mein Denkfehler liegt.




    Code:
    $regfile = "m8def.dat"
    $crystal = 8000000                                          'Interner 8mhz Quarz
    
    
    '#####Ausgänge#####
    
    Config Portb = Output
    
    Rot Alias Portb.5                                           'Grüne LED an Portb.5
    Blau Alias Portb.4                                          'Rote LED an Portb.4
    Gruen Alias Portb.3                                         'Blaue LED an Portb.3
    
    
    
    '#####Deklarationen#####
    
    Dim Zurueck As Bit                                          'PWM rückwärts Bit
    Dim Helligkeit As Byte                                      'Helligkkeitswert
    Dim Weiter As Byte                                          'Byte für die nächste LED
    
    '###Hilfsbits und -bytes###
    
    Dim Ro1 As Bit
    Dim Bl1 As Bit
    Dim Gr1 As Bit
    
    
    '#####Timer#####
    
    Enable Interrupts
    
    Enable Timer0
    On Timer0 Int_timer0
    Config Timer0 = Timer , Prescale = 256
    
    
    Enable Timer1
    On Timer1 Int_timer1
    Config Timer1 = Timer , Prescale = 8
    
    Const Timervorgabe = 45536                                  'Vorgabewert von RNAVR Berechnet
    
    
    '#####Grundstellung bei Anlage Ein#####
    
    Weiter = 1
    Helligkeit = 3
    Zurueck = 0
    Ro1 = 0
    Bl1 = 0
    Gr1 = 0
    
    '#####Hauptschleife#####
    
    
    Do
    
    If Weiter = 1 Then
     Set Bl1
     Else
     Reset Bl1
    End If
    
    If Weiter = 2 Then
     Set Ro1
     Else
     Reset Ro1
    End If
    
    If Weiter = 3 Then
     Set Gr1
     Else
     Reset Gr1
    End If
    
    
    
    
    Loop
    
    '#####Hauptschleife Ende#####
    
    
    
    
    
    '#####Timer0 isr#####
    
    Int_timer0:
    
    
    '###Blau###
    
    
    If Bl1 = 1 Then Toggle Blau
    
    If Blau = 1 Then
     Timer0 = 256 - Helligkeit
    Else
     Timer0 = Helligkeit
    End If
    
    
    '###Rot###
    
    If Ro1 = 1 Then Toggle Rot
    
    If Rot = 1 Then
     Timer0 = 256 - Helligkeit
    Else
     Timer0 = Helligkeit
    End If
    
    
    '###Gruen###
    
    If Gr1 = 1 Then Toggle Gruen
    
    If Gruen = 1 Then
     Timer0 = 256 - Helligkeit
    Else
     Timer0 = Helligkeit
    End If
    
    
    Return
    
    
    
    '#####Timer1 isr#####
    
    Int_timer1:
    
    Timer1 = Timervorgabe                                       'Timervorgabewert von RNAVR berechnet
    
    If Weiter = 4 Then Weiter = 1
    
    If Helligkeit = 3 Then
    Reset Zurueck
    Incr Weiter
    End If
    
    If Zurueck = 0 Then Incr Helligkeit
    
    If Helligkeit = 255 Then Set Zurueck
    
    If Zurueck = 1 Then Decr Helligkeit
    
    
    Return
    
    End

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.07.2004
    Beiträge
    178
    Kann mir echt keiner helfen? Versuche schon seit vielen Stunden den Fehler zu finden, aber ich sehe da echt nichts falsches.

  3. #3
    1hdsquad
    Gast
    Ich werf mal nen Blick drauf, wenn ich Zeit habe (Referat in Geschichte )
    MFG

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    51
    Beiträge
    117
    hallo
    habe mal in deiner do-loop schleife die reset-befehle durch das
    jeweilige port ersetz
    z.b.
    reset bl1 durch portb.3 = 0
    okay habe nur einen 2313 mit 4mhz zum testen und von timer-ausrechnen
    leider noch keine ahnung(lerne gerade bascom).
    aber probiere mal was passiert.

    gruß

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    51
    Beiträge
    117

    lauffähig auf at90s2313 und mega8

    so,habe mich jetzt 2 tage damit beschäftigt und das ist rausgekommen.
    läuft auf einen 2313 aber auch auf deinem mega8.
    pass es dir an und sehe selbst.
    Angehängte Dateien Angehängte Dateien

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.07.2004
    Beiträge
    178
    sorry jungs tut mir leid das ich so lange nichts geschrieben habe, hatte kaum zeit und eh nicht mehr damit gerechnet das jemand antwortet. Werde mir das Programm mal ansehen und es anpassen.
    Wenn die Leiste dann läuft mache ich auch gerne Bilder.

    Danke!

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    51
    Beiträge
    117
    hallo habe dieses lauflicht auch noch um ein paar code zeilen erweitert mit einem nettem effekt.probiers mal aus.auf dem 2313 läuft es wunderbar nur auf dem mega 8 sind einige ports mit komischen verhalten,weiß nur noch nicht warum.
    gruß mike
    Angehängte Dateien Angehängte Dateien

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.07.2004
    Beiträge
    178
    Kannst du mir denn mal erklären, was das Lauflicht mit den erweiterten Funktionen genau machen soll? Werde es dann mal testen.

    Was ich nicht verstehe ist folgendes:

    Toggle Portb.i
    Toggle Portb.a

    was soll das i und das a da?

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    51
    Beiträge
    117
    erstmal zum ersten lauflicht, läuft es bei dir.
    zum 2. der port i und a sind die port die durchlaufen. dabei
    ist a der der hinterherläuft.nur sehe dir in der toogelschleife mal die
    a zeile an sie wird um eins gemindert.wenn du am ende des ports ankommst wird i und a wechseln gedimmt ,bis sie an bleiben.
    wie gesagt auf dem 2313 ist der effekt prima nur beim mega8 ist das nicht der fall.bin aber noch am experimentieren.wenn du die leds am port c anschliesst ist der effekt schon teilweise vorhanden. wenn ich wüsste wie ich ein video einstellen könnt würde ich es dir da mal zeigen.

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    24.12.2006
    Alter
    51
    Beiträge
    117
    in dem gepostetem programm habe ich alle ports vom mega8 mal aktiviert,ab besten läuft es aber nur auf portb.natürlich musst du die prescaler und teiler anpassen nach deinem quartz und so weiter.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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