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
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..
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
// 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
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.