- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 4 von 4

Thema: Hilfe bei Atmega8 Timer/Counter1 für CTC Modus

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    22.03.2013
    Beiträge
    6

    Hilfe bei Atmega8 Timer/Counter1 für CTC Modus

    Hallo liebe Experten und Kenner,

    Ich bin schon etwas länger mit der C++ Programmierung dabei und habe erste Erfahrung bei Mikrocontrollern.
    Nun möchte ich mein Wissen etwas vertiefen und beschäftige mich etwas mehr um die Controller besser kennenzulernen um später mal meinen eigenen Roboter zu bauen. Momentan beschäftige ich mich mit den Atmega8.

    Mit den 8bit Timer/Counter0 und 2 bin ich schon zurecht gekommen nun wollte ich mich mit den 16-Bit Timmer/Counter1 beschäftigen.
    Ich möchte, damit man es auch sieht, eine LED mit 4 Hz blinken lassen. später soll es als Signalgabe benutzt werden.

    Ich stelle euch mal mein Code zur Verfügung und ich hoffe ihr findet meinen Fehler bezw. falschen Ansatz.

    Code:
    #define F_CPU 8000000				// CPU Taktfrequenz intern 8 MHz
    
    // Einbindung der Includedateien
    #include <util/delay.h>
    #include <avr/io.h>
    #include <avr/interrupt.h>
    
    // Ein-und Ausgangsbestimmung
    #define _zu_Eingang(Register,Pin)	Register&=~(1<<Pin)		// Beispiel:
    								// setze PB1 als Eingang
    								// _zu_Eingang(DDRB,PB1);
    															
    #define _zu_Ausgang(Register,Pin)	Register|=(1<<Pin)		// Beispiel:
    								// setze PB1 als Ausgang
    								// _zu_Eingang(DDRB,PB1);
    // Funktion Warte
    void warte (int ms){
    	for (int i=1;i<ms;i++)
    	{
    		_delay_ms(1);
    	}
    }
    
    // Funktionen Schalte Ausgänge
    void set_PortB_Pin(int Pin){
    	DDRB |= (1<<Pin);
    }
    
    void clear_PortB_Pin(int Pin){
    	PORTB &= ~(1<<Pin);
    }
    
    void toggle_PortB_Pin(int Pin){
    	PORTB ^= (1<<Pin);
    }
    
    void ini_PWM(void){
    cli();	//sperre interrupte	
    //1. Prescaler	
    TCCR1B |= (1<<CS10)	|	(1<<CS11);				// Prescaler = 64
    
    //2. Modus
    TCCR1B |= (1<<WGM12);							// CTC Modus
    
    TIMSK |= (1<<TOIE1);							// setze interrupt beim Überlauf
    
    //3. Frequenz
    OCR1A = 0xF424;					//				8MHz	/
    OCR1B = 0xF424;					//			2Hz	*	64(Prescaler)
    						//				= 62500 =0xF424 in HEX
    sei();	                                                                     //erlaube interrupte
    }
    
    void stoppe_PWM(void){
    	TCCR1B &= ~(1<<WGM12);		
    }
    
    void starte_PWM(void){
    	TCCR1B |= (1<<WGM12);		
    }
    
    ISR(TIMER1_COMPB_vect){
    	toggle_PortB_Pin(PB1);
    
    }
    
    int main(void)
    {
    	DDRB=0xFF;
    		set_PortB_Pin(PB1);
    		clear_PortB_Pin(PB2);
    		starte_PWM();	
        while(1)
        {	
    		toggle_PortB_Pin(PB2);
    		warte(500);
        }
    }

    Das ist der Code, wie man vll sieht sollte Die LED an PB1 per CTC ISR alle 2 Sek getogglet werden, jedoch bleibt sie aus wieso kann mir da wer helfen wo der falsche Ansatz ist?

    Ich hoffe an viele Antworten und Kritik

    Grüße aus Hamburg
    Geändert von robotka (22.03.2013 um 13:10 Uhr)

Ähnliche Themen

  1. Problem mit Timer1 als Counter im CTC Modus und Interupt
    Von Anam52 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 26.02.2013, 16:34
  2. Timer im CTC-Mode
    Von BoGe-Ro im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 27.06.2011, 10:34
  3. [ERLEDIGT] ATMega 16 Timer 1 CTC Probleme
    Von Franky55555 im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 14.06.2011, 18:18
  4. CTC Timer mit mega168
    Von phyro im Forum C - Programmierung (GCC u.a.)
    Antworten: 12
    Letzter Beitrag: 08.08.2009, 19:58
  5. 16Bit Timer/Counter 1 bei ATmega8 | Hilfe zu den Registern
    Von Sauginius im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 09.06.2005, 16:14

Stichworte

Berechtigungen

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

Labornetzteil AliExpress