-
        

Ergebnis 1 bis 6 von 6

Thema: atmega pwm phasen und frewquenzgnau

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2004
    Beiträge
    121

    atmega pwm phasen und frewquenzgnau

    Anzeige

    hab ein kleines timer problem

    eigentlich solte man beim timer1 ein pwm signal generieren können, bei dem man die frequenz und das on of verhältnis andern kann

    nur klappt das bei mir leider nicht so richtig
    wäre coll wen mir wer helfen kann
    Code:
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    typedef unsigned char byte;
    
    static void pwm_init(void);				// pwm ==> phase correct, 8 bit 
    
    int main(void)
    {
    pwm_init();
    
    for(;;)
    	{
    
    	}
    }
    
    
    static void pwm_init(void)
    {
    
    TCCR1A = (1<<COM1A1)|(0<<COM1A0)|(0<<WGM11)|(1<<WGM10); 			// PWM Phasen und Frequenzgenau, Ausgang wählen
    TCCR1B = (1<<WGM13)|(0<<WGM12)|(0<<CS12)|(0<<CS11)|(1<<CS10); 		// set clock/prescaler 1 -> enable counter
    
    
    OCR1AL= 4;
    }

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Schaltest du den Port als OUT?

    Zudem ist besser: OCRIA = 4;
    Disclaimer: none. Sue me.

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2004
    Beiträge
    121
    ja es wird ein port als ausgang geschalten
    das fuktzt zumindestens schon mal bei der simulation
    hab das mit diesem frequenzgenau phasengenau noch nicht so wirklich verstanden aber mit der formenl komm ich eben genau auf meine gewünschten frequenzen

    10Khz= 10Mhz>/(2*top)

    hab das aber noch nicht ganz mit den registern kappeirt in die ich schreiben muss

    hmm topp wäre dann auf 500 zu stellen geht das müsste ja gehen ist ja ein 16 bit timer oder
    wo schreibe ich top hin
    thx

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Musst im Handbuch shauen, weiß ich jetzt auch net Auswendig.. TOP ist fest oder OCR1A oder OCR1B oder ICR1, je nach Timer1-Mode.
    Disclaimer: none. Sue me.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2004
    Beiträge
    121
    habs grad gemerkt
    OCRIA = 4;
    aber wenn ichs im simulator teste funktiniert das nicht
    ist mir gerade aufgefallen mit jatag gehts ohne probleme komisch?
    dann geht nur OCRIAL/H aber ist ja nicht weiter tragisch
    der ausgang musste sich eigentlich durch die deffoiniton von

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

    schalten lassen oder bin ich falsch

    top ist OCR1A oder ICR1 je nach phasen frequenz modus gibt zwei

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.04.2004
    Beiträge
    121
    Code:
    void pwm_init(void)
    {
    	DDRD |= (1<<PIND4); 
    	OCR1A=32;
    	OCR1B=16;
    	TCCR1A = (0<<COM1B1)|(1<<COM1B0)|(1<<WGM10); // PWM, phase correct, 16 bit.
    	TCCR1B =  (1<<WGM13) |(1<<CS10); 			// set clock/prescaler 1 -> enable counter
    	sei();
    }
    funktioniert jetzt wnigstens schon mit dem auf abwertszählen nur mit dem ausgang hab ich noch ein problemchen

Berechtigungen

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