Forum: Mikrocontroller und Digitale Elektronik Problem mit Ext. Interrupt bei Atmega8


von Zyondor (Gast)


Lesenswert?

Hallo,

ich habe ein kleines Problem mit meinen Atmega8 Bausteinen. Ich möchte 
derzeit 2 µCs hintereinander schalten. Sprich der 1. µC erzeugt ein 
Taktsignal und gibt dieses an den 2. µC weiter.

Derzeit möchte ich eigentlich das Taktsignal direkt an den INT0 Eingang 
des 2. µCs legen. Nur leider reagiert der µC bei der Einstellung Rising 
Edge selbst bei der kleinsten Änderung (im mV Bereich). Muss man das 
Taktsignal noch durch irgendwelche Filter und andere Schaltung jagen um 
es zu säubern?

Hier nochmal der Ausschnitt der ISR:
1
// Atmega8 16PU
2
3
ISR (INT0_vect) {
4
  if (checkBit(~PIND,2) && !impuls)
5
    impuls = 1;
6
}
7
8
void init_Interrupt(void) {
9
  rstBit(DDRD, 2);        // PORTD 2 (INT0) als eingang
10
  setBit(MCUCSR, ISC00);  // interrupt sense auf positive flanke
11
  setBit(MCUCSR, ISC01);
12
}

Eigentlich möchte ich in der ISR nur feststellen, dass ein steigendes 
Taktsignal des 1. µC ankommt und dann das Byte impuls setzen. Dies wird 
dann im Hauptprogramm verarbeitet.

Ich habe selbst schon mit einem Taktgenerator ausprobiert, es scheint 
auch zu funktionieren aber nur bei sehr niedrigen Frequenzen (ca. 10Hz) 
für die reale Anwendung sollen es aber 10kHz werden. Auch wenn ich den 
Taktgenerator ausschalte, erzeugt er ein dauerhaftes High-Signal von ca. 
600mV. Diese Spannung reicht dann auch schon aus, damit der µC immer in 
die ISR springt.

Ich bin mittlerweile mit meinem Latein am Ende und hoffe das ihr 
vielleicht ein paar gute Ratschläge habt.

Gruß Zyondor

von Peter D. (peda)


Lesenswert?

Zyondor schrieb:
> Auch wenn ich den
> Taktgenerator ausschalte, erzeugt er ein dauerhaftes High-Signal von ca.
> 600mV. Diese Spannung reicht dann auch schon aus, damit der µC immer in
> die ISR springt.

Das ist Quatsch.
Die Schwelle liegt ziemlich genau bei VCC/2, also etwa 2,5V.

Ich vermute mal, Du läßt den Eingang offen und dann fängt der sich alles 
mögliche ein.


Zyondor schrieb:
> für die reale Anwendung sollen es aber 10kHz werden.

Das ist schon ne ordentliche Interruptlast (800 Zyklen bei 8MHz).
Da müssen sich alle anderen Interrupts am Riemen reißen, daß sie nicht 
länger brauchen.

Was willst Du überhaupt damit bezwecken?


Peter

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.