Forum: Compiler & IDEs avr-gcc unter linux Probleme mit ISR


von Oliver Schneidewind (Gast)


Angehängte Dateien:

Lesenswert?

Hi @ all

ich versuche seit Tagen mit Hilfe des avr-gcc eine Kleine ISR für den
Timer zu Schreiben.Ziel ist es eine At90s2313 dazu zu bringen das er
auf Port B einfach bis zum Overflow die Bit hochzahlt.
Problem ist das es einfch nicht zu den Ersehnten Interrrupt kommt.
Den Code für des beispeil sende ich als Anhang.
Nach den Compiliern mit den aufruf

avr-gcc -mmcu=at90s2313 -o demo -demo.c

habe ich mir mal die mühe gemacht eine objdump mit den aufruf :

avr-objdump -S demo > demo.s
zu machen um mir das Assambly anzusehen und bin mir nicht sicher ob die
Werte für die Interrupt Vectoren stimmen, die dort eingetragen sind
jedenfalls funktioniert das ganze nicht was mache ich falsch

Angaben zu den benutzten Versionen :
binutils-2.16.1
gcc-core-3.4.6
avr-libx-1.4.4

zum laden
avrdude5-1.tar.gz

mfg Olvier

-- auszug demo.s  ---

00000000 <__vectors>:
   0:  0a c0         rjmp  .+20       ; 0x16 <__ctors_end>
   2:  22 c0         rjmp  .+68       ; 0x48 <__bad_interrupt>
   4:  21 c0         rjmp  .+66       ; 0x48 <__bad_interrupt>
   6:  20 c0         rjmp  .+64       ; 0x48 <__bad_interrupt>
   8:  1f c0         rjmp  .+62       ; 0x48 <__bad_interrupt>
   a:  37 c0         rjmp  .+110      ; 0x7a <__vector_5>
   c:  1d c0         rjmp  .+58       ; 0x48 <__bad_interrupt>
   e:  1c c0         rjmp  .+56       ; 0x48 <__bad_interrupt>
  10:  1b c0         rjmp  .+54       ; 0x48 <__bad_interrupt>
  12:  1a c0         rjmp  .+52       ; 0x48 <__bad_interrupt>
  14:  19 c0         rjmp  .+50       ; 0x48 <__bad_interrupt>

von Grummel (Gast)


Lesenswert?

Hallo
Ein solches Problem hatte ich unter linux auch schon.
KOmischerweise hat es geklappt, als ich statt dem
"ISR(TIMER1_OVF1_vect)"  die ältere (und ja angeblich schon
veraltete)
SIGNAL(SIG_OVERFLOW0) benutzt habe.Anders hat es bei mir einfach nicht
geklappt.

von Oliver Schneidewind (Gast)


Lesenswert?

Bringt leider auch nichts ich bemerke keine änderung am Programm wenn
ich das einsetzte

Ciao

Oliver

von A.K. (Gast)


Lesenswert?

"DDRB    = 0x00;"

Alle Pins auf Input und hoffen dass sie was ausgeben?

von Sebastian (Gast)


Lesenswert?

Wo ist jetzt das Problem mit den Vektoren ?

1
* Timer/Counter1 Overflow */
2
#define TIMER1_OVF1_vect    _VECTOR(5)
3
#define SIG_OVERFLOW1      _VECTOR(5)

Passt doch...

Gruß Sebastian

von A.K. (Gast)


Lesenswert?

Funktioniert denn überhaupt irgend etwas etwas? Was liegt als Takt an?

von Oliver Schneidewind (Gast)


Lesenswert?

mit einer sog busy_Wait Schleife scheind es zu gehen. aber der Idee mit
den Takt werde ich woll noch nachgehen.


Ciao

Oliver

von Oliver Schneidewind (Gast)


Lesenswert?

OK Danke an Alle,

Asche auf mein Haupt ich habe vergessen das Produkt des Avr-gcc
mit hilfe von

avr-objcopy -O binary -demo demo.bin

zu wandeln um es mit avrdude  den at90s2313 gerecht zu servieren !


trotzdem Danke an alle.

Oliver

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.