mikrocontroller.net

Forum: Compiler & IDEs Neue Winarv software


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen

hab mal ne frage zur neuen winavr (21.04.2006) software.
mit der alten software hat mein programm funktioniert bin dann auf die
neue software ungestiegen und jetzt funktionieren alle interrupts nicht
mehr. hab die codezeilen mal unten angehängt.kann mir jemand sagen was
daran falsch ist?

gruß michael

//*** NEU

MCUCR = (1<<ISC01) | (0<<ISC00);
GIFR =  ((1<<INT0)|(0<<INT1));

TCCR1A = (0<<COM1A1) | (0<<COM1A0) | (0<<PWM10) | (0<<PWM11);
TCCR1B = (0<<CTC1) | (0<<CS12) | (1<<CS11) | (0<<CS10);
TIMSK = ((1<<OCIE1A)|(1<<TOIE1));

ISR (INT0_vect)

ISR (TIMER1_OVF1_vect)



//*** ALT

MCUCR = (1<<ISC01) | (0<<ISC00);
enable_external_int (1<<INT0);

TCCR1A = (0<<COM1A1) | (0<<COM1A0) | (0<<PWM10) | (0<<PWM11);
TCCR1B = (0<<CTC1) | (0<<CS12) | (1<<CS11) | (0<<CS10);
timer_enable_int ((1<<OCIE1A)|(1<<TOIE1));

SIGNAL (SIG_INTERRUPT0)

SIGNAL (SIG_OVERFLOW1)

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An dem was Du gepostet hast, kann man nichts sehen. Warum schickst Du
nicht den kompletten Code?

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meine frage richtet sich ja nur nach den geänderten interrupt aufrufen
ob die stimmen.kann jedoch später den code nachreichen.

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ISR (TIMER1_OVF1_vect)

Da ist ne '1' zu viel hinter dem OVF (also 'TIMER1_OVF_vect').

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-> avr-gcc Tutorial dieser Seite lesen!
-> Doku zum Compiler lesen

Stichworte:

INTERRUPT
SIGNAL

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Alex:
Nee, eben nicht. INTERRUPT und SIGNAL sind, wie Michael schon ganz
richtig erkannt hat, veraltet!

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@alex: das habe ich bereits gemacht, aber ich bekomme es alleine mit
diesen informationen nicht zum laufen.

@johnny: hab bei mir in der io2313.h nachgesehen und da steht der
vector so "TIMER1_OVF1_vect", sollte also auch stimmen.

ich schalte das globele interrupt flag mit "sei" ein, das gibt es
doch noch in dieser version, oder?

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, da Du oben nicht gesagt hattest, welchen Controller Du verwendest,
hatte ich bei einem ATMega nachgesehen, und da heißt der Vektor
TIMER1_OVF_vect, was auch Sinn macht, da ein Timer nun mal nur einen
Overflow hat...

Wenn Du die Interrupts mit 'sei();' einschaltest, sollte das
funktionieren.

BTW: Wie äußert sich das Problem eigentlich genau? DU schreibst
lediglich, dass 'alle Interrupts nicht mehr funktionieren'...

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe an meinem externen interrupt einen zero cross detektor, dieser
sollte also alle 20ms einen interrupt bringen und meinen code aufrufen,
doch da passiert nichts, die codezeilen für den interrupt bleiben
unausgeführt.

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

Bewertung
0 lesenswert
nicht lesenswert
Schau dir doch mal den disassemblierten Code an, insbesondere ob
alle Interruptvektoren ordentlich ausgefüllt sind.

Errm, ich hab's: nicht GIFR willst du setzen, sondern GIMSK.

Das mit dem TIMER1_OVF1 ist ärgerlich, aber das steht wirklich so
in Atmel's XML files drin. :-(

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Autsch, das hab ich doch glatt übersehen... Naja, ist ja noch früh am
Morgen...

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@jörg:

du hast natürlich recht, ich hab´s zig mal kontrolliert und nicht
gesehen. super! dankeschön! ich hätte bestimmt noch ewig gesucht.

gruss michael

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Johnny

Diese Neuerung war mit glatt entgangen, schade das der Compiler bei
meinen aktuellen Programmen dann nicht automatisch einen Hinweis ala
"deprecated Makro" gibt. So merkt man die Änderung unter Umständen
erst, wenn beim nächsten Release garnichts mehr geht.

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.