www.mikrocontroller.net

Forum: Compiler & IDEs atmega32 Interrupt Problem


Autor: Mario Bernhard (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich kapier es nicht und brauche mal Hilfe. Wenn ich den Timer0
Interrupt aktiviere und dieser auftritt startet das Programm bei
main(). Ohne aktivierten Interrupt blinkt die LED. Sobald der Interrupt
aktiviert wird leuchtet sie immer, denn innerhalb der _delay_loop wird
der Interrupt ausgelöst und das Programm beginnt bei main(),

Ich benutze den avr-gcc 3.4.5 mit avr-libc-1.4.4 unter Linux. Nachdem
ich dort nicht weiter kam habe ich den Source mit dem WinAVR kompiliert
und im AVRStudio laufen lassen. Im Simulator kann man schön sehen wie er
zu main() springt. Nachdem ich das Macro ISR gegen SIGNAL ausgetauscht
hatte funktionierte es zumindest im Simulator. Aber auch nur dort. Hier
im Forum habe ich dann gelesen das es sein kann das er wegen fehlender
Interrupt Funktionen oder falscher Optimierung beim Interrupt zur
Adresse 0x00 spring. Ich habe dann alle Möglichen Optimierungen
durchprobiert (auch ohne) und für alle Interrupts die Funktionen
geschrieben. Hat alles nichts geholfen.
Mir fällt echt nichts mehr ein - wo kann ich noch suchen ?

Mit Gruß
Mario

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tut hier anstandslos.  Ich habe aber nur einen ATmega16, keinen
32er.  Habe noch ein PORTD ^= 2 in die ISR gebaut, man kann am
Oszi gut beide Impulsfolgen sehen, die nahezu gleich lang sind
(aber nicht ganz).

Hast du's für den falschen Controller compiliert?

Autor: Mario Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Glaub ich nicht so. Auf dem Board ist ein ATMega32. Kompiliert habe ich
mit (Resultat vom makefile):
avr-gcc -c -Wall -Os -mmcu=atmega32 -o main.lo
avr-gcc -o main main.lo
avr-objcopy -j .text -j .data -O ihex main main.hex
avrdude -cpony-stk200 -patmega32 -Uflash:w:main.hex:i

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im avr-gcc-Aufruf für das Linken fehlt die -mmcu= Option.

Autor: Mario Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jup! Danke das war es. Jetzt arbeitet das Teil.
Echt vielen Dank - währe ich nie drauf gekommen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.