-         

Ergebnis 1 bis 10 von 10

Thema: Interrupt problem

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.09.2005
    Ort
    AUT
    Beiträge
    17

    Interrupt problem

    Anzeige

    Hallo!

    ICh habe das Problem, dass mein Compiler den Ausdruck SIG_OUTPUT_COMPARE0 nicht kennt. Ich verwende den ATmega32 und habe die Bilbiotheken interrupt, io, und signal includiert.

    Ich bitte um eure Hilfe und bedanke mich dafür im Vorraus

    MfG

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Das Makro ist im WinAVR in der Lib für den Mega32 auf jeden Fall vorhanden, die ja über io.h eingebunden wird.
    Hast Du im Makefile den Prozessor richtig angegeben?
    Ist unter WinAVR\avr\include\avr die iom32.h wirklich vorhanden und ist das Makro dort definiert?
    Hast Du Dich vielleicht verschrieben?

    Was anderes fällt mir im Moment nicht ein.

    askazo

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Wie sieht denn die Fehlermeldung aus?

    Hast du das rot geschriebene beachtet in?
    http://www.roboternetz.de/wissen/ind...gcc#Interrupts
    Disclaimer: none. Sue me.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    31
    Beiträge
    795
    Hallo,

    Ich habe ein seltsames Problem.

    Ich will nun in einem Programm einen TIMER Interrupt verwenden ( Mega32 )

    wenn ich mit dem Befehl sei(); die Interrupts global freigebe, dann scheint es als würde der Mega32 immer wieder neustarten. er kommt garnicht dazu etwas zu machen.

    Er schreibt mir immer über den UART "INITIALISATIN OK"
    Das schreibt er normal 1 mal wenn er eben das zeug Initialisiert.

    Ich weiß mir da leider nicht zu Helfen.
    Gruß,
    Franz

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,
    das kann dann nur ein Interrupt sein, der nicht von Dir gewünscht ist, so ein IRQ springt dann zum Reset.
    Du musst jetzt nur herausfinden was für ein IRQ da auftritt oder ob Du irgendwo einen Interupt einschaltest und keine ISR dafür da ist.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    31
    Beiträge
    795
    nun ja.

    Ich will im Prinzip dass mein Mega32 alle 0.5 sec eine Statusinformation an den CAN-BUS sendet.

    Da es verschiedene Operationsmoden gibt, will/kann ich das nicht über eine variable zählen kassen, sondern will den Timerinterrupt dazu benutzen.

    darum hab ich den TIMER0 in CTC Mode eingestellt und in
    TIMSK den OCIE0 auf 1 gesetzt.

    Mit der Funktion

    SIGNAL( SIG_OUTPUT_COMPARE0 ) { STATUS_clk--; }

    Sollte das dann funktionieren....
    Gruß,
    Franz

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    31
    Beiträge
    795
    habgerade festgestellt dass es entweder an

    SIGNAL( SIG_OUTPUT_COMPARE0 ) { STATUS_clk--; }

    liegt,

    oder an der Einstellung von TIMSK...

    Hab vorher aus versehen nicht TIMER0 ausgeklingt bei der Ursachenforschung, sondern einen anderen TIMER1....
    Sorry.

    Aber funkt wie gesagt nicht. sobald ich den TIMER0 einstelle mit TIMSK dann resettet er mir immer...
    Gruß,
    Franz

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    31
    Beiträge
    795
    Seltsamerweise geht es jetzt, kann euch aber nicht sagen wo der Fehler war.

    Hab noch mal alles so gemacht wie es hier steht:
    http://www.roboternetz.de/phpBB2/zei...imer+interrupt


    Danke für deine Hilfe linux_80.
    Gruß,
    Franz

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Es muss heissen
    SIGNAL (SIG_OUTPUT_COMPARE0)
    und nicht
    SIGNAL( SIG_OUTPUT_COMPARE0 )

    Die Leerzeichen in der Klammer müssen weg!

    http://www.roboternetz.de/wissen/ind...gcc#Interrupts
    http://www.roboternetz.de/wissen/ind...eichen_zu_viel
    Disclaimer: none. Sue me.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.01.2005
    Ort
    Bayern
    Alter
    31
    Beiträge
    795
    AAAhh....

    Compilergeschichte nicht? Danke für den Tipp.
    Gruß,
    Franz

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •