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 :oops: 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
:SCHRAUBEN 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.