Forum: Compiler & IDEs Interrupt einlesen


von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

bin gerade dabei eine Fernsteuerung zu bauen. Da mein Sender nur 1
Kanal hat und ich 3 Zustände brauche (Knopf1 gedrückt, Knopf2 gedrückt
und "nichts" gedrückt) wollte ich das ganze folgendermaßen
realisieren:

Der 1. uC (Sender) erzeugt mittels 16-Bit Timer am PD5 ein Signal und
zwar folgendermaßen:

"nichts" gedrückt bedeutet, OCR1A auf 65535
Knopf1 gedrückt bedeutet, OCR1A auf 20000 (PINA0 auf low)
Knopf2 gedrückt bedeutet, OCR1A auf 40000 (PINA1 auf low)

Der Sender funktioniert auch (hab alles am Oszi ausgemessen).


Der 2. uC (Empfänger) soll dann, wenn

am PD3 (INT1) ein Interrupt (fallende Flanke) ausgelöst wird:

TCNT1 in der Variablen "wert" speichern
TCNT1 auf 0 setzen
den Timer1 starten


und soll sobald am PD2 (INT0) ein Interrupt (steigende Flanke)
ausgelöst wird den Timer anhalten.

in der Main-Methode soll dann anhand der Größe der Variable "wert"
entschieden werden, ob PINC1 und PINC2 low oder high geschalten werden.
Die Variable wert sollte dann so groß sein, wie der Wert von OCR1A am
Sender!?

Leider bleiben beide Pins immer auf dem else-Fall.

Zur Beschaltung ist noch zu sagen, dass beide uC mit einem 4MHz-Quarz
beschalten sind, um sicherzustellen, dass beide Timer immer gleich
schnell zählen.

Bin für jeden Tipp dankbar ^^

MfG Stefan

von Hubert.G (Gast)


Lesenswert?

Was setzt du hier?
ISR(INT0_vect) {
  TCCR1B;

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.