-         

Ergebnis 1 bis 2 von 2

Thema: Wie kann ich einen 10bit Wert zur PWM verwenden

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.11.2006
    Ort
    Hamburg
    Alter
    25
    Beiträge
    384

    Wie kann ich einen 10bit Wert zur PWM verwenden

    Anzeige

    Hallo ich bins nochmal,

    Ich hab mich jetzt mal an die Programierung eines AVR gemacht und komm auch ganz gut voran. Bisher hab ich Ports an und ausgeschaltet sowie eingelese usw. Dann habe ich mich an den ADC gemacht und hatte damit auch keine Probleme. Nun wollte ich ein LED über mit PWM dimmen das hat mit einem 8bit wert auch wunderbar geklapt. Nun wollte ich aber den 10bit Wert des ADC wandlers als PWM vergleichswert nehmen. Da stoß ich irgendwie an meine Grenzen eigentlich müsste ich doch im TCCR1A register die bits 0 und 1, also wgm10 und wgm11 setzten um den PWM in den 10 bit modus zu setzten und dann im register TCCR1B 1024 als vorteiler konfigurieren, dazu muss ich dann bit 0 und 2 setzten (cs10 und cs12). So wenn das so richtig ist was ich erzählt habe dann kommt mein Problem. Jetzt weiß ich nicht wie ich jetzt den 10bit wert aufteile um ihn in die vergleichswertregister (OCR1AH und OCR1AL) zu schreiben. Hier mal meine Codes:
    Code:
    #define F_CPU 3686400
    #include <avr\io.h>
    
    void init(void)
    {
    	DDRB |= 0xFF ;				//Port B Ausgang
    	DDRD = 0x00;				//Port D Eingang
    	PORTD = 0xFF;   //Pull Up widerstand an PD
    	DDRC = 0x00;
    	ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1); 
    	TCCR1A= 0x83;
    	TCCR1B =0x05;
    	
    }
    
    void Dimmer (void)
    {
    	ADMUX = 0x00;	
    	ADCSRA |= (1 << ADSC);			
    	while (!(ADCSRA & (1 << ADIF)));	
    	ADCSRA |= (1 << ADIF);
    	ADCH=OCR1AH;
    	ADCL=OCR1AL;
    }
    
    int main (void)
    {
    	unsigned int x;
       init();
      
      
       while (1) 
       {
       	 	
         Dimmer();
       }
    return 0;
    }
    ich hab jetzt nur die Ausschnitte genommen die von Bedeutung sind. In dem Versuch hab ich versucht die beiden ADC ausgabe register (high und low) in die vergleichswert register von der PWM zu Laden das klappt aber ncicht. Wär nett wenn mir jemand helfen könnte.

    mfg
    Erik

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    26.11.2006
    Ort
    Hamburg
    Alter
    25
    Beiträge
    384
    Ich hab jetzt eine Lösung gefunden, ich rechne den 10bit wert einfach in einen 8bit wert um (also durch 4), das funktioniert wunderbar, aber geht das nicht auch direkt? Das muss ja gehen sonst würden sie ja gar kein 10 bit modus "anbieten". Aber wie übergibt man da die Parameter?

    mfg
    Erik

Berechtigungen

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