mikrocontroller.net

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


Autor: Naturp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: melt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bascom kann man glaube ich Byte.Bitnummer schreiben, um ein Einzelbit zu 
kriegen.

Autor: Thomas Kiss (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Naturp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Resultat = Variable AND &B00000100

MfG Paul

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.