PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wieder mal TSOP aber diesmal mit 56khz ( TSOP 1756 )



Alex20q90
21.12.2005, 20:22
Hallo,

also ich bin gerade dabei mit dem schnellsten TSOP zu spielen den ich auftreiben kann. Es handelt sich dabei um den TSOP 1756.

Folgendes :

Ich habe mir eine Senderschaltung zusammengebaut (geätzte Platine) mit einem ATTIny 2313 der mit 20MHz betrieben wird! Schalte ich ihn ein, reagiert der TSOP darauf (sogar wenn ich ihn in eine 6m entfernte Ecke des Zimmers lege und die LED abdunkel :cheesy:

Der Quellcode macht ca 57khz und läuft auch. Aber da der TSOP nur einen kurzen 56khz burst möchte, und dann ein wenig Pause will hab ich Programmechisch ein Problem :

Hier der Qellcode mit den Dauer-57khz :


$regfile = "2313def.dat" 'AT90S2313
$crystal = 2000000 'Quarz 8MHz

Ddrd.6 = 1
Laser Alias Portd.6

Dim I As Integer



'************************************************* *******************************


Do

' 56khz
Set Portd.6
Waitus 3
Reset Portd.6
Waitus 2


Loop

End


Wenn ich jetzt aber eine Schleife einbaue, habe ich das Problem das die 56khz nicht mehr Funktionieren :


$regfile = "2313def.dat" 'AT90S2313
$crystal = 2000000 'Quarz 8MHz

Ddrd.6 = 1
Laser Alias Portd.6

Dim I As Integer

Do 'Beginn der Schleife

For I = 1 To 20 ' 56khz / 20 Bursts pro Puls / 50 Pulse pro sekunde
Set Portd.6
Waitus 3
Reset Portd.6
Waitus 2


Next I

Waitms 100 '100mS mal zum Probieren ob der TSOP reagiert

Loop

End


Aber das klappt nicht! Ich denke das die Schleife mit der Abfrage (Next I) zu lange dauert und mir die Frequenz durcheinander bringt! Die Frequenzen kann ich gut mit einem Frequenzzähler messen. bei dem unteren Quellcode zeigt er mir aber nur ein paar Khz an. Ich denke das ist die Wiederhlung des Bursts.

Kann mir jemand weiterhelfen?

Grüße und schonmal Frohe Weinachten
Alex

Marco78
22.12.2005, 18:45
Waitus 1 bringt auch nichts? Das ausführen der Schleife benötigt ja auch Zeit. Wenn man diese Zeit von der Wartezeit abzieht ist man ja vielleicht schon wieder da wo man hin will?!

Oder einen Timer programmieren oder PWM benutzen.

Das fällt mir so spontan ein.

Wenn Waitus 1 noch zu lange dauert, kannst du ja auch Assemblercode einfügen und ein paar NOP benutzen bis du die Zeit wieder richtig hast.

Alex20q90
22.12.2005, 23:56
Hi,

danke für die Antwort!

Jetzt müsste ich mal umrechnen wie lange und wie viele NOP's ich einfügen müsste.

Mir ist eingefallen (eine unsaubere art) das ich auch 20 mal oder mehr einfach die befehle mit copy und past einsetze und am ende waitms 10 oder so ähnlich benutzen könnte!

Liege ich da falsch?

Ich weis auch nicht wie viele NOPS ich bei 20 mhz einsetzen müsste!
Hast du mir da ein kurzen beispielcode für die 56khz?

grüße und schöne weihnachten
Ales

Alex20q90
25.12.2005, 22:10
So, hab jetzt das ganze mal von hand gebastelt und es klappt! habe so 16x die set/reset funktion gesetzt und am ende mal 300uS wartezeit! Der TSOP1756 reagiert nun perfekt!

So, nun mein nächstes problem :

Ich hab mir mal ne testschaltung für RC5 gebastelt! Geht bei Bascom eigendlich nur 36khz? Oder wie kann ich dem RC5 sagen er soll 56khz machen? Zudem sollte er das signal invertieren! Meine LED leuchtet bis ein Signal kommt! Wie invertiere ich das spiel?

Ich möchte das ganze zum test als Bake Programmieren! Der TSOP1756 soll dann die Richtung genau anpeilen.

Stelle ich den TSOP einfach so hin, passiert das der Ausgang ab und zu einen Impuls sendet! Ich möchte meinen Roby solange drehen lassen bis der TSOP das Signal bringt wo ich sende! Ich dachte eine RC5-Codierung ist erprobt und sicher.

Grüße
Alex