Forum: Mikrocontroller und Digitale Elektronik Interrupt Signal


von Frank (Gast)


Lesenswert?

Hey, ich habe auf einem Steckbrett einen atmega8 mit dem 7805, internem 
Takt und ein paar leds laufen. Habe jetzt mal den INT0 ausprobiert. Bei 
Interruptsignal soll eine LED aus und an gehen. das funktioniert auch. 
Allerdings manchmal auch wenn kein Interruptsignal anliegt. wenn ich 
einmal am tisch wackel kommt das zb auch. verstehe nur nich ganz wo dann 
das signal herkommt.
Jemand ne Idee?

von holger (Gast)


Lesenswert?

>Steckbrett
>Allerdings manchmal auch wenn kein Interruptsignal anliegt. wenn ich
>einmal am tisch wackel kommt das zb auch. verstehe nur nich ganz wo dann
>das signal herkommt.

Vom losen Kabel im Steckbrett?

von Dietrich L. (dietrichl)


Lesenswert?

Was ist denn die Signalquelle für INT0? Fehlt da vielleicht ein 
Ziehwiderstand?

Gruß Dietrich

von Curby (Gast)


Lesenswert?

Wenn der Interrupt bei einem Wechel von 1 zu 0 ausgelöst werden soll, 
muss ein Pullup-WIderstand an den Interrupteingang angelegt werden, 
damit dieser eine definierte 1 hat, wenn dieser nicht auf 0 gezogen 
wird.

von Frank (Gast)


Lesenswert?

signal sind erstmal zum ausprobieren die 5V von einem anderen PIN. einen 
widerstand hab ich nicht dazwischen.

von Frank (Gast)


Lesenswert?

hier mal der Quelltext
--------------------------

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>  // (1)

#define INT0_vect                       _VECTOR(1)
 int ZAHL;
ISR(INT0_vect)
{
if(ZAHL==0)
{
    PORTB=0b00000111;
ZAHL=1;

}
else
{
PORTB=0b0000000;
ZAHL=0;
 }
}
int main (void) {
cli();

ZAHL =0;
#define INT0    6
#define INTF0    6
#define MEINBIT5 1
DDRC  = 0xFF;
DDRD  = 0xFF;
DDRB  = 0xFF;


PORTD=0b00000000;
PORTC=0b00000100;
PORTB=0b00000000;




MCUCR |= ((1<<ISC01) | (1<<ISC00)); // bei steigender Flanke



DDRD  &= ~(1<<PD2);
PORTD &= ~(1<<PD2);
GICR |=(1<<INT0);
sei();
 while(1)
 {
 }


return 0;

}

von Frank (Gast)


Lesenswert?

Hmm also es reicht schon wenn ich meine hand nur über der schaltung 
halte,ohne sie zu berühren. Also ich vermute der Int0 hängt in der Luft. 
Ist weder high noch low.

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
Noch kein Account? Hier anmelden.