Timereinheiten des ATtiny84A

OP #3268553
Lesenswert?

Hallo!

Ich verwende den ATtiny84A und will folgendes damit machen:

Ich benötige 2 PWM Ausgänge, um jeweils 2 LEDs in Serie zu Dimmen (also 
insgesamt 4 LEDs). Diese LEDs sollte gleich hell leuchten, es sollten 
also beide PWM-Signale den gleichen DutyCycle ausweisen.

Das Datenblatt des ATtiny84A: http://www.atmel.com/Images/doc8183.pdf

Darin steht folgendes: One 8-bit and One 16-bit Timer/Counter with Two 
PWM Channels, Each

Wie kann ich das verstehen? heißt das, ich habe z.B. einen 8Bit 
Timer/Counter, den ich auf 2 verschiedene PWM-Kanäle anwenden kann? 
Können diese beiden dann GLEICHZEITIG angesteuert werden?

Ich benötige nämlich noch einen weiteren Timer, um das Gerät automatisch 
nach 2 Stunden auszuschalten, dann würde ich dafür den 16Bit Timer 
verwenden...

Vielen Dank für die Hilfe,
lG
#3268560
Lesenswert?

@ Daniel F. (dani1632)

>Darin steht folgendes: One 8-bit and One 16-bit Timer/Counter with Two
>PWM Channels, Each

>Wie kann ich das verstehen? heißt das, ich habe z.B. einen 8Bit
>Timer/Counter, den ich auf 2 verschiedene PWM-Kanäle anwenden kann?

Ja.

>Können diese beiden dann GLEICHZEITIG angesteuert werden?

Sicher.

>Ich benötige nämlich noch einen weiteren Timer, um das Gerät automatisch
>nach 2 Stunden auszuschalten, dann würde ich dafür den 16Bit Timer
>verwenden...

Kann man machen.
Gast #3268561
Lesenswert?

Hi

>Wie kann ich das verstehen? heißt das, ich habe z.B. einen 8Bit
>Timer/Counter, den ich auf 2 verschiedene PWM-Kanäle anwenden kann?

Ja.

>Können diese beiden dann GLEICHZEITIG angesteuert werden?

Was verstehst du unter 'gleichzeitig'?

MfG Spess
#3268564
Lesenswert?

Daniel F. schrieb:

> Ich benötige 2 PWM Ausgänge, um jeweils 2 LEDs in Serie zu Dimmen (also
> insgesamt 4 LEDs). Diese LEDs sollte gleich hell leuchten, es sollten
> also beide PWM-Signale den gleichen DutyCycle ausweisen.

Wozu dann 2 PWM-Einheiten des Tiny?

> Darin steht folgendes: One 8-bit and One 16-bit Timer/Counter with Two
> PWM Channels, Each
>
> Wie kann ich das verstehen?

Das du insgesamt 4 voneinander unabhängige PWM-EInheiten zur Verfügung 
hast.
2 Stück mit maximal einer 8-Bit PWM und
2 Stück mit maximal einer n-Bit PWM, wobei ich nicht weiß, ob n beim 
Tiny auch 16 sein kann. Aber 8, 9, und 10 gehen mit Sicherheit.

Wobei: ganz unabhängig sind sie nicht. Jeweils die beiden 8 Bit PWM und 
die n-Bit PWM müssen mit der gleichen PWM-Frequenz auskommen, weil sie 
ja jeweils auf einem Timer beruhen. Ist aber in der Praxis kein großes 
Problem.

> heißt das, ich habe z.B. einen 8Bit
> Timer/Counter, den ich auf 2 verschiedene PWM-Kanäle anwenden kann?
> Können diese beiden dann GLEICHZEITIG angesteuert werden?

Ja.

> Ich benötige nämlich noch einen weiteren Timer, um das Gerät automatisch
> nach 2 Stunden auszuschalten, dann würde ich dafür den 16Bit Timer
> verwenden...

Es ist allerdings auch nicht verboten, einen Timer für mehr als eine 
Sache zu benutzen.

Allerdings: Wenn deine 4 LED, wie du oben schreibst, sowieso alle gleich 
hell sein sollen, dann brauchst du ja sowieso nur eine einzige PWM 
dafür.
Gast #3268572
Lesenswert?

