- LiFePO4 Speicher Test         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 22

Thema: Timer2 deaktiviren?

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    95
    Beiträge
    627
    Anzeige

    Praxistest und DIY Projekte
    aber - von 0-200 sind doch 201 Schritte: Dann sind das doch nur 55 oder?!
    ...

  2. #12
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    55
    Beiträge
    1.258
    Hallo TobiasBlome,

    Config Timer2 = Pwm , Compare Pwm = Clear Down , Prescale = 64
    OCR2 = Bytevariable

    Könnte ich ZUSÄTZLICH trotzdem noch zb. On Timer1 Timer1_irq benutzen?
    ich fürchte nicht.

    von 0-200 sind doch 201 Schritte:
    nein, 200 Schritte sind das, zähl sie ruhig nach .
    Und von 200 bis zum Überlauf (256=0) sind es noch 56

    Gruß, Michael

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    95
    Beiträge
    627
    Tja...würdest du denn die Hardware PWM in meinem Fall benutzen?

    ich möchte noch eine Variable von 0-255 und zurückzählen lassen(wegen dem Überblenden der einzelnen Farben).
    ...

  4. #14
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    55
    Beiträge
    1.258
    Hallo TobiasBlome,

    würdest du denn die Hardware PWM in meinem Fall benutzen?
    ja logo, ich habe es bereits gemacht

    Gruß, Michael
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken lila.jpg   gruen.jpg   blau.jpg  

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    95
    Beiträge
    627
    das sieht doch gut aus

    aber die Frage war ja auf mich bezogen? wenn du keine IR-FB hast dann hast du ja auch einen freien Timer

    Aber ich denke ich probier das mal mit dem Timer2 mit dem Argument, dass der ja nur eine PWM hat

    gruß, Tobi
    ...

  6. #16
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    55
    Beiträge
    1.258
    Hallo TobiasBlome,

    wenn du keine IR-FB hast dann hast du ja auch einen freien Timer
    verstehe nicht.
    Timer0 = RC5
    Timer1A = PWM1
    Timer1B = PWM2
    Timer2 = PWM3

    Gruß, Michael

  7. #17
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    95
    Beiträge
    627
    Zitat Zitat von Michael

    verstehe nicht.
    Timer0 = RC5
    Timer1A = PWM1
    Timer1B = PWM2
    Timer2 = PWM3
    genau - nun sind 3 Timer in Benutzung. Nun benötige ich doch noch einen 4. timer um Übeblendeffekte zwischen den Farben zu machen - oder?

    (deswegen ja die Frage ob man nun zusätzlich noch z.b. Timer2irq aufrufen kann, um eine Variable von 0-255 zu zählen und natürlich wieder runter )
    ...

  8. #18
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    55
    Beiträge
    1.258
    Hallo TobiasBlome,

    Nun benötige ich doch noch einen 4. timer um Übeblendeffekte zwischen den Farben zu machen - oder?
    Achso, ich dachte, das machst du mit Zähler und Pause im Hauptprogramm.

    ob man nun zusätzlich noch z.b. Timer2irq aufrufen kann,
    probier es doch aus und berichte

    Gruß, Michael

  9. #19
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    95
    Beiträge
    627
    Also: zusätzliche TimerXirq aufrufen klappt bei mir nicht... sind die Timer wohl nicht für ausgelegt...?
    --
    Das Programm habe ich nun auf Hardware PWM umgeschrieben.
    Das merkwürdige: Mit den internen 8MHz läuft das Programm. Mit den externen 16MHz läuft es nicht mehr.
    Jemand eine Idee?
    (ich wollte noch ein paar funktionen hinzufügen und dafür reichen die 8MHz nicht - deswegen auf 16MHz - dachte ich so....)

    Gibt es statt der Case-Anweisung eine µC freundlichere Möglichkeit?

    gruß, Tobi

    Code:
    'RGB - LED - Leiste über AT-Mega8
    'mit HARDWARE - PWM
    'Tobias Blome - 13.01.2008
    '
    '-------------------------------------------------------------------------------
    'INFO´s
    
    
    'PWM_Wert = Sollwert für Software PWM
    
    'RC5 Eingang über Pin5 / PD3
    
    'Led Rot  = Portb.1 = 1
    'Led Grün = Portb.2 = 1
    'Led Blau = Portb.3 = 1
    
    'Auswahl = 1 -> Rot+Grün
    'Auswahl = 2 -> Grün+Blau
    'Auswahl = 3 -> Blau+Rot
    
    '-------------------------------------------------------------------------------
    'Version 0.01
    '  -Grundfunktion Regenbogen ok
    '
    '
    '-------------------------------------------------------------------------------
    'Konfiguration µC:
    $regfile = "m8def.dat"                                      'AT-Mega32
    $crystal = 8000000                                          'Quarz: 8 MHz intern
    $baud = 9600                                                'Baudrate definieren
    
    
    '-------------------------------------------------------------------------------
    'Timer0 = 8 Bit
    'wird für RC5 Auswertung benötigt!!!
    Config Rc5 = Pind.3                                         'Timer0 in Benutzung!!!
    Portd.3 = 1
    
    'Timer1 = 16 Bit
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 256
    Enable Interrupts
    
    'Timer2 = 8 Bit SOFTWARE - PWM
    Config Timer2 = Pwm , Compare Pwm = Clear Up , Prescale = 256
    Enable Interrupts
    '-------------------------------------------------------------------------------
    'Variablen:
    '-------------------------------------------------------------------------------
    Dim Address As Byte , Command As Byte                       'RC5
    Dim Flag As Bit                                             'RC5
    
    Dim Rot As Byte , Gruen As Byte , Blau As Byte
    
    Dim Programm As Byte                                        'Lichtprogramm wählen
    
    Dim Auswahl As Byte                                         'Wert 1-6 um die PWM auf die LED´s aufzuteilen
    
    Dim Pwm As Byte
    Dim Pwm_m As Bit
    
    'Tasten festlegen
    Up Alias 32                                                 'Prog.Bezeichnung ALIAS Real Taste
    Down Alias 33
    Progplus Alias 16                                           'Lichtprogramm wählen
    Progminus Alias 17
    
    
    '-------------------------------------------------------------------------------
    'Vor Programmstart:
    Rot = 0
    Gruen = 0
    Blau = 0
    
    Flag = 1                                                    'Merker für PWM
    Programm = 1                                                'Lichtprogramm wählen
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
    'Hauptprogramm Do...Loop
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
    
    Do
    Compare1a = Rot
    Compare1b = Gruen
    Ocr2 = Blau
    
    '-------------------------------------------------------------------------------
    'Rc5 Code einlesen:
    Getrc5(address , Command)
       If Flag = 1 Then
    
      'Print "wait for command"
         Flag = 0
       End If
       If Address <> 255 Then
         Reset Command.7                                        ' reset toggle bit
    
         ''Print "Address: " ; Address
         'Print "Command: " ; Command
         Flag = 1
       End If
    
    '-------------------------------------------------------------------------------
    'RC5 Code umsetzen:
    
    'Lichtprogramm Wählen
    If Command = Progplus Then
       If Programm = 6 Then
       Programm = 1
       Else
       Incr Programm
       End If
    Waitms 200
    End If
    
    If Command = Progminus Then
       If Programm = 1 Then
       Programm = 6
       Else
       Decr Programm
       End If
    Waitms 200
    End If
    
    '-------------------------------------------------------------------------------
    'LED-PAAR auswählen (Handbetrieb)
    'Auswahl 1 über FB LED Rot und Grün
    If Command = 1 Then
    Auswahl = 1
    End If
    
    'Auswahl 2 über FB LED Grün und Blau
    If Command = 2 Then
    Auswahl = 2
    End If
    
    'Auswahl 3 über FB LED Blau und Rot
    If Command = 3 Then
    Auswahl = 3
    End If
    
    '-------------------------------------------------------------------------------
    'Springe zu Lichtprogramm
    
    
    If Programm = 1 Then
    Gosub Regenbogendauer
    End If
    
    
    
    Loop
    
    End
    '===============================================================================
    
    '===============================================================================
    Regenbogendauer:
    
    If Pwm = 255 Then                                           'Wenn Led1 100% dann Merker zum hochzählen setzen
    Pwm_m = 0
    Incr Auswahl                                                'LED´s durchschieben
    End If
    
    If Pwm = 0 Then                                             'Wenn Led1 0% dann Merker zum runterzählen setzen
    Pwm_m = 1
    Incr Auswahl                                                'LED´s durchschieben
    End If
    
    If Auswahl = 7 Then                                         'Auswahl auf 6 LED-Paaren begrenzen
    Auswahl = 1
    End If
    
    
    'PWM hoch/runter zählen
    If Pwm_m = 1 Then
    Pwm = Pwm + 5
    End If
    
    If Pwm_m = 0 Then
    Pwm = Pwm - 5
    End If
    
          Select Case Auswahl                                   'LED Paar wählen
    
                Case 1 : Rot = Pwm
                         Gruen = 255 - Pwm
                         Blau = 0
                Case 2 : Rot = Pwm
                         Gruen = 0
                         Blau = 255 - Pwm
                Case 3 : Rot = 0
                         Gruen = Pwm
                         Blau = 255 - Pwm
                Case 4 : Rot = 255 - Pwm
                         Gruen = Pwm
                         Blau = 0
                Case 5 : Rot = 255 - Pwm
                         Gruen = 0
                         Blau = Pwm
                Case 6 : Rot = 0
                         Gruen = 255 - Pwm
                         Blau = Pwm
           End Select
    
    
    Return
    
    
    '-------------------------------------------------------------------------------
    'Sprungmarken
    '-------------------------------------------------------------------------------
    
    
    
    
    
    '===============================================================================
    'Pinbelegung µC     RGB LED Leiste
    '===============================================================================
    '    AT MEGA 8
    '    +---U---+
    'PC6 +1    28+ PC5
    'PD0 +2    27+ PC4
    'PD1 +3    26+ PC3
    'PD2 +4    25+ PC2
    'PD3 +5    24+ PC1
    'PD4 +6    23+ PC0
    'Vcc +7    22+ GND
    'GND +8    21+ AREF
    'PB6 +9    20+ AVCC
    'PB7 +10   19+ PB5  /PROG
    'PD5 +11   18+ PB4  /PROG
    'PD6 +12   17+ PB3  /PROG
    'PD7 +13   16+ PB2
    'PB0 + 14 15 + Pb1
    '    +-------+
    
    
    'PB0 =
    'PB1 = Software PWM LED ROT
    'PB2 = Software PWM LED GRÜN
    'PB3 = Software PWM LED BLAU
    'PB4 =
    'PB5 =
    'PB6 =
    'PB7 =
    'PC0 =
    'PC1 =
    'PC2 =
    'PC3 =
    'PC4 =
    'PC5 =
    'PC6 = RESET
    'PC7 =
    'PD0 =
    'PD1 =
    'PD2 =
    'PD3 = IR - RC5 Eingang
    'PD4 =
    'PD5 =
    'PD6 =
    'PD7 =
    ...

  10. #20
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    55
    Beiträge
    1.258
    Hallo TobiasBlome,

    Also: zusätzliche TimerXirq aufrufen klappt bei mir nicht... sind die Timer wohl nicht für ausgelegt...?
    seltasm, bei mir funktioniert es

    Code:
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 64
    Enable Timer1
    On Timer1 Timer_irq
    Enable Interrupts
    
    ''Hauptprogramm mit Compare1a usw.
    
    Timer_irq:
    Bla = Bla + 1
    If Bla > 488 Then
    Toggle Led1
    Bla = 1
    End If
    Return
    Durch die PWM = 8 (Bit) läuft der Timer bei 512 über. Bei 16 MHz und einem Prescaler von 64 macht das (16000000/(512*64))=488,28125 Hz Timerfrequenz.
    Die LED toggelt fast im Sekundentakt.

    Gruß, Michael

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test