AT90CAN fasenkorrekte pwm

OP #2256903
Lesenswert?
• ▲
▼
hallo leute,

ich habe ein kleines problem mit einem at90can. dabei möchte ich eine 
pwm realisieren um ein transistor anzusteuern. als erstes habe ich 
diesen post verinnerlicht Beitrag "PWM AT90CAN128 an OCR2 unc OCR0". 
das hat soweit auch funktioniert. mit dem timer0 habe ich mich schon 
beschäftigt jedoch kann man bei dem für eine fasenkorrekte pwm keine 
werte vorgeben zur zählung oder?.
nun bin ich bei timer 1, dieser kann das und ich bin der meinung, dass 
ich ihn wie folgend richtig konfiguriert habe:
TCCR1A = 0b01010111;
TCCR1B = 0b00010010;
aber so funktioniert es nicht. es kommt keine pwm raus. hätte vllt 
jemand eine idee was ich falsch gemacht habe?
meine nächste frage geht im datenblatt auf die COMnA1/COMnB1/
COMnC1 und 0 register. in den tabellen ist nicht gezeigt welches bit des 
registers nun dazu gehörig ist zu welchem modi. in allen tabellenheadern 
stehen alle namen. wäre nett wenn das jemand näher erläutern könnte. 
deshalb habe ich die bits 01 01 01 entsprechend gleich genutzt für COM

danke im voraus

liebe grüße tim
Gast #2256909
Lesenswert?
• ▲
▼
Hi

>und ich bin der meinung, dass ich ihn wie folgend richtig konfiguriert habe:
>TCCR1A = 0b01010111;
>TCCR1B = 0b00010010;

Meinst du, das jemand Lust hat das zu auseinander zu sortieren?

Tue dir und anderen einen Gefallen und benutze die übliche Schreibweise

TCCR1A = (1<<xyc)|(1<<xyz)...

MfG Spess
OP #2256928
Lesenswert?
• ▲
▼
ok danke für die schnelle antwort. du hast recht das ist nicht fein 
leserlich, mein fehler

ich hoffe das kann man nun besser interpretieren:

TCCR1A = (01 << COM1A1/0) | (01 << COM1B1/0) | (01 << COM1B1/0) | (1 << 
WGM11) | (1 << WGM10);

TCCR1B = (0 << ICNC1) | (0 << ICES1) |(0 << reserved) | (1 << WGM13) | 
(0 << WGM12) | (0 << CS12) | (1 << CS11) | (0 << CS10);

die COM habe ich wie gesagt alle auf 01 gesetzt weil mir eine richtige 
bezeichnung in den datenblättern fehlte oder ich sie nicht gesehen habe. 
ich möchte eine phasecorrect pwm nach tabelle13-3

dake im voraus :)
OP #2256946
Lesenswert?
• ▲
▼
entschuldige das war ein schnellentwurf. nun aber compilergerecht :)

TCCR1A = (0 << COM1A1) | (1 << COM1A0) | (0 << COM1B1) | (1 << COM1B0) 
|(0 << COM1C1) | (1 << COM1C0) |(1 << WGM11) | (1 << WGM10);

 TCCR1B = (0 << ICNC1) | (0 << ICES1) | (1 << WGM13) | (0 << WGM12) | (0 
<< CS12) | (1 << CS11) | (0 << CS10);
Gast #2256963
Lesenswert?
• ▲
▼
Hi

Als Erstes: Wozu brauchst du Phase Correct PWM? Für deinen Zweck reicht 
Fast PWM.

>(0 << COM1A1) | (1 << COM1A0)

Ist falsch. Du brauchst COM1n = 10 oder 11. Bevorzugt 10. COM1n = 11 ist 
invertierte PWM.

Und nicht vergessen, die OC-Pins auf Ausgang setzen.

MfG Spess
OP #2257003
Lesenswert?
• ▲
▼
hi,

du hast recht eine fast-pwm reicht wohl. ich habe demnach für fast-pwm 
den COM1n = 10 gesetzt für compare match at top. das klappt soweit auch 
jedoch habe ich einen minimalen puls
TCCR1A = 
(1<<COM1A1)|(0<<COM1A0)|(1<<COM1B1)|(0<<COM1B0)|(1<<COM1C1)|(0<<COM1C0)| 
(1<<WGM11)|(1<<WGM10));

TCCR1B = (0<<ICNC1)|(0<<ICES1)|(0<<WGM13)|(1<<WGM12)|(0 << 
CS12)|(1<<CS11)|(0<<CS10);

den pin habe ich auf ausgang:
DDRB |= (1 << DDB6);

desweiteren habe ich den zähler für TOP gesetzt  mit
OCR1A = 0x00FF;

und wielange der puls dauern soll
TCNT1 = 0x00FF;

auf dem oszi sind nur winzig kleine pulse zu sehen, wie kann ich die 
pulslänge beeinflussen, dachte dafür ist TCNT zuständig

danke im voraus
Gast #2257013
Lesenswert?
• ▲
▼
Hi

>auf dem oszi sind nur winzig kleine pulse zu sehen, wie kann ich die
>pulslänge beeinflussen, dachte dafür ist TCNT zuständig

Nein. Von TCNT lässt du die Finger. Deine Impulsbreite wird durch die 
OC-Register bestimmt. Lies mal das im Datenblatt unter 'Modes of 
Operation' nach.

MfG Spess
OP #2257095
Lesenswert?
• ▲
▼
danke spess,

ich bin grad etwas mit OCR1A und OCR1B am drehen wegen der 
pulsbreite...aber die logik der register ist mir noch nicht ganz 
geheuer... da werde ich noch etwas rumtesten ... aber danke schonmal bis 
hierher

edit:
also ich habe OCR1A als TOP wert festgelegt aber dieser hat null 
relevantnis. wenn ic hden auf 0 setze habe ich eine PWM obwohl TOP=0 ja 
ein dauer 0 signal wäre... also ich bin etwas verwirrt was dies 
betrifft, ich hoffe da kann mir jemand nochmal kurz helfen

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.