- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 11

Thema: ATmega168A: Software PWM Periodendauer verändert sich, woran kann das liegen?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Dracyria
    Gast
    Hi, stimmt ich hätte ja auch mal den kompletten Code nehmen können.
    Ist alles der Reihe nach aufgebaut, ohne Interrupts.
    Hier noch einmal das, was vor meiner Hauptschleife steht:
    Code:
    #define F_CPU 8000000UL //Geschwindigkeit des MCs 10MHz da 3.3V Versorgungsspannung
    #include <util/delay.h> //Damit Verzögerungszeiten angegeben werden können
    #include <avr/io.h> //Für Ein- und Ausgänge
    #include <avr/pgmspace.h>
    #include <inttypes.h>
    #include <math.h>
    
    //////////////////////////////////////////////////////////////////////////
    
    //ADC Messung mit Dummyreadout
    uint16_t readADC(uint8_t channel) 
    {
    	//Variablendefinition ohne Vorzeichen
    	uint8_t i;
    	uint16_t result = 0;
    	
    	// Den ADC aktivieren, kein Prescaling
    	ADCSRA = (1<<ADEN);
    	
    	//Kanal des Multiplexers wählen, AVcc als Referenzspannung einstellen
    	ADMUX = channel | (1<<REFS0); 
    	
    	// Dummyreadout
    	ADCSRA |= (1<<ADSC);
    	while(ADCSRA & (1<<ADSC));
    	
    	//Spannung auslesen und Durchschnittswert ausrechnen.
    	for(i=0; i<3; i++) 
    	{
    		
    		//Einmalige Wandlung
    		ADCSRA |= (1<<ADSC); 
    		
    		//Auf Ergebnis warten
    		while(ADCSRA & (1<<ADSC)); 
    		
    		//Ergebnis in Variable "result" speichern
    		result += ADCW;
    	}
    	
    	// ADC wieder deaktivieren
    	ADCSRA &= ~(1<<ADEN);
    	
    	result /= 3;
    	
    	return result;
    }
    Ahh klasse habs nun gerafft wie das mit der Box geht...immerhin schonmal das ^^

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    49
    Beiträge
    456
    Fällt dir da was auf?

    Code:
    #define F_CPU 8000000UL //Geschwindigkeit des MCs 10MHz da 3.3V Versorgungsspannung

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.716
    Gute Frage, schorsch! Hatte ich übersehen. Aber das ist ja ein fester Bezugswert. Wie sollten daraus variable Ergebnisse entstehen? Ausserdem ist heut sowieso der Termin des TO.
    Ciao sagt der JoeamBerg

  4. #4
    Erfahrener Benutzer Roboter-Spezialist Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    49
    Beiträge
    456
    Na ich dachte mir, wenn im Kommentar eben 10 MHz stehen und mit 8 MHz dann die usleep etc Funktionen arbeiten kann daraus dann schon ein Unterschied entstehen ....

Ähnliche Themen

  1. Problem mit ATMega168A und PWM
    Von TechMo im Forum Assembler-Programmierung
    Antworten: 6
    Letzter Beitrag: 19.09.2012, 08:10
  2. Kann sich ein Programm verlangsamen?
    Von Duesentrieb im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 04.11.2011, 17:22
  3. Wie berechne ich Frequenz/Periodendauer meines PWM?
    Von ricola im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 12.07.2007, 16:03
  4. Antworten: 9
    Letzter Beitrag: 11.02.2006, 02:50
  5. Periodendauer beim Servo
    Von .Johannes. im Forum Motoren
    Antworten: 9
    Letzter Beitrag: 28.02.2005, 11:49

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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

LiFePO4 Speicher Test