Hallo ich bin noch nicht so ganz fit in Interrupts und habe auch beim kompilieren Fehler bekommen. Vielleicht kann mir jemand helfen. Danke. Es handelt sich um einen ATMega16. folgende Fehler beim AVR-GCC: ../Interrupt1.c:25: error: 'GICR' undeclared (first use in this function) ../Interrupt1.c:25: error: (Each undeclared identifier is reported only once ../Interrupt1.c:25: error: for each function it appears in.) ../Interrupt1.c:29: error: static declaration of '__vector_2' follows non-static declaration ../Interrupt1.c:29: error: previous declaration of '__vector_2' was here make: *** [Interrupt1.o] Error 1 Build failed with 5 errors and 0 warnings... Was ich auch nicht so ganz verstehe warum er mir GICR anmeckert? Der ist doch im avr/iom16.h und somit der aufrufenden avr/io.h deklariert?
Wenn du das dann hast, dann nimmst du die ISR aus der main() raus. Offiziell ist es in C nicht möglich Funktionen innerhalb von anderen Funktionen zu definieren
1 | ....
|
2 | |
3 | ISR( ... ) |
4 | {
|
5 | ....
|
6 | }
|
7 | |
8 | int main() |
9 | {
|
10 | ....
|
11 | }
|
> volatile int a=1; volatile wird in diesen code nicht gebraucht. > int i = 128; i > 1; i -= i/2) warum int? ist dir der controller etwas zu schnell? > _delay_ms(1000); eine ISR sollte schnell sein, dieses passt nicht mit dem delay zusammen.
oooh ja ich bin echt blind das war natürlich ein ordenlicher Fehler, vielen Dank.
Wenn Du das nicht weißt, hast Du dort auch nichts falsches angegeben. Hast Du in den Tiefen Deiner Menüs eventuell den falschen Prozessor eingestellt?
nein ich habe zuerst nicht angegeben, also keinen AVR und dann habe ich mit AVR Zuweisung am Anfang probiert klappt beides leider nicht.
hi also ich habe den Fehler selber schon gefunden und zwar war der Tip mit makefile schon ganz gut denn da ist ATMega128 definiert und diese hat natürlich andere Registerbezeichnung. Wollte nur jetzt fragen wie übernehme ich den Wert neuer MCU in makefile? Ich kann sie auwählen aber nicht speichern zumindest klappt bei mir nicht.
STK500 und AVR Studio 4.14. Ich habe jetzt das mit makefile gemacht aber er reagiert nicht muss ich wo anders einstellen damit die richtige iom16.h und nicht io128.h genommen wird?
giggi schrieb: > STK500 und AVR Studio 4.14. Ich habe jetzt das mit makefile gemacht aber > er reagiert nicht muss ich wo anders einstellen damit die richtige > iom16.h und nicht io128.h genommen wird? Vergiss das makefile. Im AVR-Studio stellst du das ganz einfach unter den Project Options ein Menüpunkt 'Project' Ganz unten 'COnfiguration Options' Dort solltest du auch die tatsächliche Taktfrequenz eintragen. Nicht vergessen: Für den Simulator gibt es eine eigene Einstellung für das verwendete Gerät. -> Wenn man beim Erzeugen des Projekts aufpasst und gleich das richtige Device einträgt, spart man sich viel Ärger.
hi vielen Dank für diesem Tip, habe gerade sogar das selber gefunden beim suchen. Das Problem war dass ich schon mal das ganze so angewählt habe jedoch statt atmega16 hat er atmega128 übernommer und das habe ich übersehen. Jedoch hat jetzt zum Glück alles geklappt. Naja jetzt bin ich zumindest schlauer. Trotzdem vielen Dank!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.