PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Manchaster Code



The Man
22.04.2007, 09:59
Hallo zusammen,

ich hab jetzt den RN Bereich, Wiki und das "übrige" Internet nach einer Funktionserklärung für den Manchaster Code durchsucht. Mein Problem ist, das alle Erklärungen mit dem Satz enden, dass man den Takt aus den Flanken zurückgewinnen kann. Nur wie? Ist das ein Echtzeitvorgang, oder wird das Eingangssignal gespeichert und dann verarbeitet? Und wie man ihn wirklich generiert hab ich auch nicht so ganz verstanden. Bisher weiß ich nur, dass dafür die xor Verknüpfung genutzt wird. Nur ist das bei mir vom Verständnis her noch nicht mehr als ein Schlagwort (ich weiß, was xor ist). Weiß jemand, ob es ein Bsp. gibt, wo der gesamte Vorgang anhand eines Paketes vom modulieren übers senden bis zum demodulieren beschreiben wird?

Danke,
The Man

shaun
22.04.2007, 11:38
Es gibt genug Erklärungen im Netz, aber es könnte hilfreich sein, bei der Suche die richtige Schreibweise zu benutzen: Manch_e_ster.

The Man
22.04.2007, 19:05
Ich hab´s schon mit "e" geschrieben war jetzt nur hier falsch getippt.

sigo
22.04.2007, 23:08
Hi, guckst du hier: http://en.wikipedia.org/wiki/Manchester_code
http://www.erg.abdn.ac.uk/users/gorry/course/phy-pages/dpll.html

Schau dir auch mal das an: http://en.wikipedia.org/wiki/Differential_Manchester_encoding

Zur Bestimmung der Bitzeit haben die Datenobjekte immer eine Präambel, die eine einfache Bestimmung der Bitzeit erkaubt, sodass man sich auf das Singal einsynchronisiert hat, wenn die Nutzdaten kommen:

Sigo

The Man
17.05.2007, 17:37
Moin Moin,

ich hab jetzt mal einen Assemblercode erstellt, mit dem ich auf dem PORTB eines Mega8 eine änderbare Frequenz ausgeben kann.


.include "m8def.inc"

.org 0
rjmp reset
.org 3

rjmp interrupt


reset: ldi r16,low(RAMEND)
out SPL,r16
ldi r16,high(RAMEND)
out SPH,r16
ldi r16,0b11111011
out DDRB,r16
ldi r16,0b00000011
out PORTB,r16
ldi r16,0b00001111 ;CTC - PRS 8
out TCCR2,r16
ldi r16,0b10000000 ;Interrupt enable
out TIMSK,r16

sei ;global int. enable

ldi r16,0b01100010
out ADMUX,r16
ldi r17,0b10101010



;Hier Init-Code eintragen.
;------------------------------------------------------------------------

mainloop: wdr


rjmp mainloop

interrupt:
;toggle Port B
in r16,PINB
com r16

out PORTB,r16
ldi r16,0b11000010
out ADCSRA,r16
bis_converted:
in r20,ADCSRA
ori r20,0b11101111
cpi r20,0b11111111
brne bis_converted

in r25,ADCH
ori r25,1
out OCR2, r25
reti



(Könnte man ja auch fix programieren). Angenommen, diese Frequenz ist mein Taktsignal, auf das ich die Daten draumodulieren will, kann mir jemand sagen, an welcher stelle ich das wie im Code machen müsste, um ständig eine 1 zu übertragen?
Und wodurch wird die Frequenz des Taktsignals bestimmt?

Danke

Murus
17.05.2007, 18:05
Hallo,

im Anhang mal eine kleine Dokumentation zu einem meiner ersten Projekte... Da hab ich den Manchestercode verwendet und auch etwas beschrieben.. (das File ist uuralt und stammt noch aus den "Anfängen":))

Murus
17.05.2007, 18:08
Hmh, verflixt "ich hab meine maximale Upload Quota Grenze von 3MB erreicht".. und jetzt? Das File ist 379kB gross...

steveLB
17.05.2007, 18:27
jetzt suchst am besten ältere beiträge von dir, und löscht die entsprechenden bilder raus, indem du auf edit drückst

Murus
17.05.2007, 19:48
so, jetzt gehts :)

The Man
21.05.2007, 18:19
da gibt´s nicht viel zu sagen, als

KRASS DANKE MANN!