Forum: Mikrocontroller und Digitale Elektronik Interrupt auf falscher Adresse


von itachi (Gast)


Angehängte Dateien:

Lesenswert?

Hi ich bins scho wieder mit nem neuen Problem. Werden sicher scho welche
gehabt haben, weshalb ich hoff dass die Lösung schnell präsentiert wird.
Bin am verzweifeln:
Hab nen Timer0 Interrupt beim Atmega8 Programmiert und beim Simulieren
hupft mir der Prozi auf die falsche Adresse -> fangt dann wieder von
oben an (bei genauerer betrachtung springt er irgendwo in einen Bereich
vor main() rein und arbeitet halt main() nochmal ab und bleibt dann
endgültig hängen. Hab scho so ein Problem gehabt aber damals konnte
ichs  lösen ... wenns hilft ich bild mir ein das Prob lag am Makefile
Ich verwend die neueste WinAVR Version und Avr Studio 4.12 sp2 im
Anhang is der Quellcode.
danke scho mal im voraus

von xyz (Gast)


Lesenswert?

Moin!

Die Interruptadressen liegen ziemlich am Anfang der Einsprungadressen.

Also wenn Du schon Timer 0 Prgrammiert hast dann solltest Du auch einen
Sprungbefehl ab der Interrupeinsprungaadresse hinterlegen die deine
Interruptserviceroutine abarbeitet.

Hast Du es nicht getan brauchst Du dich nicht wundern das dein Programm
immer von vorne beginnt.

Schau mal ins Datenblatt oder hier ins Tutorial.

Gääähn

von itachi (Gast)


Lesenswert?

sorry hab vergessen dazuzusagen dass ich das mit winavr schreib also in
c. Da ist sowas soweit ich weis nicht notwendig. Zumindest beim
at86rf401 hab ich das im Makefile gelöst ..irgendwas war da falch aber
in diesem fall find ichs ned.

von itachi (Gast)


Lesenswert?

deiner Ausssage nach zu urteilen hast du nicht mal in den Quellcode
geschaut oder ich bin sehr vergesslich was das den at86rf401
betrifft^^.

von Karl H. (kbuchegg)


Lesenswert?

Du hast vergessen in
interrupt.c
die noetigen includes  avr/interrupt.h
zu machen.

Dann passiert sowas.

Übrigens: keine gute Idee, deine eigenen Files
(interrupt.c, interrupt.h) genau so zu benennen
wie die vorgegebenen Systemfiles. Sowas führt nur zur
Verwirrung.

von itachi (Gast)


Lesenswert?

ahhh danke, ned dass da da compiler schreit O_O wäre sonst in 5 min
erledigt nein man is dumm und kann fehler nicht interpretieren :-)

von itachi (Gast)


Lesenswert?

bin zwar kein profi aber für meine zwecke kann ich meine
interrupt.c/interrupt.h und die <avr/interrupt.c> grad noch
unterscheiden.
wenn du mir raten würdest ich sollte alles in eine datei reinhaun um
diverse linkerprobleme zu verhindern versteh ichs noch abgesehen is es
so übersichtlicher ..naja jedenfalls danke jetzt funzzts einwandfrei.

von Karl H. (kbuchegg)


Lesenswert?

> bin zwar kein profi aber für meine zwecke kann ich meine
> interrupt.c/interrupt.h und die <avr/interrupt.c> grad noch
> unterscheiden.

Ich bin Profi (Verdiene meine Brötchen mit SW-Entwicklung).
Wenn ich jedesmal wenn sich ein Nachwuchsprogrammierer
mit einfachsten Mitteln selbst ausgetrickst hat auch nur
10 Cent bekommen hätte, wäre ich ein reicher Mann.

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
Noch kein Account? Hier anmelden.