Forum: Mikrocontroller und Digitale Elektronik AVR Wechsel m644 zu m1284p build Fehler in ISR


von jar (Gast)


Lesenswert?

beim Wechsel von m644 zu m1284p passiert folgendes

SIGNAL(SIG_OVERFLOW0) alt
../timer2_104.c:211: warning: 'SIG_OVERFLOW0' appears to be a misspelled 
signal handler

probiert:
ISR(SIG_OVERFLOW0) dito

lt. Datenblatt ist TIMER0_OVF -> Vector(19) im m1284p
im m644 dito
19 $0024 TIMER0_OVF Timer/Counter0 Overflow

in der
iomxx4.h"(805) #define SIG_OVERFLOW0      _VECTOR(18)
wieso ist da ein Unterschied zur m644 ?

und welcher Vector gilt nun und wie beseitigt man den Fehler ?

vielen Dank

von jar (Gast)


Lesenswert?

es wird immer verrückter

suche ich nach

SIG_OVERFLOW0

stosse ich auf:
iom128.h"(426) #define SIG_OVERFLOW0      _VECTOR(16)
iom64.h"(425) #define SIG_OVERFLOW0      _VECTOR(16)
iomxx4.h"(805) #define SIG_OVERFLOW0      _VECTOR(18)

nirgendwo taucht _VECTOR(19) auf welcher ja der TIMER0 overflow sein 
soll

suche ich falsch ? *.h
"C:\PROGRAMME\ATMEL\WINAVR\avr\include\avr\ mit subfolders

von Verwirrter Anfänger (Gast)


Lesenswert?

Wenn du ISR nimmst, ist die korrekte Variante:
1
ISR(TIMER0_OVF) {
2
...
3
}

Ich kenn die Signal Variante nicht, aber nach
http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html
scheint die veraltet zu sein.

Die neuen Namen findest du unter 12.2 im DAtenblatt des 1284p

von jar (Gast)


Lesenswert?

also ich finde kein define zu SIG_OVERFLOW0 mit vector 19
bei vector 19 finde ich kein define zu SIG_OVERFLOW0

von Michael (Gast)


Lesenswert?

Dafür steht in iom1284p.h
#define TIMER0_OVF_vect   _VECTOR(18)  /* Timer/Counter0 Overflow */
#define SPI_STC_vect      _VECTOR(19)  /* SPI Serial Transfer Complete 
*/

Gegenüber dem Datenblatt scheinen die Nummern alle um verschoben, weil 
dort der Resetvektor als Vektor 1 aufgeführt ist.
mfg

von Thomas E. (thomase)


Lesenswert?

Verwirrter Anfänger schrieb:
> Wenn du ISR nimmst, ist die korrekte Variante:ISR(TIMER0_OVF) {

Nicht ganz.

ISR(TIMER0_OVF_vect)
{
}

SIG... ist obsolet und für die neueren µC nicht mehr gültig.

mfg.

von Thomas E. (thomase)


Lesenswert?

Michael schrieb:
> Gegenüber dem Datenblatt scheinen die Nummern alle um verschoben, weil
> dort der Resetvektor als Vektor 1 aufgeführt ist.
Und?
Der Compiler fängt das richtige damit an.
mfg.

von jar (Gast)


Lesenswert?

Verwirrter Anfänger schrieb:
> Wenn du ISR nimmst, ist die korrekte Variante:

sagte ich nicht bereits das ich das probiert hatte ?

../timer2_104.c:212: warning: 'TIMER0_OVF' appears to be a misspelled 
signal handler
1
ISR(TIMER0_OVF)
2
//ISR(SIG_OVERFLOW0)
3
//SIGNAL(SIG_OVERFLOW0)
4
{  extern volatile UWORD count__;
5
  cli();
6
  count__++;
7
  TCNT0 = -2;          // 2 * 256 = 512 cycle      // preload for 250µs RC5
8
9
    (void) irmp_ISR();                                     // call irmp ISR
10
  (void) rc5_ISR();
11
  sei();
12
}

es bleibt ja dabei das ich keine Verknüpfung finde

"C:\PROGRAMME\ATMEL\WinAVR\avr\include\avr\iomxx4.h"(804) #define 
TIMER0_OVF_vect      _VECTOR(18)
"C:\PROGRAMME\ATMEL\WinAVR\avr\include\avr\iom644pa.h"(946) #define 
TIMER0_OVF_vect      _VECTOR(18)  /* Timer/Counter0 Overflow */


wo es doch eigendlich lt. Datenblatt Vector 19 sein soll

also das hier verwirrt noch mehr,
suche ich nach: _VECTOR(19) finde ich
iom16hvb.h"(850)
iom32hvb.h"(833)

beide haben doch nix mit dem 644 oder 1284p zu tun ?

suche ich nach: TIMER0_OVF finde ich
iom1284p.h"(1057) _VECTOR(18)
iom644pa.h"(945) #define TIMER0_OVF_vect_num  18
iom644pa.h"(946) #define TIMER0_OVF_vect      _VECTOR(18)

doc2593.pdf
10.1 Interrupt Vectors in ATmega644
(Vector)19 $0024 TIMER0_OVF Timer/Counter0 Overflow

dito in m1284p

win avr Version WinAVR-20100110

von jar (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Nicht ganz.
>
> ISR(TIMER0_OVF_vect)

das hat geholfen, ein Fehler weniger ! DANKE DANKE DANKE

bleibt nur noch
warning: 'SIG_OUTPUT_COMPARE2A' appears to be a misspelled signal 
handler

von jar (Gast)


Lesenswert?

mit

ISR(TIMER2_COMPA_vect)

ist auch Fehler 2 weg, danke fürs führen auf die richtige Spur

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.