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