Gast
#691005
Moin Männers, ich brauche mal eure Hilfe. Ich habe mich jetzt durchs Tut gelesen, gesucht und alle möglichen Bücher gewälzt, aber das Problem ist nach wie vor da. Eigentlich ist es ganz simpel, aber naja. Entweder sehe ich den Wald vor lauter Bäumen nicht, oder ich hab ne Bildungslücke! Also ich bin gerade dabei das Projekt an dem ich arbeite in handliche Stücke zu trennen. Sprich es soll eine Codesammlung herauskommen welche wiederverwendbar sein soll. Dazu sollten auch die ISR mit in die dazugehörigen Files. D.h. im Terminal-Programm sollen auch die UART-ISR mit abgelegt sein. Das macht ja Sinn. Frage: Kann ich ISR in andere Dateien, wo nicht die main-Schleife ist auslagern? Laut meinem C-Verständnis sollte das gehen. Also habe ich eine ISR (welche funktioniert) einfach in eine externe Datei verschoben, die Variablen mit in eine zugehörige h.-Datei verschoben und alles compiliert. Das Ergebnis: Build started 1.11.2007 at 23:26:34 ../terminal-routines.h:27: warning: 'send_buf' defined but not used avr-gcc.exe -mmcu=atmega128 main.o lcd-routines.o environment.o terminal-routines.o spi-routines.o -o main.elf terminal-routines.o: In function `usart_init': ../terminal-routines.c:44: multiple definition of `RxProducer' main.o:../main.c:31: first defined here terminal-routines.o: In function `usart_init': ../terminal-routines.c:44: multiple definition of `RxConsumer' main.o:../main.c:31: first defined here make: *** [main.elf] Error 1 Build succeeded with 3 Warnings... Wobei, jedes File für sich compiliert geht ohne Warnungen durch, nur das linken macht Probleme. Gibt es bei WinAVR noch versteckte Settings wo man drehen kann? Beide Programme sind up to date, ein Versions-Problem kann ich also ausschliessen. Ich habe wirklich nur die betreffenden Routinen ausgelagert!! :-( Woran könnte es noch liegen? Danke für eure Hilfe Asterix-007 P.S. Code liefere ich nach, wenn ihr meine erste Frage mit "ja" beantwortet.