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!
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.
Benutz die Schreibweise "(1<<BitName)", dann muß keiner rätseln, auch du nicht, und der Compiler erledigt den Rest. BTW, sieht OffTopic oder nörgelig aus, soll aber Hilfe zur Fehlersuche sein. Nur so lernt man nämlich was.
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.
Patrick C. schrieb: > EIMSK |=3; //aktiviert Hall Sensor (INT 0) Aber nicht nur den allein. BTW: welchen Controller verwendest du denn? Das mit dem AVR kann man ja noch erraten. Aber die passende Zahl dazu? Schwierig...
:
Bearbeitet durch Moderator
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.