mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM in C


Autor: raoul4 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
will pwm in C benützen. hab auch schon mit der such funktion in deisem
forum hier einige beiträge gefunden, aber ich keine fertigen programme
sourcecodes sondern ich will das erklärt bekommen und wie immer auch
verstehen. ;-) (ich will, ich will, ich will)
ich hab mir mal das datenblatt angeschaut und bin schon ganz schön weit
g. also erst muss ich in TCCR1A das bit 0 auf 1 setzen. und dann?

mfg raoul4

Autor: Sven Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Och, schau doch ins Datenblatt..
Auswendig weiß ich das auch nicht..

Timer starten, PWM Mode wählen, Tastverhältnis einstellen, Port als
Ausgang schalten....

nur mal so als Stichpunkt...vielleicht sagst du noch welcher
Controller..

Autor: raoul4 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah genau, at90s8535!
-wie starte ich den timer?
-den pwm modus hab ich doch schon mit TCCR1A bit 0 auf 1 bestimmt,
oder? 8-bit auflösung?
-was ist das tastverhältnis?
-wie man den port als ausgang schaltet weiß ich zum glück!

mfg raoul4

Autor: Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: Ph. correct PWM top=00FFh
// OC1A output: Non-Inv.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x81;
TCCR1B=0x03;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;


OCR1AH=0x00;                //Diese Register entscheiden über das
Tastverhältnis
OCR1AL=0x55;


Josef

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

der AVRGCC kann L und H-Register als ein 16-Bit Pseudoregister
ansprechen.

OCR1BH=0x00;
OCR1BL=0x00;

ist also equvivalent zu

OCR1B=0x00;

Matthias

Autor: raoul4 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
wenn ich jetzt den code vom Josef (<< danke) in codevision reinkopiere
und dann compile und ihn dann auf den mcu schreibe ist OC1A immer noch
auf 0 volt. wie kann ich denn die frequenz steuern, also wo muss ich
eine zahl reinschreiben/bit setzen, damit ich mehr volt/höhere
frequenzen bekomme?

mfg raoul4

Autor: Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm den Codewizard von Codevision.Der hilft dir.


OCR1AH=0x00;                //Diese Register entscheiden über das
                           //   Tastverhältnis
OCR1AL=0x55;

Immer beide Register beschreiben. Zuerst high, dann low -Wichtig !


Du mußt deinen Pin als Ausgang setzen !!

// Port D initialization PORTD.5 ist PWM Ausgang.
PORTD=0x00;
DDRD=0x20;


SG Josef

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Raoul

Du wolltest PWM doch erklärt bekommen?

Tastverhältnis: egal bei welcher Frequenz...Das Tastverhältnis ist die
Zeit des Zustandes "High" zur Zeit des Zustandes "Low".
Der MC bekommt von Dir durch 8, 9 oder 10Bit Auflösung die Grenze eine
Zähler gesetzt (255, 512 oder 1024). Nun gibst Du über einen Port oder
andersweitig eine Zahl, eine Referenz. Der Zähler startet und
vergleicht nun immer den Zähler mit der Refernz. Je nachdem ob Du einen
invertierenden oder nichtinvertierenden PWM eingestellt hast, geht dein
PWM-Ausgang auf High oder Low wenn der Zähler gleich der Referenz ist.
Der Zähler zählt nun weiter bis zu Grenze und zählt dann einfach wieder
zurück bis 0 uns. . Bei Erreichen der Referenz geht der PWM-Ausgang
wieder in die andere Stellung. Im Tutorial "Atmel mit
C-Programmieren" ist das wunderschön erkärt. Schau mal rein.

MfG Marco

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.