Seite 1 von 1
parallel seriell wandler
Verfasst: Do 18. Jun 2015, 20:49
von PIC18F2550
Hallo,
ich suche ein PASM schnippsel der einen longwert seriell an einem Pin ausgibt.
Meine Suche bei Parallax brachte zwar ein paar Infos aber das Kernthema ist mir nicht aufgefallen.
Re: parallel seriell wandler
Verfasst: Do 18. Jun 2015, 23:04
von PIC18F2550
Das ist mein Versuch, da kein Proppeller zur Hand

ist es ungetestet.
Code: Alles auswählen
DAT
entry
org 0
mov sadr, par
mov outa, #$000 'P0 auf 0 setzen
mov dira, #$001 'P0 als Ausgang
loop
'--------------------------------------------
mov outa, #$001
mov temp, loopx
loop1
djnz temp, #loop1 wz
'--------------------------------------------
mov outa, #$001
mov temp, loopx
loop2
djnz temp, #loop2 wz
'--------------------------------------------
rdlong temp, sadr
cmp temp, #$000 wz
if_z jmp #loop
'--------------------------------------------
mov pos, sadr
add pos, #001 '
mov posz, #032 '32 longwerte ausgeben
loop3
mov bitz, #032 '32 Bits ausgeben
loop4
rdlong wert, pos
add pos, #001
'--------------------------------------------
mov outa, #$001
mov temp, looph
loop5
djnz temp, #loop5 wz
'--------------------------------------------
mov outa, wert
shr wert, #001
mov temp, loopx
loop6
djnz temp, #loop6 wz
'--------------------------------------------
mov outa, #$000
mov temp, looph
loop7
djnz temp, #loop6 wz
'--------------------------------------------
djnz bitz, #loop4 wz
djnz posz, #loop3 wz
jmp #loop
'--------------------------------------------
temp long 0
wert long 0
pos long 0
posz long 0
bitz long 0
sadr long 0
loopx long 40000
looph long loopx/2
fit $1ff
Re: parallel seriell wandler
Verfasst: Fr 19. Jun 2015, 05:40
von yeti
Ich bin grad noch nicht wach genug zum selber denken (ich arbeite noch am Koffeinpegel...) und hab daher nur mal 'n bissl im Forum jenseits der Riesenpfütze rumgestochert und diese Lösung in Assembler für C entdeckt:
http://forums.parallax.com/showthread.p ... ost1326959
Die kriegst Du doch sicher ins Spin/PASM-Land übersetzt... da bin ich hoch optimistisch...
Re: parallel seriell wandler
Verfasst: Fr 19. Jun 2015, 10:24
von TuxFan
Moin moin!
PIC18F2550 hat geschrieben:Hallo,
ich suche ein PASM schnippsel der einen longwert seriell an einem Pin ausgibt.
Meine Suche bei Parallax brachte zwar ein paar Infos aber das Kernthema ist mir nicht aufgefallen.
Schau Dir mal die Schreib- und Leseroutinen in Assembler von Kwabena W. Agyeman in der FAT-Engine an. Die machen ja nichts anderes wie parallel-seriell- (Schreiben) bzw. seriell-parallel-Wandlung (Lesen) für SPI-Bus.
Siehe hier :
http://obex.parallax.com/object/16
Du mußt nur von byte auf long erweitern. Siehe unten im Assemblerteil die writespi und readspi Routinen nebst anderem wichtigen Zubehör.
So jetzt muß ich aber wieder an meine Grobmotorikbaustelle.
Gruß
TuxFan
Re: parallel seriell wandler
Verfasst: Fr 19. Jun 2015, 11:47
von PIC18F2550

