- Labornetzteil AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 14 von 14

Thema: PWM am ATMEGA16 tut nix

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

    Praxistest und DIY Projekte
    so viel ic hweiss kannste nur die vorgegebenen benutzen,
    um PD4 und PD5 zu benutzen muste deinen ersten code versuch nehmen

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2006
    Beiträge
    6
    hm, der läuft aber irgendwie nicht .
    Könntest du mir bitte auch mal den Code posten (sollten ja für die anderen beiden auch nur jm. 2 Zeilen sein ??? ), damit alle drei laufen?

    Wäre echt super nett, würdest mir einen großen gefallen tun!

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    09.07.2005
    Ort
    Berlin
    Alter
    41
    Beiträge
    25
    Also der Code funktioniert bei mir super

    Code:
    void aktPWM(){
    	OCR0=100;
    	OCR1A=100;
    	OCR1B=100;
    }
    void initPWM(void){
    	DDRB=0xff;
    	DDRD=0xff;
    	TCCR0=(1<<WGM00)|(1<<COM01)|(1<<CS01);
    	TCCR1A = (1<<WGM10)|(1<<COM1A1)|(1<<COM1B1);
    	TCCR1B = (1<<CS10);
    }

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2006
    Beiträge
    6
    Also das PWM macht mich fertig . Der code geht so weit, deswegen auch schon mal DANKE!!!

    Wenn ich aber folgenden Code laufen lasse:
    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)
    {
    
    	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;
    }
    
    void aktPWM(){
       OCR0=20;
       OCR1A=20;
       OCR1B=20;
       DDRB=0xff;
       DDRD=0xff;
       TCCR0=(1<<WGM00)|(1<<COM01)|(1<<CS01);
       TCCR1A = (1<<WGM10)|(1<<COM1A1)|(1<<COM1B1);
       TCCR1B = (1<<CS10);
    }
    
    int main(void)
    {
    	io_init();
    	aktPWM();
    	int counter  =  0;
    	int counter1 = 50;
    	int counter2 = 68;
    	char up = 1;
    	while(1)
    	
    	{
    	
    		if(counter == 10){
    			up = 1;
    		}
    		if(counter == 100){
    			up = 0;
    		}
    		if(up == 1){
    			counter++;
    		}
    		else{
    			counter--;
    		}
    		OCR0 = counter;
    		_delay_ms(16);
    		_delay_ms(16);
    		_delay_ms(16);
    		_delay_ms(16);
    		_delay_ms(16);
    		_delay_ms(16);
    	
    	}
    	return(0);
    }
    Dann läuft das manchmal, manchmal aber nicht!?! Was kann das sein? Ich schalte mein Netzteil ein, dann wird die eine LED heller, dunkler, und immer so weiter. Die anderen beiden bleiben gleich hell.
    Und auf einmal bleibt die heller/dunkler werdende einfach stehen, oder flackert, und die anderen gehen aus, oder es gehen alle aus.

    Also ganz komisch.
    Wenn ich meinen atmega auf 1Mhz laufen lasse, also der auslieferung-einstellung, was die FUSE_Bits angeht, dann funzt es. Wenn ich den dann aber wieder auf 16Mhz mit externem Quarz laufen lasse, dann geht es nicht mehr!

    Jm. eine Idee, was das sein kann???

    DANKE!

    Ach ja, FUSE-Bits hab ich folgendes eingestellt:
    Siehe Screenshot im Anhang.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken config.jpg  

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