-
hmm also darüber hab ich mir keine gedanken gemacht. ich bin blutiger anfänger und wollte einfach ein c-beispielprogramm in den avr übertragen, was sich jedoch als schwieriger als gedacht erwies. sorry das ich hier so dumme fragen stelle. naja hier ist mein beispielprog:
Code:
#include <avr/io.h>
//************************************************************************************************************************
char i=0; //Globale 8-Bit Variable
//************************************************************************************************************************
void warten(int t) //ermöglicht Pausen
{
int h;
for (;t>0;t--)
{
for (h=1600;h>0;h--) {}
}
return;
}
//************************************************************************************************************************
int main(void)
{
char i=0; //Lokale 8-Bit Variable
//Setzen der Ein + Ausgänge
outp(0xFF,DDRB); //PortB: alles als Ausgäng
outp(0xFF,DDRD); //PortD: alles als Ausgang
//Ports digital ansteuern
outp(0x0,PORTB); //Alle Ausgänge werden auf low gesetzt
outp(0x0,PORTD); //Alle Ausgänge werden auf low gesetzt
while (1)
{
i++;
outp(i,PORTB);
warten (200);
}
}
-
will ja nix sagen aber mit copy paste ist mit c nicht viel zu erreichen. würd erstmal den c syntax lernen, wenn du ihn nicht schon kannst.
also ich beschalte ports immer so:
Code:
DDRB |= (1 << PB0)
PORTB |= (1 << PB0)
PORTB &= ~(1 << PB0)
ps: was noch sein kann wo ist die outp() drin? vielleicht #include <*.h> vergessen?
-
hmm ich hab bisher nur das handyboard in interactive C programmiert. ich glaube da ist der umstieg auf AVRgcc nich mehr schwierig. aber ich wollte mich eben erstmal mit der funktionsweise der programme auseinandersetzen, bevor ich anfange zu programmieren.
-
hab gerad auf mikrocontroller.net hilfe gefunden:
>>
Schreiben eines I/O-Registers
Zum Schreiben kann man I/O-Register einfach wie eine Variable setzen. In Quellcodes, die für ältere Versionen des avr-gcc/der avr-libc entwickelt wurden, erfolgt der Schreibzugriff über die Funktion outp(). Aktuelle Versionen des Compilers unterstützen den Zugriff nun direkt und outp() ist nicht mehr erforderlich.
<<
damit ist wohl alles klar, das beispielprogramm war wohl etwas älter. mich wundert allerdings, dass eine funktion, die in einer älteren version funktionierte, in der neueren nicht mehr funktioniert...
-
oh ja ;) da gibts ein paar fallstricke hab die selbst erlebt.
software ging - neues winavr - ging nimmer :D