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.