-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: PWM am ATMEGA16 tut nix

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.07.2005
    Ort
    Berlin
    Alter
    34
    Beiträge
    25

    PWM am ATMEGA16 tut nix

    Anzeige

    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
    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;
    muss ich vielleicht noch in irgend einem anderen Register ein Bit setzten?

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    09.07.2005
    Ort
    Berlin
    Alter
    34
    Beiträge
    25
    hat sich erledigt das problem, hatte vergessen den pin auch als ausgang zu deklarieren

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2006
    Beiträge
    6
    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?
    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);
    }
    wäre super nett, wenn mir jm helfen könnte!

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    02.11.2005
    Ort
    Dortmund
    Alter
    24
    Beiträge
    1.641
    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

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2006
    Beiträge
    6
    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!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    09.07.2005
    Ort
    Berlin
    Alter
    34
    Beiträge
    25
    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

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    50
    Beiträge
    1.195
    Hast Du mal an den Ausgängen des ATMega gemessen, was da passiert?

    (Und bitte beim Code posten die code-Tags verwenden)

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2006
    Beiträge
    6
    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:
    Code:
    #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);
    }
    An PD3 passiert einfach gar nichts . Kann mir jm. weiterhelfen?

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    09.07.2005
    Ort
    Berlin
    Alter
    34
    Beiträge
    25
    du sollst ja auch den PB3 benutzen

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2006
    Beiträge
    6


    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!!!

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •