Compare1A geht, Compare1B geht nicht?

Gast #1856363
Lesenswert?

Hallo erst mal zusammen

Vor  einigen Wochen entschied ich mich endlich dazu, von C-Controll auf 
AVR um zu steigen!-Muss sagen, es hat sich gelont;)

Ich will mit einem AtTiny2313-20PU 4 LED ketten per PWM ansteuern!
Kette 1 (Compare1A) geht wunderbar! Aber mit den anderen geht nichts!

Ich habe das folgende Programm mit BASCOM geschrieben:


$regfile = "2313def.dat"
 $framesize = 32
 $swstack = 32
 $hwstack = 32
 $crystal = 14000000
 $baud = 9600

 Dim I As Integer

 Config Portb.1 = Output

 Portb.1 = 0

 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B 
Pwm = Clear Up , Prescale = 1
 Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Pwm = 
On , Compare B Pwm = Clear Up , Clear Timer 0

   Do
      Portb.1 = 0

      For I = 0 To 255 Step 1
         Pwm1a = I
         Pwm1b = I
         Pwm0a = I
         Pwm0b = I
         Waitms 10
      Next


      For I = 255 To 0 Step -1
         Pwm1a = I
         Pwm1b = I
         Pwm0a = I
         Pwm0b = I
         Waitms 10
      Next

       Portb.1 = 1

       Waitms 100


   Loop
 End


So lange ich nur PWM1a brauche geht es..jedes der 3 anderen Chanels 
bringt immer ERROR 46 mit sich!"Assignement ERROR"

Was mache ich falsch??

Noch eine 2 und letzte Frage:

Ich habe ein Byte, von dem mich nur der wert des 3 Bit interessiert!
Ich habe mir das so vorgestellt:

X|X|X|X|X|X|X|X|  Das ist die Variable
0|0|0|0|0|1|0|0|  Und das die Maske
0|0|0|0|0|X|0|0|  Und das das Resultat wenn man ein "Und" macht!
Dann abfrage ob = 4 oder nicht!

Wie kann ich das "UND" machen?? Oder gibt es eine einfachere Variante??

Mfg
Hans Dieter

P.s
Wenn Frage am Falschen Ort bitte Verschieben, ich bin neu hier!
Gast #1856414
Lesenswert?

Habe so ein ähnliches Problem entdeckt...bei timer2 muss man ocr2 
schreiben
warum weiss ich nicht, habe gerade auch gepostet..habe Atmega8

Wenn ich Compare beutze bei Timer2 geht nichts, schreibe ocr2 wird die 
LED gedimmt..sauber hoch und runter...

Config Timer2 = Pwm , Prescale = 1 , Compare Pwm = Clear Up , Pwm = On

Enable Timer2
Start Timer2

Dim A As Byte

Do
Ocr2 = A

A = A + 1

Waitms 10

Loop

End
Gast #1856457
Lesenswert?

@melt: Danke!! Hast du  (oder sonst wer) ein Beispiel dafür??

@Thomas Kiss: Auch Danke...war aber ein andere Blöder Fehler von MIR!

Aus $regfile = "2313def.dat" Mache $regfile = "attiny2313.dat" und es 
läuft!! Sry, das hatte ich übersehen!!

Jetzt nur noch das Problem mit dem 4ten Bit!

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