Hallo
Was willst du denn erreichen ??
Bei der Sende Routine solltest du denn Port auch auf Ausgang schalten.
Beim Empfangen solltest du anstatt PORTB.2 mal PINB.2 versuchen.
Ist dir klar, was das Programm macht, wenn es dann läuft ?
Mfg
Hallo!
Ich benutze den ATmega8, und habe eine korrekt angesteuerte IR Sende Diode und einen TSOP1376 IR Empfänger, der auch korrekt angesteuert ist.
Dann habe ich einen 12MHz Quarz, der zwei AVR's versorgt. (Das geht doch, oder?)
Nun hier den SENDECODE:
Hier der EMPFÄNGERCODE:Code:$regfile = "m8def.dat" $crystal = 12000000 Const Startbyte = 00000001 Dim Zusenden as byte Ddrb.1 = 0 Senden: Zusenden = Startbyte Portb.1 = Zusenden Goto senden
Warum funktioniert das nicht?Code:$regfile = "m8def.dat" $crystal = 12000000 Dim gelesen as byte Ddrd.2 = 0 Do Gelesen = Portb.2 if gelesen = 00000001 then portb.5 = 1 else portb.5 = 0 loop
Die LED an portb.5 flackert nur manchmal, aber das auch, wenn die IR-Strecke unterbrochen ist!
@Gottfreak: Dein Code funktioniert auch irgendwie nicht.
Ich bin total am verzweifeln, es geht garnichts.
MfG,
ShadowPhoenix[/code]
Hallo
Was willst du denn erreichen ??
Bei der Sende Routine solltest du denn Port auch auf Ausgang schalten.
Beim Empfangen solltest du anstatt PORTB.2 mal PINB.2 versuchen.
Ist dir klar, was das Programm macht, wenn es dann läuft ?
Mfg
@Gast
Sorry, ich kenne mich eben noch nicht so gut aus.
Ja, das Programm sendet dann ständig das Byte "00000001" an den
Empfänger. Dieser lässt dann die LED leuchten.
Wie siehst du das?
MfG,
ShadowPhoenix
Wie kommst du denn darauf ??
"Ja, das Programm sendet dann ständig das Byte "00000001" an den "
Beim senden wird dein dein Port aus 1 gesetzt und das wars.
Modulierst du die LED denn mit 36 KHz ? Sonst empfängt der TSOP 1736 eh nichts.
"Gelesen" kann doch nur 0 oder 1 werden
Ich dachte, es wird dann 10000000 gesendet!
Wie kann man denn Bytes senden?
MfG,
ShadowPhoenix
Wieso soll er das denn senden ? Weil die Variable zusenden heißt ?
So einfach geht das mit Bascom aber auch nicht.
Du mußt deine Variable, die du senden willst, Bit für Bit abfragen, ob 1 oder 0 und dann entsprechend reagieren.
Beim Empfang genau so, da hast du aber noch andere Probleme. Finden des Starts, Timming, Fehler und so.
Versuche erstmal, nur zu senden. So langsam, das du an einer normalen LED sehen kannst ob es klappt.
Hmm, eigentlich habe ich vor, den ADDLink zu benutzen, und dann bytes zu übertragen.
So hätte ich eine Fernsteuerung mit vielen Kanälen.
Weisst du wie das realisierbar ist?
MfG,
ShadowPhoenix
Habe mit ADD Link noch nicht gearbeitet, ist mir auch zu teuer.
Du kannst auch mit der LED soviele Kanäle steuern wie du willst.
Aber ein paar Grundlagen, mußt du dir schon erabeiten. Dazu gehört halt auch, wie man ein Byte seriell sendet und empfängt. Brauchst du eh immer wieder. Und so schwer ist das nicht. Es hilft dir nichts, wenn das eine nicht klappt, das nächste auszu probieren.
Bleib an der seriellen Übertragung dran. Verbinde doch erstmal die beiden PINs mit einem Draht und versuche, ein Byte zu übertragen.
Problem ist: WIE sende ich ein byte und empfange es richtig?
MfG,
ShadowPhoenix
Ganz grob als Anregung
Du willst ein Bytes senden, hat ja 8 Bits. Du kannst immer nur ein Bit nach dem sende. Also prüfst du, ob BIT 0 deiner Variablen 1 oder 0 ist.
Wenn1 dann sendest du eine 1, wenn nicht eine 0.
Danach schiebst du die Variable um eine Stelle nach rechts. Damit steht jetzt BIT1 an Stelle BIT0 und du kannst wieder abfragen ob 1 oder 0.
Nach 8 mal schiebben bist du mit deinem Byte durch.
daten = 23
for a = 1 to 8
if daten.0 = 1 then
sende 1
else
sende 0
end if
shift daten , right ,1
next a
So sollte es ganz grob abgehen. Nicht getestet, so aus dem Kopf
Lesezeichen