ich glaub der MUXC ist die Lösung.
Muss ich morgen mal testen.
Danke.
Re: parallel seriell wandler
Verfasst: Fr 19. Jun 2015, 13:33
von kuroneko
Code: Alles auswählen
movi ctra, #%0_00100_000 ' NCO
movs ctra, #pin
max dira, mask ' counter now drives pin
mov phsa, data ' bit 31 now appears at pin
mov bcnt, #31+1 ' 31 bits left (plus back to idle)
shl phsa, #1 ' next bit/idle
djnz bcnt, #$-1 ' for all of them
waitpeq $, #0
mask long |< pin
Re: parallel seriell wandler
Verfasst: Fr 19. Jun 2015, 23:25
von PIC18F2550
Danke kuroneko für den Tipp.
Leider ist das Bit mit einer zeitlichen Maskierung versehen so das phsa nicht geht.
Ein Bit besteht am ende aus :
1/6 H
2/6 Bit Info
2/6 Bit Info negiert
1/6 L
Hintergrund : Ich möchte verschiedene Daten meines multicopters über den bislang nicht genutzten Audio Kanal des Fpv Systems übertragen.
Die Maskierung sorgt für eine symmetrische signalübertragung.
Re: parallel seriell wandler
Verfasst: Sa 20. Jun 2015, 23:29
von PIC18F2550
Was hab ich mir den hier für einen Schwachsinn ausgedacht neeeee
Das ist doch ein Audio und kein Glasfaser.
Bei der Audioübertragung muss ich aufpassen das die Anteile von H und L Pegel in einer schmalen Zeiteinhet immer gleich sind.
Das erreicht man mit unterschiedlichen Frequenzen und einem Tastverhältnis von 1:1.
Ebenso sollte die höhere Frequenz nicht dem Vielfachen der unteren Frequenz entsprechen.
Sonnst besteht die Gefahr durch Verzerrung der Grundfrequenz versehendlich die höhere erkannt wird.
z:B. 600/1000/1325Hz Space/0/1
Also
1. Frequenz/Periodendauer Festlegen abhängig ob eine 1 ofer eine 0 übertragen wird ansonsten wird der space Wert geladen.
2. Ausgabe einer H und L Periode.
Ferdig.
Auf der Empfangsseite muss mann sich nicht um die Phasenlage kümmern da ja die information in beiten enthalten ist.
Einfach die Impulsbreite messen und schon ist alles klar.
Re: parallel seriell wandler
Verfasst: So 21. Jun 2015, 09:09
von TuxFan
Moin,
Dein letzter Beitrag hat jetzt aber völlig andere Randbedingungen als der erste Beitrag.
Wenn Du einen fertiges Transmittermodul für die Drohne und ein Empfänger Modul für die Bodenstation nimmst brauchst Du Dir doch um ein Übertragungsverfahren wie FSK keine Gedanken machen. Byte, Word oder long seriell ins Modul rein und beim Empfänger wieder Raus. Dazu gibt es fertige briefmarkengroße Module und fertige Libs. Vieĺeicht geht es auch mit den WLAN Modulen mit ESP8266 bei Reichweiten von 300 bis 400m.
Vielleicht willst Du aber noch was ganz anderes, was man aus deinen Beiträgen aber nicht erkennen kann?!
Gruß
TuxFan
Re: parallel seriell wandler
Verfasst: Mo 22. Jun 2015, 17:36
von PIC18F2550
Ja TuxFan ich weiß.
Leider bin ich mit dem Projekt schon weiter als die hinterlassenen Fragen für einen Rattenschwanz so nach sich ziehen.
Die Frage war eigentlich schon mit dem MUXC beantwortet so das ich erst mal keinen weiteren Erklärungsbedarf sah.
Kuroneko zeigte noch einen anderen Weg so das ich noch etwas aus dem Entwicklungsstand erzählte.
Die WLAN Module haben nicht die Reichweite (1000m) des weiteren würden die Module die Empfänger (2,4GHz) bei größeren Entfernungen stören.
Das FPV-System arbeitet mit 5,8Ghz das besitzt bessere Ausbreitungseigenschaften.