hat sich erledigt das problem, hatte vergessen den pin auch als ausgang zu deklarieren
Hallo, hab vorher noch nie die PWM meines ATMEGA 16 benutzt,
würde nur jetzt gerne eine LED dimmen,
aber ich bekomm es noch nicht mal hin das an den PWM ausgängen überhaupt etwas anliegt.
hab es mit folgendem Code probiert den ich hier im Forum gefunden hab
muss ich vielleicht noch in irgend einem anderen Register ein Bit setzten?Code:#define PWM_LINKS OCR1A #define PWM_LINKS_ON TCCR1A |= (1<<COM1A1) #define PWM_LINKS_OFF TCCR1A &= ~(1<<COM1A1) #define PWM_RECHTS OCR1B #define PWM_RECHTS_ON TCCR1A |= (1<<COM1B1) #define PWM_RECHTS_OFF TCCR1A &= ~(1<<COM1B1) /* normale 10-bit PWM aktivieren ( nicht invertiert ) */ TCCR1A = (1<<WGM10)|(1<<WGM11); /* Einstellen der PWM-Frequenz auf ca. 8 kHz ( Prescaler = 1 ) */ TCCR1B = (1<<CS10); /* PWN einschalten -- > PIN mit PWM verbinden */ PWM_LINKS_ON; PWM_RECHTS_ON; /* und Werte schreiben */ PWM_RECHTS = 234; PWM_LINKS = 1023;
hat sich erledigt das problem, hatte vergessen den pin auch als ausgang zu deklarieren
Hallo,
ich hab das eben auch mal mit dem code versucht, bekomme aber leider auch nichts am Ausgang, obwohl ich alle PIN's aus Ausgang definiert habe.
Kann mir vielleicht jm. sagen, was bei meinem Code falsch ist?
wäre super nett, wenn mir jm helfen könnte!Code:#include <avr/io.h> #include <avr/interrupt.h> #include <avr/delay.h> #include <stdint.h> #include <avr/delay.h> #include <avr/signal.h> #define PWM_LINKS OCR1A #define PWM_LINKS_ON TCCR1A |= (1<<COM1A1) #define PWM_LINKS_OFF TCCR1A &= ~(1<<COM1A1) #define PWM_RECHTS OCR1B #define PWM_RECHTS_ON TCCR1A |= (1<<COM1B1) #define PWM_RECHTS_OFF TCCR1A &= ~(1<<COM1B1) static void io_init(void) { PORTA =0x0; //ausgängn DDRA = 0xff; // PortB PORTB = 0x0; //ausgänge DDRB = 0xff; // PortC PORTC = 0x0; //ausgänge DDRC = 0xff; // PortD PORTD = 0x0; //ausgänge DDRD = 0xff; ACSR = 0x80; /* normale 10-bit PWM aktivieren ( nicht invertiert ) */ TCCR1A = (1<<WGM10)|(1<<WGM11); /* Einstellen der PWM-Frequenz auf ca. 8 kHz ( Prescaler = 1 ) */ TCCR1B = (1<<CS10); /* PWN einschalten -- > PIN mit PWM verbinden */ PWM_LINKS_ON; PWM_RECHTS_ON; /* und Werte schreiben */ PWM_RECHTS = 234; PWM_LINKS = 1023; } int main(void) { io_init(); while(1) { } return(0); }
Wenn ich es richtig sehe, hast du PWM_links_ON/OFF nich deklariert...?
o
L_
OL
This is Schäuble. Copy Schäuble into your signature to help him on his way to Überwachungsstaat!
http://de.youtube.com/watch?v=qV1cZ6jUeGE
Hi!
Danke erst mal für deine Antwort. Könntest du mir mal den code posten, damt das dann geht? Ich versteh echt nicht, wie das gehen soll.
Wäre nett von dir!
ansich seh ich bei dir keinen Fehler,
haste du mal probiert ob die Ausgänge überhaupt funktionieren?
also mal von hand auf 1 setzten.
vielleicht liegt es ja auch an was ganz anderem.
du könntest es sonst auch noch mal mit dem anderen timer probieren, also an PB3
DDRB=0xff;
TCCR0=(1<<WGM00)|(1<<COM01)|(1<<CS01);
OCR0=100;
Gruß Cornelius
Hast Du mal an den Ausgängen des ATMega gemessen, was da passiert?
(Und bitte beim Code posten die code-Tags verwenden)
Also ich versteh das nicht. Ich hab jetzt den code so einfach wie möglich geschrieben und auch mal den anderen timer genommen. Sieht jetzt so aus:
An PD3 passiert einfach gar nichtsCode:#include <avr/io.h> #include <avr/interrupt.h> #include <avr/delay.h> #include <stdint.h> #include <avr/delay.h> #include <avr/signal.h> static void io_init(void) { DDRB=0xff; TCCR0=(1<<WGM00)|(1<<COM01)|(1<<CS01); OCR0=100; } int main(void) { io_init(); while(1) { } return(0); }. Kann mir jm. weiterhelfen?
du sollst ja auch den PB3 benutzen![]()
ES FUNKTIONIERT!!!
Ich hatte auch PB3 benuzt, hab mich nur verschrieben. Ich hab einen dummen Anfängerfehler gemacht
. Geht mit dem Code, den ich gepostet habe wunderbar, falls noch jm. Probleme hat, nehmt den Code, der funzt (Port PB3
).
Hab da noch eine Frage. Bei mir funktioniert jetzt die PWM an PB3. (noch mal danke an alle!).
Wie schalte ich die anderen 3 PWM an? Verstehe das im Datenblatt nicht. Gibt es eigentlich eine Möglichkeit, die PWM auf andere Ports umzubiegen, bzw. irgendwie andere Ports auch noch zur PWM zu nutzen, oder kann ich nur die 4 vorgegebenen Ports zu PWM nutzen?!?
DANKE NOCH MAL!!!
Lesezeichen