Wer kann mir verraten, wie ich im Datenblatt des ATtiny44 herausfinde, welche Pins ich als PWM Pins verwenden kann und welche Pin-Nummer ich in meinem Arduino script verwenden muss. Laut dem Bild auf der Seite http://fluuux.de/2012/09/programmieren-eines-attiny-mit-arduino-1-0-1/ sind die Positionen 5,6,7,8 (Wenn man die Anschlüsse durchzählt) als PWM Ausgänge zu gebrauchen. In meiner Arduino IDE habe ich mit Position 8 = Pin5 = PA5 erfolg gehabt. Hier sind die Pins zu sehen, wie sie auch im Datenblatt stehen: http://www.wvshare.com/img/pinout/ATtiny44_l.jpg Danke, Kai
Warum nicht ins Datasheet schauen? Aber: PIN A5 (Pos.8) A6 (Pos. 7) PWM Timer1 PIN A7 (Pos. 6) B2 (Pos. 5) PWM Timer0 also ja, das sind die PWM fähigen Ausgänge. Ob die alle zu gebrauchen sind hängt von deinen Anforderungen ab ...
Hi >Wer kann mir verraten, wie ich im Datenblatt des ATtiny44 herausfinde, >welche Pins ich als PWM Pins verwenden kann .... Datenblatt->Pin Configurations Die PINs, bei denen OCnx dran steht. n Nummer des zugehörigen Timers x PWM Kanal >und welche Pin-Nummer ich in meinem Arduino script verwenden muss. Schaltplan deines Arduinos. MfG Spess
Dazu weitere Details: Timer0 "nur" 8-Bit PWM Timer1 16 Bit Es gilt immer beide Ausgänge nur verwendbar wenn es dir reicht das Sie gleiche Freq. haben, welche nur durch den Prescaler bestimmt wird (setzen eines variablen TOP Werts nicht möglich. -> Beide == Einschränkungen Frequenzwahl und Frequenz gleich, Pulsweite einstellbar Also maximal 2 völlig frei konfigurierbare PWM-Ausgänge
squirrel schrieb: > Also maximal 2 völlig frei konfigurierbare PWM-Ausgänge Oder 11 (maximal 12), wenn man Soft-PWM verwendet. Das hängt aber von den genaueren Anforderungen an die PWM-Frequenz und Auflösung ab. Ach so, wenn es eine neuere Entwicklung wird, vielleicht besser die aktuelle Version verwenden: ATtiny44A.
Hi >Dazu weitere Details: >Timer0 "nur" 8-Bit PWM >Timer1 16 Bit Mit der Aussage wäre ich vorsichtig. Das mag vielleicht für die paar AVRs gelten, die in Arduino und Co verpackt aufschlagen aber nicht generell für AVRs. MfG Spess
Hallo und vielen Dank für die Beiträge. Das hat mir weitergeholfen. Grüße, Kai
Hallo zusammen, ich bin gerade dabei etwas in die Welt der µC abzutauchen und stehe bereits jetzt vor meinem ersten Problem.... Benutze auch einen Attiny44a und die Arduino IDE um eine RGB Led damit zu betreiben. Leider funktionier das nicht ganz so wie ich mir das vorstelle... R -> OC1A G -> OC0B B -> OC1B Wenn ich Rot und Blau mische, ist alles wie gewollt. Wenn ich allerdings versuche Grün mit einer anderen Farbe zu mischen, dann bekomme ich einen Farbwechsel der immer zB zwischen Rot und Orange wechselt. Die CKDIV8-Fuse habe ich bereits mit einem Atmel- ISP Programmer deaktiviert. Kann mir vieleicht jemand einen Rat geben wie ich mit der Arduino IDE die PWM Settings gleich setzen kann? Gruß und danke im Voraus
Ich würde mal sagen dein Timer0 ist zu langsam konfiguriert. Wie man das in der Frickel-Arduino-IDE ändert weiß ich nicht in reinem C müsste man in TCCR0B mit den CS Bits die rechte Quelle wählen und (je nach Modus) die (evtl.) von OCR0A gegebene Obergrenze absenken. Ich hab aber mal iwas gehört, der ardu würde timer0 für eine art systick verbraten. Sollte das so sein stehst du natürlich da....
häng mal bitte deinen Code an. Ich denk es liegt am Timer0 ist nur 8bit und der Rest 16bit.
Danke für die promte Antwort... Hier der Code... #define redPin 6 #define greenPin 7 #define bluePin 5 #define GruppeA 3 #define GruppeB 0 #define GruppeC 1 #define GruppeD 2 void setup() { // Pin Konfiguration DDRA = B11101111; PORTA = B00000000; Ich habe mit TCCR1A = (1<<CS11); TCCR1B = (1<<CS11); versuch den Timer 1 zu achteln. Das Ergebnis war etwas besser, aber immer noch ein ständiger Farbwechsel??? } void loop() { setColor(190, 100, 0); digitalWrite(GruppeA, 1); digitalWrite(GruppeB, 1); digitalWrite(GruppeC, 1); digitalWrite(GruppeD, 1); } void setColor(int red, int green, int blue) { analogWrite(redPin, red); analogWrite(greenPin, green); analogWrite(bluePin, blue); }
Bin halt noch ein Anfänger. Bin jetzt davon ausgegangen das ich den Timer 1 und Timer 0 gleichsetze, da der Timer 0 ja eh ein 8Bit Timer ist???
Hi >Ich habe mit > TCCR1A = (1<<CS11); > TCCR1B = (1<<CS11); >versuch den Timer 1 zu achteln. Das Ergebnis war etwas besser, aber >immer noch ein ständiger Farbwechsel??? CS11 befindet sich nur in TCCR1B. In TCCR1A befindet sich an gleicher Bitstelle WGM11. Mit der Anweisung stellst du PWM, Phase Correct, 9-bit ein. MfG Spess
Max D. schrieb: > Und wo konfigurierst du timer0 ? Deshalb sollte er ja das Programm dran hängen. Nun raten wir, ich kaufe ein T.
Hallo Spess, leider verstehe ich Deine Aussage nicht so ganz??? Kannst Du es für mich vieleicht etwas umformulieren? @Steffen Den Code habe ich doch hinzugefügt???
Nimm doch bitte einfach reines C.
Mit avrdude kannst du trotzdem einfach weiter die arduino hw
beschreiben.
Bei Konstrukten wie:
> analogWrite(bluePin, blue);
Rollen sich jedem C-Vertrauten die Zehennägel auf.
Dadurch, dass Arduino so viele Funktionen und events hinter
vereinfachenden Funktionen versteckt geht die Logik total drauf.
Die Auswirkungen spürst du grade selber. Wenn man mehr will als ein paar
Lichter blinken zu lassen muss man gezwungenermaßen direkt mit der HW
reden und dann kommt soetwas raus wie bei dir.
Habe jetzt nochmal folgende Einstellung getroffen -> TCCR1B = (1<<CS02); jetzt scheint es zu funktionieren.... Oder habe ich mir jetzt ein anderes Ei gelegt???
Irgendwie fehlt immernoch jedwede Einstellung für TIMER0 . Nachdem deine LED ja trotzdem nicht dunkel ist, scheint es so als ob die Arduino IDE diesen Timer irgendwie initialisiert. Es wird hier aber keiner wissen welche Einstellungen die dabei vornimmt. Hättest du richtiges C wärst du gezwungen Timer0 auch richtig zu initialisieren, dann könnte man dir auch sagen was genau der macht.
Troztem danke schon mal für Deine Antworten. Arduino wollte ich als Einstieg in die µC Welt nutzen. Natürlich möchte ich das auch bald ändern. Unter den Arduino Dokus für den Attiny44A werden auch nur 2 PWM angegeben. Welche meiner Meinung nach auch eine standart Einstellung erhalten...
Kann man überhaupt beide Timer nutzen? Die Failduinos brauchen doch immer einen Timer für irgendwelches internes geraffel.
Jetzt habe ich auf jedenfall kein Problem mehr... Also würde ich sagen "Ja"...
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.