Moin ich habe ein Problem mit dem Ocr0a an PB2 ich kann da keine Spannug messen :-( egal was ich drauf schreibe....Kann mir wer helfen? Lars CODE: $regfile = "attiny2313.dat" $crystal = 8000000 $hwstack = 32 $swstack = 10 $framesize = 40 Config Portb.0 = Input Config Pinb.2 = Output 'Die PWM-Pins als Output definieren Config Pinb.3 = Output 'Die PWM-Pins als Output definieren Config Pinb.4 = Output 'Die PWM-Pins als Output definieren 'Die Timer auf PWM-Modus stellen 'Die PWM-Register haben eine Breite von 8 Bit - also Werte von 0 bis 255 'Wobei 0 = 0% Helligkeit und 255 = 100% Helligkeit bedeuten Config Timer0 = Pwm , Pwm = On , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'Die Timer starten Enable Timer0 Enable Timer1 'Interessanterweise MUSS man für OC2 Enable benutzen, sonst passiert nix! Start Timer0 Start Timer1 'Die PWM-Register zuweisen Led1 Alias Ocr1bl 'PWM-Pin 1 - Red Led2 Alias Ocr1al 'PWM-Pin 2 - Green Led3 Alias Ocr0a 'PWM-Pin 3 - Blau 'ein Paar Variablen Deklarieren Dim Color_delay As Byte Dim Color_stop As Byte Dim Rgb As Byte Dim W As Word Dim Flanke As Bit Dim Zaehler As Byte 'Startwert für die Schleife Rgb = 0 'Farbwechsel Geschwindigkeit pro Schritt (empfohlen 1-15) 1=schnell 15=langsam Color_delay = 10 'Dauer der Pause bei der Grundfarbe (empfohlen 1-10) Color_stop = 2 'Alles auf 0 Flanke = 0 Zaehler = 0 'Do.......loop Do 'Messen der Zeit Pulsein W , Pinb , 0 , 1 'Auswerten If W <= 150 And Flanke = 0 Then If Zaehler >= 5 Then Zaehler = 0 End If Flanke = 1 End If If W >= 160 And W <= 200 And Flanke = 1 Then Incr Zaehler Flanke = 0 End If Select Case Zaehler Case 1: Led1 = 255 Led2 = 0 Led3 = 0 Case 2: Led1 = 0 Led2 = 255 Led3 = 0 Case 3: Led1 = 0 Led2 = 0 Led3 = 255 Case 4: Led1 = 255 Led2 = 255 Led3 = 255 Case Else : Led1 = 0 Led2 = 0 Led3 = 0 End Select Loop End
Vergiss "Config Timer...", das funktioniert nicht bei allen AVRs. Nimm lieber das Datenblatt, schau Dir die Timer-Register an und setze die darin befindlichen Bits durch stinknormale Zuweisungen. Bascom kennt die im Datenblatt verwendeten Namen der Register und ihrer Bits. Und mit der Anweisung "Bits" kannst Du auch sehr verständlichen (lesbaren) Code schreiben. ...
Salllos schrieb: > Config Timer0 = Pwm , Pwm = On , Prescale = 1 , Compare A Pwm = Clear > Down , Compare B Pwm = Clear Down > Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear > Down , Compare B Pwm = Clear Down Du hast das nicht zufällig von http://www.ledstyles.de/ftopic11776.html gemopst? Was ist das denn für eine Auflösung für den Timer 1???
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.