Forum: Mikrocontroller und Digitale Elektronik Compare1A geht, Compare1B geht nicht?


von Naturp (Gast)


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!

von melt (Gast)


Lesenswert?

Bascom kann man glaube ich Byte.Bitnummer schreiben, um ein Einzelbit zu 
kriegen.

von Thomas Kiss (Gast)


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

von Naturp (Gast)


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!

von Paul Baumann (Gast)


Lesenswert?

Resultat = Variable AND &B00000100

MfG Paul

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
Noch kein Account? Hier anmelden.