Forum: Mikrocontroller und Digitale Elektronik Timereinheiten des ATtiny84A


von Hans F. (dani1632)


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

von Falk B. (falk)


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.

von spess53 (Gast)


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

von Karl H. (kbuchegg)


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.

von Seb (Gast)


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!)

von Hans F. (dani1632)


Lesenswert?

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

von Seb (Gast)


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.

von Seb (Gast)


Lesenswert?

Seb schrieb:
> n

PORT A laut Datenblatt.

von Seb (Gast)


Lesenswert?

Seb schrieb:
> Seb schrieb:
>> n
>
> PORT A laut Datenblatt.
1. Pin Configurations:

(PCINT7/ICP/*OC0B*/ADC7) PA7
(PCINT10/INT0/*OC0A*/CKOUT) PB2
(PCINT6/*OC1A*/SDA/MOSI/DI/ADC6) PA6
(ADC5/DO/MISO/*OC1B*/PCINT5) PA5

von amateur (Gast)


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.

von Karl H. (kbuchegg)


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.

von Hans F. (dani1632)


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

von Seb (Gast)


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?

Was für LEDs hasdt du?!

Normale LEDs werden mindestens mit 15 - 20 mA betrieben.

von Karl H. (kbuchegg)


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.

von Hans F. (dani1632)


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!

von Karl H. (kbuchegg)


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
     |         |

von Hans F. (dani1632)


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

von Karl H. (kbuchegg)


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.

von Seb (Gast)


Lesenswert?

Daniel F. schrieb:
> @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!
Die Helligkeit stellst du ja auch über die PWM ein... oO

von Hans F. (dani1632)


Lesenswert?

Hab das alles nur theoretisch durchgemacht, da merkt man sich alles 
nicht wirklich gut... ist mein erstes projekt...

Jap, aber die maximale helligkeit (Duty cycle 100%) muss auch nicht ganz 
hell sein, deswegen...

Vielen Dank für Eure Hilfe!!

von Hans F. (dani1632)


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

von Karl H. (kbuchegg)


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

von Hans F. (dani1632)


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?

von Karl H. (kbuchegg)


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

von Hans F. (dani1632)


Lesenswert?

Perfekt, vielen Dank!

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.