mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik problem mit interrupt


Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich benutze einen attiny13A und möchte damit per taster einen Interrupt 
auslösen. Taster hängt an Pin4 aktiv low mit pullup.

Die Register sind so initialisiert

GIMSK |= (1<<PCIE);     // Pin Change Interrupt Enable
PCMSK |= (1<<PCINT4);   // PCINT4 Interrupt Enable
MCUCR |= (1<<ISC00);    // Any logical change on INT0 generates an 
interrupt

Und das ist die ISR:

ISR (INT0_vect)
          {
              Taster_state ^= (1<<0);     // toggle Taster_state
              if(Taster_state==0)         // Taster losgelassen
              {
                  TCCR0B &= ~((1<<CS00)|(1<<CS01)|(1<<CS02)); // Stop 
Timer
              }
              _delay_ms(50);                          // 50ms warten

              if(Taster_state==1)                     // Taster gedrückt
              {
                  TCCR0B |= ((1<<CS00)|(1<<CS01)|(1<<CS02));// Start 
Timer
              }
          }

Das zeigt AVR Studio immer an:
../main.c:75: error: static declaration of '__vector_1' follows 
non-static declaration

Kann mir bitte jemand helfen ich weiß echt nicht mehr weiter

Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat jemand eine Idee warum er nicht in die ISR springt?
Ist das mit ISR (INT0_vect) schon richtig so

Autor: Jörg G. (joergderxte)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die ISR gehört nicht IN die main()-Funktion (gilt für alle Funktionen).

Autor: Grübler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So habe ich keine Störmeldungen
bekommen.
#include <avr/interrupt.h>
#define F_CPU 600000UL 
#include <util/delay.h>

char Taster_state = 0;
int main(void)
{

GIMSK |= (1<<PCIE);     // Pin Change Interrupt Enable
PCMSK |= (1<<PCINT4);   // PCINT4 Interrupt Enable
MCUCR |= (1<<ISC00);    // Any logical change on INT0 generates an interrupt

for(;;);

return(0);
}

//Und das ist die ISR:

ISR (INT0_vect)
 {
     Taster_state ^= (1<<0);     // toggle Taster_state
     if(Taster_state==0)         // Taster losgelassen
     {
         TCCR0B &= ~((1<<CS00)|(1<<CS01)|(1<<CS02)); // Stop Timer
     }
     _delay_ms(50);                          // 50ms warten

     if(Taster_state==1)                     // Taster gedrückt
     {
         TCCR0B |= ((1<<CS00)|(1<<CS01)|(1<<CS02));// Start Timer
     }
 }

Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die IST ist außerhalb von main und der endlosschleife
ich werd noch verrückt hier

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sei(); Ansonsten zeig mal den ∗Original∗code.

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..da fehlt noch ein ∗vollständigen∗ vor dem ∗Original∗</Ingrid>

Autor: martin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier die original files

Autor: Maxx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
martin schrieb:
> Die IST ist außerhalb von main und der endlosschleife

Die main.c sagt da was anderes

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
int main (void)
{
[..]
ISR (INT0_vect)
[..]
}
Klammer vorrücken und gut iss.

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.