www.mikrocontroller.net

Forum: Compiler & IDEs 16bit PWM mit ATMega 162


Autor: Bandit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich bins wieder.
ich verzweifel grad an nem 16bit PWM.
Hier erstmal mein Code zur initialisierung:

  TCCR1A |= (1 << WGM11);
  TCCR1A |= (1 << COM1A0);
  TCCR1A |= (1 << COM1A1);
  TCCR1A |= (1 << COM1B0);
  TCCR1A |= (1 << COM1B1);
  TCCR1B |= (1 << WGM13);
  TCCR1B |= (1 << CS11);
  OCR1A = 0;
  OCR1B = 0;
  ICR1 = 0xffff;

Also wie man hoffentlich an den Einstellungen sieht soll er bis ICR1
hochzählen (0xffff) und beim compare die Ausgänge OC1A und OC1B
setzten, bzw rücksetzten.
DIe beiden Register OCR1A und OCR1B werden später im Programm noch auf
einen höheren Wert gesetzt (0x7530). Da ich schon nen Display am MC am
laufen habe, habe ich mir mal die beiden OCR Register und das TCNT1
anzeigen lassen und das sieht ganz gut aus. Also der TCNT1 läuft bis
0xffff hoch und dann wieder runter... Aber warum werden nun nicht die
Ausgänge gesetzt?

Danke schon mal,
Bandit

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

haste die entspechenden I/O Pins auch als Ausgang deklaiert?
Globale Intterupts nicht aktiviert?

zumindest muss man da bei Bascom draufachten .

Mfg

Dirk

Autor: Bandit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, super, das wars. Hätten se auch ruhig in das Datenblatt mit
reinschreiben können (Oder hab ichs überlesen?).
Na ja, funzt jetzt jedenfalls.

Thx für den Tip

Autor: Stefan Seegel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An was lags denn jetzt ?

Interrupts oder Ausgang nicht gesetzt ?

Wär schön wenn die Fragesteller bei Lösung des Problems das immer noch
posten würden, dann haben auch andere was davon...

MfG
Stefan

Autor: Bandit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also es lag bei mir daran, das ich die entsprechenden Pins nicht als
Ausgang deklariert habe. Ich dachte das würde der von alleine machen,
da man ja sonst recht wenig damit anfangen kann.

cu,
Frank

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz davon abgesehen:

  TCCR1A |= (1 << WGM11);

  TCCR1A |= (1 << COM1A0);

  TCCR1A |= (1 << COM1A1);

  TCCR1A |= (1 << COM1B0);

  TCCR1A |= (1 << COM1B1);

  TCCR1B |= (1 << WGM13);

  TCCR1B |= (1 << CS11);


7 SBI-Befehle, für die ein einziger OUT genügen würde:

  TCCR1B = _BV(WGM11)|_BV(WGM13)|
           _BV(COM1A0)|_BV(COM1A1)|
           _BV(COM1B0)|_BV(COM1B1)|
           _BV(CS11);

Autor: Bandit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jupps,
würde ich auch heute nicht mehr so machen. Zu dem Zeitpunkt war ich
noch ein totaler Newbee :-))

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.