Probleme mit Ocr0a am Attiny2313

Gast #2852184
Lesenswert?

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
#2852749
Lesenswert?

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.

...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren