Forum: Compiler & IDEs Interrupts werden nicht ausgeführt


von HUE (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

leider werden meine Interrupts nicht ausgeführt, sie sollen eine LED zu 
Blinken mit 0.5Hz bringen am Port B1. Leider kommt es nicht zum 
Interrupt.

Was ist denn da los, denn das Programm lief auf einem anderen Controller 
schon?

Hat jemand einen Tip?

Das Makefile sieht so aus:

MCU=atmega8

all:  logger.S
  avr-gcc -mmcu=${MCU} logger.S -o logger.elf
  avr-objcopy -O ihex logger.elf logger.hex

von Zulu (Gast)


Lesenswert?


von HUE (Gast)


Lesenswert?

Hallo,

was soll ich jetzt beschreiben: Mein Programm funktionierte über 2 Jahre 
ohne Zwischenfall. Ich hatte dies unter NetBSD mit tavrasm und avrdude 
erzeugt und geladen.

Heute will ich das gleiche Programm nochmal auf einen Controller bringen 
und benutze OpenBSD mit den avr-gcc und ich bekomme es nicht zum Laufen. 
Ich vermute in den Deklarationen im logger.S sind noch einige Fehler, so 
daß meine Interrupts nicht starten, die erzeugen das Blinksignal am 
Port.

Ich hoffe ich konnte jetzt etwas konkreter werden.

MfG

HUE

von Zulu (Gast)


Lesenswert?

>Ich hoffe ich konnte jetzt etwas konkreter werden.

Nein.

Beitrag ""Hilfe", "funktioniert nicht", funktioniert nicht."

Punkte 1, 3 und folgende.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

HUE schrieb:

> Was ist denn da los, denn das Programm lief auf einem anderen Controller
> schon?

Anderer Typ?

Dann die Konfigurationswerte für die Spezialfunktionsregister anhand der 
Datenblätter kontrollieren

Anderes Exemplar?

Fuses kontrollieren. Der µC soll lt. Programm mit 16 MHz laufen. Ab Werk 
kommt er aber mit 1 MHz. Pi*Daumen: Statt 0,5 Hz Blinken, wäre es dann 
ein 0,03125 Hz Blinken... vielleicht zu langsam für den ungeduldigen 
Tester.

von HUE (Gast)


Lesenswert?

Hallo,

auf dem Board habe ich ein 16Mhz Quartz verbaut und die LED leuchtet, 
wenn ich sie in der loop: setze -> Controller läuft!

Wenn ich den Watchdog noch mit 2,1 sec setze, dann wird dieses 
Dauerleuchten nach 2,1 sec unterbrochen, aber nicht mit 0.5 Hz.

Also läuft mein Timer 0 nicht in eine ISR und bringt sie zum Wechseln 
des Status. Dort würde ich auch den Watchdog zurücksetzen.

So funktionierte das über Jahre ohne Ausfälle!

Hat noch jemand eine Idee?

MfG

HUE

von Zulu (Gast)


Lesenswert?

Tja. Rätselhaft das Ganze.

von Klaus W. (mfgkw)


Lesenswert?

Ein Teufelskreis!

Fast wie im richtigen Leben.

von Karl H. (kbuchegg)


Lesenswert?

HUE schrieb:
> Hallo,
>
> auf dem Board habe ich ein 16Mhz Quartz verbaut

Das heißt noch lange nicht, dass der µC auch mit 16Mhz läuft.

von Thomas K. (muetze1)


Lesenswert?

Mal wieder ein volatile Problem, da der aktuelle gcc besser optimiert?

von HUE (Gast)


Lesenswert?

Hallo,

hat nicht jemand einen Vorschlag, wie die Kopfzeilen von logger.S für 
die Compileranweisungen auszusehen haben?

MfG

HUE

von Stefan B. (stefan) Benutzerseite


Angehängte Dateien:

Lesenswert?

Schaut man sich die Ausgabe von deinem make mit deinem Makefile im AVR 
simulator (AVR Studio) an, sieht man ZWEI Interrupttabellen. Zuerst 
eine vom avr-gcc erzeugte und dann deine. Klar, dass deine nie 
angesprungen wird.

Wie kann man nun avr-gcc veranlassen keine Interrupttabelle zu 
schreiben?

Die Lösung habe ich in einem Beitrag von Jörg Wunsch gefunden:
Beitrag "Re: AVR-GCC in Assembler-Modus"

Man muss explizit ohne C-Startupcode linken! Ich habe dazu dieses 
Makefile (s. Anhang mit Tabs) benutzt:
1
MCU=atmega8
2
3
all:  logger.S
4
  avr-gcc -mmcu=${MCU} -c logger.S 
5
  avr-ld -mavr2 logger.o -o logger.elf
6
  avr-objcopy -O ihex logger.elf logger.hex

Das Blinken im Logger lässt sich dann mit dem AVR Studio simulieren. Man 
braucht allerdings etwas Geduld bis in der Simulation die Wartezeiten im 
Timer abgelaufen sind.

von HUE (Gast)


Lesenswert?

Hallo,

Danke, Danke, Danke...

MfG

Volker Wolfram

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.