Daniel F. schrieb:

> Darin steht folgendes: One 8-bit and One 16-bit Timer/Counter with Two
> PWM Channels, Each
> Vielen Dank für die Hilfe,
> lG

"with two *channels*"
Meint zwei Känäle.
da steht da noch each, also jeder.

Sprich ein Timer kann zwei PWM Kanäle ansteuern und der andere kann 
jeweils 2 Kanäle mit einer anderen Zeiteinstellung ansteuern. dabei 
sind 2 Kanäle also an den 8 - Bit Timer gebunden und 2 Kanäle an den 16 
- Bit Timer. Macht jeweils 4 Kanäle insgesamt.

Also 8 - Bit Timer -> 2 PWM Kanäle + 16 Bit Timer -> weitere 2 Kanäle = 
4 Gesamt. In der Software kann man aber wahrscheinlich jeden Kanal noch 
mal extra Ansteuern, das müsste man dann in der Interrupt Routine machen 
(aber ich bin auch nicht so bewandert mit den PWM Funktionen!)
Gast #3268589
Lesenswert?

Daniel F. schrieb:
> Wow, danke für die schnellen Antworten!
>
> Heißt das, ich definiere meine 8bit PWM für einen Ausgang und schalte
> dann die beiden 2-LED-Serienschaltung mit je einem Vorwiderstand
> parallel an diesen einen Pin? Welchen Pin kann ich dann dafür verwenden?
>
> Thx

Das müsste im Datenblatt vermerkt sein, welche Pins, die PWM Ausgänge 
sind.
Gast #3268614
Lesenswert?

Auch wenn ich nicht verstehe, wozu 2 gleiche PWMs sinnvoll sind - Du 
musst ja sowieso einen Transistor, FET oder IGBT dahinter hängen - 
welcher sich auch bequem ein- bzw. ausschalten lässt. Aber dass könnte 
auch Dir einleuchten.

Das ein Zähler zwei modulierte Ausgänge betreiben kann hängt damit 
zusammen, dass er auch zwei Vergleichswerte (-register) hat. Völlig 
unabhängig läst dabei nur der jeweilige A-Wert programmieren.
#3268615
Lesenswert?

Daniel F. schrieb:
> Wow, danke für die schnellen Antworten!
>
> Heißt das, ich definiere meine 8bit PWM für einen Ausgang und schalte
> dann die beiden 2-LED-Serienschaltung mit je einem Vorwiderstand
> parallel an diesen einen Pin?

Im Prinzip ja.
Wenn der Strom in Summe dann schon grenzwertig wird, schaltet man eben 
noch einen Treibertransistor dazwischen, um den µC-Pin zu entlasten.

> Welchen Pin kann ich dann dafür verwenden?

Kommt drauf an, welchen Timer du dir ausgesucht hast (0 oder 1) und 
welchen PWM-Kanal du dafür benutzt (A oder B). Je nachdem heißt der dann 
OCR0A oder OCR0B bzw. OCR1A oder OCR1B.
Und welche physikalischen Pins das sind - sieht man in der Pinübersicht 
am Anfang des Datenblattes.
OP #3268707
Lesenswert?

OK, vielen Dank!

@amateur: Wenn der Strom klein genug ist, brauch ich keinen Transistor, 
oder? Also ich will so ca. 2-5mA durch die LEDs treiben, geht das auch 
ohne Transistor? Wo sehe ich den maximalen Ausgangsstrom des µC?

Deswegen will ich 2 gleich PWMs verwenden, damit ich an 2 Pins jeweils 2 
LEDs in Serie schalte... wenn ich die beiden Stränge parallel schalte, 
kann es ja sein dass der STrom zu hoch wird...

Ist das verständlich beschrieben oder habe ich einen komplett falsche 
Ansatz dafür?

@kbuchegg: Danke, wenn ich also den 8-Bit timer verwenden will, dann 
kann ich die beiden PINs PA7 und PB2 verwenden, um bei BEIDEN 2 LEDs mit 
einem Vorwiderstand anzuschließen, die dann mit dem gleichen PWM-Signal 
versorgt werden????

THX
#3268775
Lesenswert?

Daniel F. schrieb:

