Forum: Mikrocontroller und Digitale Elektronik ATiny2313 und PWM


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Johannes G. (Gast)


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


Bewertung
0 lesenswert
nicht lesenswert
um sich WAS anzuschauen?

von Johannes G. (Gast)


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

von Schwank (Gast)


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


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
okay, hier erstmal der Code:
#include <avr/io.h>

int main(void)
{
  pwm_init();

  OCR1AL = 10;
  OCR1BL = 50;

  while (1)
    ;
}

void pwm_init(void)
{
  DDRB = 0xff;

  TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<WGM10);

  TCCR1B = (1<<CS10);
}

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)


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


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


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

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.