Forum: Mikrocontroller und Digitale Elektronik countercompare falscher interruptsprung -C- tiny2313


von Ete P. (etepetete)


Lesenswert?

hi,

ich habe vor das beim counter beim erreichen eines wertes der interrupt
kommt und ein unterprogramm auslößt.

es klappt auch ganz gut, nur das laut simulator ( avr studio ) das
programm komplett neu startet und nicht die interruptroutine.

das selbe problem ist beim "anspringen des externen interrupts

sobald ich mit ISR den zweiten interruptvektor setze mault der compiler
das ISR schon defeniert ist.



zum code ( ausschnittweise )

main(void)
{
.
.
// counter 16bit
TCCR1B |= (1<<CS12)|(1<<CS10); // Setzt timer teiler auf 1024
TIMSK |= (1<<OCIE1A); // interrupt bei compare
OCR1A = 2; // vergleichsregister einen wert zuordnen

// counter 8bit
TCCR0B |= (1<<CS00)|(1<<CS02); // teiler auf 1024


// interruptroutine aktivieren
GIMSK |= (1<<INT1); // externer interrupt
MCUCR  |= (1<<ISC11 )|(1<<ISC10 ); //flankendefinition interrupt int1

sei();

while (1)
{
}
.
.
}// main zu ende


//SIGNAL(TIMER1_COMPA)
ISR(TIMER1_COMPA_vect)
{
}

von Karl heinz B. (kbucheg)


Lesenswert?

> das selbe problem ist beim "anspringen des externen interrupts
>
> sobald ich mit ISR den zweiten interruptvektor setze mault der
> compiler das ISR schon defeniert ist.

Deutet alles darauf hin, dass irgend ein erforderliches Header-File
nicht inkludiert ist.

von Ete P. (etepetete)


Lesenswert?

habe gesehen das der compiler was rauswirft wenn man einzeln
kompiliert:

../lighterv1.c:453: warning: return type defaults to `int'
../lighterv1.c: In function `ISR':
../lighterv1.c:474: warning: control reaches end of non-void function


#include "lighterv1.h"

dadrin sidn die:

#include <inttypes.h>
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/eeprom.h>
#include <stdint.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>

von Karl heinz B. (kbucheg)


Lesenswert?

Welche Compiler-Version benutzt du?

von Ete P. (etepetete)


Lesenswert?

ist das die version ?

20050214 von winavr
3.4.3 gcc

von johnny.m (Gast)


Lesenswert?

Tja, die Version kannte noch kein ISR. Entweder ein Update oder SIGNAL
benutzen...

von Karl heinz B. (kbucheg)


Lesenswert?

Du solltest dir neuere Versionen holen.

http://sourceforge.net/project/showfiles.php?group_id=68108

von Rahul (Gast)


Lesenswert?

#define ISR SIGNAL

oder?

von Ete P. (etepetete)


Lesenswert?

lade die neue version runter.
ich habe auch mit signal progiert ( in der zeile über ISR,
auskommentiert ) da war aber der selbe fehler.

versuche erstmal das update und dann melde ich mich wieder.. und
hoffentlich mit etwas positivem :o)


danke schonmal

von Karl heinz B. (kbucheg)


Lesenswert?

Nicht ganz, die Makro Konstanten heissen auch anders

von Karl heinz B. (kbucheg)


Lesenswert?

> ich habe auch mit signal progiert ( in der zeile über ISR,
> auskommentiert ) da war aber der selbe fehler.

Da hättest du zusätzlich noch
#include <signal.h>
gebraucht.

Der Umstieg auf eine neuere Version ist sicher eine
weise Entscheidung. Hast du eine aktuelle Version vom
AVR-Studio?

von Ete P. (etepetete)


Lesenswert?

so habe avrstudio auch noch geupdatet, nachdem es nicht mehr
compilierte.

jetzt läuft alles und auch der interrupt kommt nun :o)

danke nochmals

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.