> @amateur: Wenn der Strom klein genug ist, brauch ich keinen Transistor,
> oder? Also ich will so ca. 2-5mA durch die LEDs treiben, geht das auch
> ohne Transistor? Wo sehe ich den maximalen Ausgangsstrom des µC?

Du scheinst noch nicht lange hier im Forum zu sein :-)
Denn die Antwort auf technische Fragen zu einem bestimmten µC lautet 
praktisch immer: im Datenblatt

Das ist deine Bibel! Die Antwort auf alle Fragen technischer Natur rund 
um deinen µC. Was da nicht drinnen steht, ist es auch nicht wert gewusst 
zu werden :-)


> Deswegen will ich 2 gleich PWMs verwenden, damit ich an 2 Pins jeweils 2
> LEDs in Serie schalte... wenn ich die beiden Stränge parallel schalte,
> kann es ja sein dass der STrom zu hoch wird...

Ein Pin eines Tiny84 kann 40mA an Strom treiben.
OK, wenn wir jetzt davon ausgehen, dass man nicht unbedingt bis ans 
Limit gehen sollte, bleiben immer noch so um die 30 übrig, die man 
bedenkenlos einsetzen kann.
OP #3268797
Lesenswert?

@seb: ich habe LEDs, die mit 5mA noch ausreichend leuchten werden (muss 
ich noch testen). Die LEDs müssen nämlich nicht unbedingt ganz hell 
leuchten!

@kbuchegg: Jap, richtig, bin Anfänger :)
Ok danke für die Info, das Datenblatt ist halt für nen Anfänger 
ziemlich... Bin wohl drübergeflogen, hab aber den maximalen Strom mit 
40mA nicht entdeckt...

Zwecks der LED-Schaltung: Ich habe gehört, dass es nicht so gut ist, 
LEDs parallel zu schalten, weil sie dann u.U. unterschiedlich hell 
leuchten?!
ich verwende eine µC Versorgungsspannung von 5V, die LEDs haben eine 
Vorwärtsspannung von 2 V. Meine Idee war es, 2 LEDs in Serie zu schalten 
mie einen Rv, an dem 1V abfällt. Insgesamt benötige ich jedoch 4 LEDs 
(also 2 Serienstränge mit je 2 LEDs) wie würdet ihr diese versorgen? Mit 
den beiden Pins PA7 und PB2 separat je einen Strang oder beide Stränge 
parallel an einen dieser Pins?!

Vielen Dank!
#3268826
Lesenswert?

Daniel F. schrieb:


> Zwecks der LED-Schaltung: Ich habe gehört, dass es nicht so gut ist,
> LEDs parallel zu schalten, weil sie dann u.U. unterschiedlich hell
> leuchten?!

Es ist dann nicht gut, wenn man 2 LED parallel schaltet, aber beide mit 
nur einem Vorwiderstand betreibt.
Wenn jede LED (in deinem Fall jeder LED-Strang aus 2 LED) seinen eigenen 
Vorwiderstand hat, gibt es keine Bedenken.


> mie einen Rv, an dem 1V abfällt. Insgesamt benötige ich jedoch 4 LEDs
> (also 2 Serienstränge mit je 2 LEDs) wie würdet ihr diese versorgen? Mit
> den beiden Pins PA7 und PB2 separat je einen Strang oder beide Stränge
> parallel an einen dieser Pins?!

Jeder Strang kriegt einen Vorwiderstand, beide Stränge parallel und an 
den Port-Pin
1
     +---------+      
2
     |         |           
3
     |         o------+----|<----|<----R----- Vcc
4
     |         |      |
5
     |         o      +----|<----|<----R----- Vcc
6
     |         |
OP #3268836
Lesenswert?

Vielen Dank! Das ist mir eine große Hilfe!
Eine Frage noch zur Polung:
In deiner Schaltung ist die Kathode am µC Pin, d.h. der Strom müsste in 
den µC hineinfließen. d.h. immer wenn beim PWM-Signal LOW zustand 
herrscht fließt STrom und die LED leuchtet. Im Fall des high zustandes 
ist die LED aus?!

Könnte man auch umgekehrt polen und die Kathode gegen Masse legen?

THX
#3268850
Lesenswert?

