PWM beim AT MEGA 8

OP #2966648
Lesenswert?

Hallo,

habe auf der Seite
http://www.electronicsblog.net/atmega8-pwm-controlfrequencypolarityduty-cycle-example-tutorial-with-program/

einen guten einstieg in die PWM mit ATMEG 8 Bekommen.
Und auch verstanden wie ich die PWM anpasse. an Frequenz und 
Tastverhältniss.

Jedoch

wollte ich statt
1
DDRB=0x08;
 Port B Pin 3 ( vom Ursprunglichen Programm)
lieber den PIN 1 des Port B Benutzen
1
DDRB=0x01;
benutzen.

Jedoch funktioniert es nicht.

Witwerhin Stellt sich die Frage ab ich die PWM beim AT MEGA 88 auf den 
PIN 5 und 6 des PORT D ausgeben lassen kann.

Danke für eure Hilfe im voraus
Gast #2966656
Lesenswert?

> Jedoch funktioniert es nicht.

Fehler ist in Zeile 42. Kuckst Du Datenplatt wegen Initialisierung, dann 
gehts auch mit B1/OC1A.

> Witwerhin Stellt sich die Frage ab ich die PWM beim AT MEGA 88 auf den
> PIN 5 und 6 des PORT D ausgeben lassen kann.

Ja. Das 'Wie' steht im Datenplatt.
Gast #2966659
Lesenswert?

du musste dein program sagen das du das auch auf PORTB1 machen möchtest.

Heißt aber auch da du den Timer2 nutzt musst du von Timer2/PB3 OCA2 auf 
Timer1/PB1 OC1A initalisieren

DB Atmega88 Seite 100/101
OP #2966752
Lesenswert?

Danke Chris,

So ungefähr habe ich es mit dem Datenblatt verstanden.

Da ich mit dem mega 88 gerade noch nicht arbeiten kann muss noch warten 
bis der Kommunitone das Layout endlich fertig erstellt hat.

Versuche ich es auf meinem Selbstgebauten Mega 8 Evaluierungsbord.

Hier haben ich mal den Simultanen versuch gewagt.
Beim Atmel Mega 8 die beiden Anschlüsse PINS

OC1B  --> PB2
OC1A  --> PB1

ine PWM zu erzeugen


1
#include <avr/io.h>
2
#include <avr/iom8.h>
3
int main( void )
4
{
5
DDRB=0xff;
6

7
OCR1AH = 0x0f;
8
OCR1AL = 0xff; 
9
OCR1BH = 0x0f; 
10
OCR1AL = 0xff; 
11

12
TCCR1A=  (0<<COM1A1) | (1<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (1<<FOC1A) | (1<<FOC1B) | (1<<WGM11) | (0<<WGM10);
13
TCCR1A =  (0<<ICNC1) | (1<<ICES1) | (0<<WGM13) | (1<<WGM12) | (1<<CS12) | (1<<CS11) | (0<<CS10); 
14
while (1) {};
15
}

PS . kann ich den Code auch mit Syntaxihlighting einbinden ?
OP #2966778
Lesenswert?

Sorry habe gleich selber paar fehler gefunden!

hier nochmal richtig

Jedoch Funktioniert NUR der PB1 OC1A
1
#include <avr/io.h>
2
#include <avr/iom8.h>
3
int main( void )
4
{
5
DDRB=0xff;
6

7
OCR1A = 0xff;
8

9
OCR1B = 0xff; 
10

11

12
TCCR1A=  (1<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<FOC1A) | (0<<FOC1B) | (1<<WGM11) | (0<<WGM10);
13
TCCR1B =  (0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (1<<CS12) | (0<<CS11) | (0<<CS10); // --> Siehe Datenblatt s 98 ff
14
while (1) {};
15
}

P.S. Wie kann ich Quellcode mit Syntaxhihlighting einbinden ?
Gast #2966848
Lesenswert?

Theater sucht schrieb:
> Jedoch Funktioniert NUR der PB1 OC1A

TCCR1A=  .....(0<<COM1B1) | (0<<COM1B0)......

sollte ja gesetzt werden wenn beide 0 sind ist

"Normal port operation, OC0B disconnected" S.102 nochmal nachlesen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren