globale Variable

OP #5430859
Lesenswert?
• ▲
▼
moin,

ich finde leider meinen Fehler nicht und suche jetzt schon seit einer 
Stunde. ich hab den mikrokontroller auch bereits mehrfach ein und 
ausgeschaltet. und voltaire habe ich nun auch schon ausprobiert:

#include <avr/io.h>
#include <avr/interrupt.h>  //Interrupts ermöglichen

volatile uint8_t jojo=0;
void setup (void);

ISR (INT0_vect){
  jojo=1;
}
int main(void)
{
  setup();
   while (1)
    {
    if (jojo==1) {
      PORTB |= 1;
    }
    }
}

void setup (void){
  DDRB|=1;
  DDRD &=~4; //Hall-Sensor als Eingang (INT0)
  PORTD |=4; //Pull-Up Widerstand am Hall Sensor (INT0)
  EICRA =0x02; //fallende Flanke von Hall Sensor(INT0) erzeugt ISR
  EIMSK |=3; //aktiviert Hall Sensor (INT 0)
  sei();}

an PortB an Pin0 ist eine LED und diese soll nach einer Umdrehung an 
gehen. An PortD ist der HallSensor an Pin2. Sobald ich "PortB |= 1" in 
die ISR einschreibe funktioniert das. Wenn ich sie jedoch in ISR und 
main() aufteile funktioniert es nicht.

Danke schonmal!
Gast #5430865
Lesenswert?
• ▲
▼
Patrick C. schrieb:
> DDRD &=~4; //Hall-Sensor als Eingang (INT0)
> PORTD |=4; //Pull-Up Widerstand am Hall Sensor (INT0)

Für die 4 müsstest du vermutlich etwas in der Form

1<<4

schreiben

bei

  EICRA =0x02; //fallende Flanke von Hall Sensor(INT0) erzeugt ISR
  EIMSK |=3; //aktiviert Hall Sensor (INT 0)

hab ich nicht nachgeschaut, vielleicht muss da auch was
geändert sein.
Gast #5430888
Lesenswert?
• ▲
▼
Hm,
ich sehe so auf Anhieb auch den Fehler noch nicht. Und die 2 ersten 
Antworten sind ja auch nix Konkretes....
Hast Du einen Debugger zur Hilfe ? Oder eventuell noch mehr Leds an 
anderen Portpins ? Würde mal eine Led toggeln bei jedem Durchgang durch 
die while-Schleife, eine andere beim Durchgang durch die 
Interrupt-Routine.
Oder setz mal eine Led so lange jojo gleich 0 ist.
Mein Lieblingsfehler ist, den Code zu korrigieren und dann entweder das 
Compilieren oder das Flashen zu vergessen, so dass ich nicht verstehe, 
warum der Fehler immer noch da ist.
Dein Hall hängt am Portpin D2, oder ?
Verrate auch mal um welchen AVR es konkret geht.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.