Daniel F. schrieb:
> Vielen Dank! Das ist mir eine große Hilfe!
> Eine Frage noch zur Polung:
> In deiner Schaltung ist die Kathode am µC Pin, d.h. der Strom müsste in
> den µC hineinfließen. d.h. immer wenn beim PWM-Signal LOW zustand
> herrscht fließt STrom und die LED leuchtet. Im Fall des high zustandes
> ist die LED aus?!
>
> Könnte man auch umgekehrt polen und die Kathode gegen Masse legen?

Könnte man.

Hast du denn die ganzen Übungen mit Leds nicht gemacht?
Also quasi die ersten "Hello Worlds" eines µC-Programmierers?
Das sind LED Ansteuerungen in allen möglichen Arten und Schattierungen. 
Mit Lauflicht und allem drum und drann?

Na, das kann ja noch heiter werden.
OP #3271737
Lesenswert?

Hallo!

Ich habe jetzt noch eine kleine Änderung durchzuführen, dazu eine Frage:

Den 16-Bit Timer will ich für interne Zwecke verwenden (mit 
Laufvariablen in der ISR usw...). Also bleibt noch der 8-Bit-Timer für 
die besprochene PWM.

Angenommen, ich will noch eine fünfte LED ansteuern, die gleich hell 
leuchten sollte. Allerdings sollte diese LED mit einer Frequenz von 2Hz 
blinken! Wie kann das realisiert werden? ich würde den parallelstrang 
mit den 4 LEDs an OCR0A hängen. Wenn ich die fünfte LED mit einem 
entsprechenden Vorwiderstand an OCR0B hänge, bekommt diese dann das 
gleiche PWM Signal, hab ich das richtig verstanden?

Wäre es nun möglich, diese fünfte LED an OCR0B mit eienr Frequenz von 
2Hz blinken zu lassen, die 2 LED-Stränge an OCR0A sollen jedoch durch 
leuchten!

Bitte um Hilfe! THX
#3271742
Lesenswert?

Daniel F. schrieb:

> Wenn ich die fünfte LED mit einem
> entsprechenden Vorwiderstand an OCR0B hänge, bekommt diese dann das
> gleiche PWM Signal, hab ich das richtig verstanden?

In der PWM-Frequenz - ja (aber die interessiert eigentlich nicht 
wirklich)
In der Helligkeit - nein.

Die Helligkeit kannst du mit OCR0B unabhängig von OCR0A einstellen.

> Wäre es nun möglich, diese fünfte LED an OCR0B mit eienr Frequenz von
> 2Hz blinken zu lassen,

OCR0B alle 0.5 Sekunde auf einen anderen Wert setzen.
Einmal 0, einmal denselben Wert wie in OCR0A

Die 0.5 Sekunden kannst du dir zb aus dem Timer 1 herleiten oder aber 
auch aus dem Timer 0 selber. Du kennst ja seine Durchlaufdauer. Nur weil 
der PWM macht bedeutet das ja nicht, das er zb keine Overflows mehr 
generiert. Und an die kannst du dich mit einer ISR hängen
OP #3271785
Lesenswert?

Ok das klingt super!

Jetz ist mir einiges klarer geworden...

Hab ich das jetzt richtig verstanden: Die beiden PWM-Kanäle OCR0A und B 
verwenden den gleichen Timer, deswegen haben sie auch die gleiche 
Frequenz. Die Helligkeit wird über den DutyCycle eingestellt. Da die 
beiden Kanäle ein eigenes Register (OCR0A und OCR0B) besitzen, kann 
dieser DutyCycle und damit die Helligkeit separat eingestellt werden?
#3271793
Lesenswert?

Daniel F. schrieb:
> Ok das klingt super!
>
> Jetz ist mir einiges klarer geworden...
>
> Hab ich das jetzt richtig verstanden: Die beiden PWM-Kanäle OCR0A und B
> verwenden den gleichen Timer, deswegen haben sie auch die gleiche
> Frequenz. Die Helligkeit wird über den DutyCycle eingestellt. Da die
> beiden Kanäle ein eigenes Register (OCR0A und OCR0B) besitzen, kann
> dieser DutyCycle und damit die Helligkeit separat eingestellt werden?

Ja

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