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 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
Lesezeichen