www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATiny2313 und PWM


Autor: Johannes G. (Gast)
Datum:

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

Autor: Schwank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
um sich WAS anzuschauen?

Autor: Johannes G. (Gast)
Datum:

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

Autor: Schwank (Gast)
Datum:

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

Autor: Johannes G. (Gast)
Datum:

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

Autor: Schwank (Gast)
Datum:

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.

Autor: Johannes G. (Gast)
Datum:

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?

Autor: Magnus Müller (Gast)
Datum:

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.