- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: C Motorsteuern klappt!?!?!pwm nicht!!!

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Anzeige

    LiFePo4 Akku selber bauen - Video
    sorry, das war ein Schritt in die andere Richtung,
    man kann nur Bits setzen, die auch in dem Register vorkommen, bzw. wenn man andere Bezeichnungen verwendet die nicht darin vorkommen, wie zB. CS11 das vom TCCR1B ist, im TCCR1A zu verwenden, kommt was unvorhergesehenes raus.

    dies läuft mit 8MHz ganz gut:
    Code:
    // 8Bit PWM OC1A
    TCCR1A = (1 << WGM10) | (1 << COM1A1);
    // Teiler CPU-clock / 8
    TCCR1B = (1 << CS11);
    
    //und dann Werte nur damit setzen:
    OCR1A = 120;

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.01.2005
    Ort
    hessen
    Alter
    35
    Beiträge
    1.101
    wenns dann noch klappen würde.


    gruß
    patrick

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Was hast Du eigentlich für'n µC und wieviel MHz ?
    Ist auch das richtige Pin, an dem OCR1A rauskommt, auf Ausgang geschaltet ?

    Bei mir haut das hin mit Mega8 mit 8MHz.

  4. #14
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.01.2005
    Ort
    hessen
    Alter
    35
    Beiträge
    1.101
    ich habe einen atmega mit 16mhz im moment weil die anderen nicht liefer bar sin aber den rest schaue ich gleich mal nach

  5. #15
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    21.10.2005
    Ort
    Erde
    Alter
    57
    Beiträge
    1.195
    Hier ist mein Testprogramm für PWM:
    Code:
    #include <avr/io.h>
    #include <avr/delay.h>
    #include <inttypes.h>
    #include "pwmRoutines.h"
    
    
    // modifier for PWM signal width
    // modification is based on pin interrupts
    volatile uint8_t pwmWidth = 0x40;
    
    
    void pwmInit( void )
    {
    	// enable PWM outputs
    	DDRD = (1<<6) | (1<<5);
    
    	pwmWidth = 0x10;
    	// initialise time and pwm modes
    	pwmInit0();
    //  pwmInit1();
    //	pwmInit2();
    }
    
    
    
    void pwmInit0( void )
    {
    	// 8 bit phase correct PWM
    	TCCR0A = (1<<COM0A1)|(1<<COM0B1)|(1<<WGM00);
    
    	// set prescaler for PWM frequency
    	TCCR0B = (1<<CS01);
    
    	// for fast initialisation (OCRxA/B values are taken on the first TCNTx = TOP)
    	TCNT0 = 0xfe;
    	
    	// set initial PWM Width
    	OCR0A = pwmWidth = 0x10;
    	OCR0B = 0x03;
    }
    
    
    void pwmInit1( void )
    {
    	// 16 bit phase correct PWM
    	TCCR1A = (1<<COM1A1)|(1<<COM1B1)|(1<<WGM10);
    
    	// set prescaler for PWM frequency
    	TCCR1B = (1<<CS11);
    
    	// for fast initialisation (OCRxA/B values are taken on the first TCNTx = TOP)
    	TCNT1 = 0x00fe;
    	
    	// set initial PWM Width
    	OCR1A = (uint16_t)pwmWidth;
    	OCR1B = (uint16_t)0x03;
    }
    
    
    void pwmInit2( void )
    {
    	// 8 bit phase correct PWM
    	TCCR2A = (1<<COM2B1)|(1<<WGM20);
    
    	// set prescaler for PWM frequency
    	TCCR2B = (1<<CS21);
    
    	// for fast initialisation (OCRxA/B values are taken on the first TCNTx = TOP)
    	TCNT2 = 0xfe;
    
    	// set initial PWM Width
    	OCR2B = pwmWidth;
    }
    
    
    
    void pwmRun( void )
    {
    	while (1)
    	{
    		;
    	}
    }
    pwmInitx() ist jeweils die Initialisierungsroutine für den TimerX. Verwendet wird ein ATMega168. Der pwmWidth Parameter wird in Interruptroutinen modifiziert. Alternativ geht aber das Setzen in pwmRun().

  6. #16
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    03.01.2005
    Ort
    hessen
    Alter
    35
    Beiträge
    1.101
    ok danke werde ich morgen mal ausprobieren.

    gruß
    patrick

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

LiFePO4 Speicher Test