Hallo. Ich habe einen "Empfänger" für einen TSOP gebaut (mit einem AT90S2313). Dieser soll einen Pegelzustand (5V oder 0V) der Länge entsprechend aufzeichnen und über einen 8-bit Parallelbus ausgeben. Getaktet ist der Chip mit 8MHz. Das Timing ist ausgelegt, dass alle 80 Takte (10us) das Makro COMMUNICATION aufgerufen wird, welches die Kommunikation regelt, die übrigens funktioniert. Gespeichert werden die Daten in Packeten zu 1 oder 2 Bytes. Das oberste Bit des Packetes gibt an, ob es HIGH oder LOW-Pegel repräsentiert. Das zweitoberste gibt an, ob das Packet ein oder zwei Bytes lang ist, und die restlichen ergeben die Anzahl an Takten (10us), die der Pegel anhielt. Wenn ich nun diese Schaltung im Leerlauf laufen lasse (kein IR-Signal), dann werden neben 0xFFFF-Paketen (113ms HIGH) auch Unterbrechungen zurückgegeben, die nicht da sein sollten. Empfängt der TSOP ein Signal, so funktioniert alles ordnungsgemäß (die Pakete sind korrekt). An PortB liegt der Datenbus zur Kommunikation. PD0 gibt Datenaufzeichnung mit Interpretation als TSOP an (HIGH-Pegel) oder Interpretation als IR-moduliert (LOW-Pegel). PD1,PD2 und PD5 ist ein Signaleingang. PD3 ist der ENABLE Eingang, der die Kommunikation freigibt. PD4 ist der VALID Ausgang, der zurückgibt, ob ein Datenbyte gültig ist (bzw. der Puffer leer ist). PD6 ist der LOG Eingang, der die Pufferung der Eingangsdaten durchführen soll. Die Beschaltung des TSOPs ist folgendermaßen : ------| -------- ----------- | | |------| 100 Ohm |---- + 5V AVR |--| TSOP | | ----------- | | 1736 | = 4,7 uF ELKO ------| -------- | | | - - Wo liegt der Fehler im Code, der diese "Fehlpakete" erzeugt ? Einen Fehler in der Beschaltung kann ich ausschließen, da der Fehler unverändert auch bei verdecktem TSOP auftritt (auf einem Oszi war auch nichts zu erkennen). In den nächsten Postings poste ich noch die Datei "makros.asm", die COMMUNICATION enthält, sowie ein Beispiel der Datenpakete.
Und eine Aufzeichnung der Pakete. Zu erkennen ist eindeutig der RC5-Code einer Fernbedienung am Anfang, und der "Leerlauf" im Anschluss.
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.