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

Thema: Timer / Interrupte in C

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    27.05.2004
    Beiträge
    6
    Anzeige

    Praxistest und DIY Projekte
    Wie kann ich eigentlich mit dem AVRStudio ein C-Projekt erstellen?
    Ich habe das nämlich gerade installiert. Das ist echt super. Beim Debuggen
    von Assembler-Programmen habe ich das gesehen... Ich kann jedoch
    Assembler fast garnicht. Nur zu 10% ungefähr.

    Was findest du eigentlich besser für einen Mikrocontroller?
    Assembler oder C?

    Martin

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beiträge
    991
    Zitat Zitat von masr
    Wie kann ich eigentlich mit dem AVRStudio ein C-Projekt erstellen?
    Naja, eigentlich braucht man das nicht. Bei dem AVRStudio Version 3.** konnte man noch externe Compiler einbinden und so das AVRStudio als GUI verwenden. Bei Version 4.** geht das nicht mehr.
    Aber warum nicht das Programmers Notepad das bei WinAVR dabei ist benutzten ??
    ( siehe http://www.kreatives-chaos.com/index.php?seite=avrgcc )
    Zitat Zitat von masr
    Ich habe das nämlich gerade installiert. Das ist echt super. Beim Debuggen
    von Assembler-Programmen habe ich das gesehen... Ich kann jedoch
    Assembler fast garnicht. Nur zu 10% ungefähr.

    Was findest du eigentlich besser für einen Mikrocontroller?
    Assembler oder C?
    Lässt sich so nicht beantworten. Nur wirst du um Assembler bei Mikrocontrollern irgendwann nicht mehr herum kommen. Auch für das Verständnis wie der Controller eigentlich funktioniert und was der Compiler für Code erzeugt helfen Assemblerkenntnise ungemeint. Von daher würde ich zu beidem Raten C zum programmieren, Assembler zum verstehen was gemacht wird...

    Hier übrigens noch ein Timerbeispiel ( lässt LEDs an PortD blinken ):
    Das Programm ist für einen ATmega32 mit einem Quarz mit 14.7456 Mhz ausgelegt. Wenn man eine andere Taktfrequenz verwenden will, so muss man nur die Werte für TCNT1H und TCNT1L bzw. evnt. den Prescaler anpassen...

    Code:
    #include <avr/io.h>
    #include <avr/signal.h>
    #include <avr/interrupt.h>
    
    #define	SYSCLK	14745600
    
    void init(void);
    void delay(unsigned int ms);
    
    volatile unsigned char zaehler = 1, richtung = 0;
    
    int main(void)
    {
    	unsigned char i;	
    	
    	init();
    	
    	sei();
    	
    	i = 0;
    	while(1) {
    		
    	}
    	
    	return 0;
    }
    
    void init(void)
    {
    	DDRD = 0xff;
    	
    	// Timer1 aktivieren
    	TCNT1H = 0xc7;
    	TCNT1L = 0xc0;
    	
    	TIMSK |= (1<<TOIE1);
    	
    	TCCR1A = 0;
    	TCCR1B = (1<<CS12) | (1<<CS10);		// Prescaler = 1024
    }
    
    SIGNAL(SIG_OVERFLOW1)
    {
    	unsigned char i, k;
    	i = zaehler;
    	k = richtung;
    	
    	PORTD = ~i;
    	if (k == 0)
    		i <<= 1;
    	else
    		i >>= 1;
    	
    	if (i == 0x01)
    		k = 0;
    	else if (i == 0x80)
    		k = 1;
    	
    	zaehler = i;
    	richtung = k;
    	
    	TCNT1H = 0xc7;
    	TCNT1L = 0xc0;
    }
    MfG Kjion

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    27.05.2004
    Beiträge
    6
    Hi!

    ENDLICH !!! ES KLAPPT!

    Ich weiß jetzt, wo der Fehler lag. Die Programme habe ich vorher immer
    mit dem avr-gcc in Linux kompiliert:
    avr-gcc -s -mmcu=atmega8 ./timer.c

    Nun hab ich sie aber mit WINAVR kompiliert und den Makefile habe ich
    generieren lassen. Den so kompilierten Code kann ich auf meinem
    Mikrocontroller ausführen. Ich habe mich wirklich totgesucht, wo mein
    Fehler im Programm war, dabei lag es aber an der Art zu kompilieren.
    Sicher kann man auch mit dem Programm in Linux richtig kompilieren,
    aber der vom Programm generierte Makefile hat mir einfach geholfen.

    Auf diese Weise müsste auch das Programm von Dino Dieter funktionieren,
    was vorher bei mir nicht funktioniert hatte.

    Danke nochmal für eure Hilfe!
    Jetzt kann ich endlich mal mit dem Programmieren anfangen *g*

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress