Forum: Mikrocontroller und Digitale Elektronik ATiny2313 und PWM


von Johannes G. (Gast)


Lesenswert?

Hallo,
ich hab gerade ein problem..
Laut Datenblatt hat der ATiny2313 4 PWM "Kanäle": OC0A, OC0B, OC1A, OC1B
Hat einer vllt mal ein kleines Codebeispiel in C? Weil da komm ich im 
Moment irgendwie nicht so recht weiter... OC1A/OC1B funktionieren, aber 
irgendwie häng ich nun.
Wär echt nett wenn mal jemand Zeit hätte um sich das anzuschauen. Das 
ganze ist für eine RGB-LED Matrix... ;)

Viele Grüße,
   Johannes

von Schwank (Gast)


Lesenswert?

um sich WAS anzuschauen?

von Johannes G. (Gast)


Lesenswert?

"Hat einer vllt mal ein kleines Codebeispiel in C?"
Sorry, hab ich etwas komisch formuliert...

von Schwank (Gast)


Lesenswert?

Da kannst du doch einfach in der codesammlung oder im avr gcc tutorial 
gucken!?
alternativ beschreiben, was du nicht verstehst / wo das problem ist
ggf. zusätzlich dein programm hier reinstellen

von Johannes G. (Gast)


Lesenswert?

Hallo,
okay, hier erstmal der Code:
1
#include <avr/io.h>
2
3
int main(void)
4
{
5
  pwm_init();
6
7
  OCR1AL = 10;
8
  OCR1BL = 50;
9
10
  while (1)
11
    ;
12
}
13
14
void pwm_init(void)
15
{
16
  DDRB = 0xff;
17
18
  TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<WGM10);
19
20
  TCCR1B = (1<<CS10);
21
}

Soweit geht ja auch alles...
Nur wie spreche ich die PWM Kanäle OC0A und 0C0B an? Das schaffe ich 
eben nicht...

von Schwank (Gast)


Lesenswert?

Gehören die nicht zum 8 bit Timer 0 ?

Als ich vor einiger Zeit was mit dem t2313 gemacht habe, waren im 
Datenblatt ziemliche viele Bezeichnungen durcheinandergebracht, also gut 
aufpassen, dass da kein Quatsch steht.

von Johannes G. (Gast)


Lesenswert?

Ich hab gerade mal im Datenblatt nachgeschaut, das ist ein 8bit Timer...
hm.. Kann man mit dem überhaupt ein 10bit PWM Signal erzeugen?

von Magnus Müller (Gast)


Lesenswert?

Tja, Timer1 ist eben Timer1 und Timer0 und Timer0 ist eben Timer0. Du 
musst Timer1 und Timer0 halt separat programmieren / initialisieren.

Register von Timer 1 (16Bit):

   TCCR1A
   TCCR1B
   TCCR1C
   TCNT1H und TCNT1L
   OCR1AH und OCR1AL (zusammengefasst: OCR1A)
   OCR1BH und OCR1BL (zusammengefasst: OCR1B)
   ICR1H und ICR1L   (zusammengefasst: ICR1)


Register von Timer 0 (8Bit):

   TCCR0A
   TCCR0B
   TCNT0
   OCR0A
   OCR0B

Gruß,
Magnetus

[Edit]
Nein, man kann mit Timer0 keine 10Bit-PWM realisieren.
[/Edit]

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.