-
        

Ergebnis 1 bis 2 von 2

Thema: Software PWM geht mit AT90S2313 und mit ATtiny2313 nicht???

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627

    Software PWM geht mit AT90S2313 und mit ATtiny2313 nicht???

    Anzeige

    Hallo,
    ich habe 2 LED´s die per Software PWM angesteuert werden. Af dem alten AT90S2313 läuft das Programm. Nun brauche ich das gleiche für ein anderes Projekt, und da es den nicht ehr gibt, habe ich den ATtiny2313 genommen. Leider läuft hier das Programm nicht - genauer gesagt die LED´s dimmen nicht langsam hoch, sonder sie flacker langsam hoch!

    Kann mir jemand sagen wo hier der Timer0 Überlauf festgelegt wird um die PWM Steuerung zu beschleunigen?

    Tobias

    Programm

    'Konfiguration µC:
    '$regfile = "2313def.dat" 'AT90S2313-Deklarationen
    $regfile = "ATtiny2313.dat" 'ATtiny2313-Deklarationen
    $crystal = 3686400 'Quarz: 3.6864 MHz

    'Timer konfigurieren, Vorteiler auf 1 ist gut fürs Simulieren (evtl. anpassen, dann aber ausgang mit R-C Tiefpass)
    Config Timer0 = Timer , Prescale = 1 'Teiler
    Config Timer1 = Timer , Prescale = 8
    Enable Timer0 'timer einschalten
    Enable Timer1
    On Timer1 Ledcount 'Unteprogramm aufrufen
    On Timer0 Pwm_prog
    Enable Interrupts 'interrupts einschalten


    'Ein-/Ausgänge:
    Config Pinb.2 = Output
    Config Pinb.3 = Output 'Port B = Ausgang



    'Variablen

    Dim R As Byte
    Dim B As Byte
    Dim Z As Word

    Dim Ri As Byte ' Hilfsregister
    Dim Bi As Byte

    Dim Led1 As Byte
    Dim Led1m As Byte 'LED1 Merker
    Dim Led2 As Byte
    Dim Led2m As Byte


    Z = 0 'Zähler Z auf NULL stellen
    Led1 = 255 'LED startet mit hell

    Do
    R = Led1
    B = Led2


    Loop


    Pwm_prog: 'PWM Takt über Timer0

    If Z = 0 Then 'Gewünschte Ausgabewerte an
    Ri = R 'Hilfsregister übergeben
    Bi = B
    Z = 255
    End If

    Z = Z - 1

    If Ri > 0 Then 'R > Port B.0
    Portb.3 = 1 'bei R = 51 wird hier
    Else 'Port B.0 51 mal auf 1
    Portb.3 = 0 'und 205 mal auf 0 geschaltet
    End If 'das ergibt bei 5V Ub im Mittel

    Ri = Ri - 1 ' ca. 1 V
    If Ri = 255 Then Ri = 0


    If Bi > 0 Then
    Portb.2 = 1 'B > Port B.2
    Else
    Portb.2 = 0
    End If
    Bi = Bi - 1
    If Bi = 255 Then Bi = 0

    Return


    Ledcount: 'Farbwechsel über Timer1

    Timer1 = 50000 'LED´s wechseln die Farbe mit ca 30 Hz



    If Led1 = 255 Then
    Led1m = 0
    End If

    If Led1 = 0 Then
    Led1m = 1
    End If

    'Zähler1 hoch/runter
    If Led1m = 1 Then
    Incr Led1 'um 1 hochzählen
    End If

    If Led1m = 0 Then
    Decr Led1 'um 1 runterzählen
    End If


    '-------
    If Led2 = 255 Then
    Led2m = 0
    End If

    If Led2 = 0 Then
    Led2m = 1
    End If

    'Zähler1 hoch/runter
    If Led2m = 1 Then
    Incr Led2 'um 1 hochzählen
    End If

    If Led2m = 0 Then
    Decr Led2 'um 1 runterzählen
    End If


    Return

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    Hallo,
    hat sich erledigt,
    es sind noch Funktionen dazu gekommen und nun schafft der µC das nicht mehr mit software PWM!

    Also werde ich wohl einen neuen Threat aufmachen, denn ich habe noch nichts mit PWM gemacht...

    Tobias

Berechtigungen

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