Gast
#3010252
Hallo allerseits, Ich steige gerade in die Programmierung eines ATtiny ein (ist zwar nicht der erste avr-Kontakt, aber der letzte liegt schon eine ganze Weile zurück). Dabei stoße ich auf diesen möglichen Fehler, zu dem ich im Netz noch gar nichts gefunden habe: Kurzform: Ist main() nicht die erste Funktion im Sourcecode, geht es nicht. Beispiel (am Port hängen LEDs): ----- Start ----- #include <avr/io.h> #include <avr/interrupt.h> void init(); int main() { init(); PORTD = 0x32; while(1); return 0; } void init() { DDRD = 0xff; } ----- Ende ----- Mit diesem Programm funktioniert es und die LEDs werden korrekt eingeschaltet. ----- Start ----- #include <avr/io.h> #include <avr/interrupt.h> void init() { DDRD = 0xff; } int main() { init(); PORTD = 0x32; while(1); return 0; } ----- Ende ----- Mit diesem Programm funktioniert es nicht, die LEDs bleiben dunkel. Soll das so sein (nach den Beispielen natürlich nicht), oder hat jemand irgendeine Idee, was das sein könnte? Prozessor ist ein ATtiny48, die avr-Tools habe ich unter einem ziemlich aktuellen Ubuntu installiert (gcc 4.5.3), kompilieren tu ich mit avr-gcc -mmcu=attiny48 -c source.c dann linken usw. Im Prinzip ist mir die Anordnung der Funktionen ja egal, allerdings habe ich Probleme mit der Ausführung von Interrupts, und da wollte ich erst mal sichergehen, daß das nicht an dieser Stelle hängt.. tschüß und danke schon mal!