# PIC mikrokontrolleri >  Pic tālvadība.

## konis22

Sveiki visiem.
Man tāds jautājums visiem kas uz 433mhz moduļiem ir ko darijuši.Uzrakstiju uztvērējam progu asm un nevaru iedomāties kā lai tiek vaļā no trokšņiem tajā brīdī kad netiek sūtīti kontroles signāli no pults.Kā pulti izmantoju škodas pulti ar 3pogām.Uzrakstiju tā kad pic gaida kamēr uz konkrēto kāju būs 1 tad pic sinhronizē laikus lai iegūtu vajadzīgajā bitā konkreu laika sprīdi.Katra sūtītā bita centrā pārbauda vai ir 0 vai 1 ja 1 tad iet uz nākamo bitu ja ir 0 tad atgriezzas uz sākumu.Parasti nojūk kautkur pirmie 2 biti jo traucējumi jau ir priekšā un ir izmaisijis pirmo bitu.Man liekas ka varētu pirmās milisekundes likt pārbaudīt vai ir 0 līmenis vai nē jo esmu novērojis ka oscilogrammā ir 0 tad moš sanāks.Varbūt jums ir kādi ieteikumi.Viš visumā viss iet tikai tas 1 bits no 24 čakarē prātu un sanāk auzas.  ::

----------


## next

Kaadreiz taisiiju uztveereeju IR signaalam, tur arii trauceejumi naak kad ienaakoshaa signaala nav.
Algoritms taads:
Jebkursh impulss tiek uzskatiits par signaala paketes saakumu.
Uztvershanas rezultaati sabiidaas uztvershanas buferii.
Peec tam kad impulsi ieejaa noteiktaa laika intervaalaa vairs netiek uztverti, uzskataam ka pakete beigusies un bufera saturs tiek saliidzinaats ar sagaidaamo signaalu paraugiem.

----------


## konis22

Ja godīgi tad nesaprotu kā ielasīt buferī un kurnu vēl salōdzināt.Man vajadzētu parunāties ar kādu kurš prot normāli programmēt asm.Es protu uzrakstīt visu vienkārši bet ne ar atmiņas izmantošanu vai loģiku.Uart ps2 tādus potokolus vai topašu ir uzrakstīt nav problēmu a kākas nopietnāks tā sākas auzas.

----------


## 0xDEAD BEEF

Kādēļ jāatgriežas uz sākumu, ja 0 bita vidū ir signāls 0? Es nesaprotu... Varbū apraksti problēmu 'detalizētāk'!
Reāli - ja tev ir TIK daudz trokšņi, ka tu nevari saprast, kad dati nāk un kad nenāk, tad tur neko izdarīt nevar!
Beefs

----------


## konis22

Viss notiek tā kad pic gaida pirmo bitu reāli tas ir 1us pie 4mhz.Tas ir tas laiks kurā tiek lasīts bits.Tad izpildās aiztures laiks uz tādu laiku kurā pic programma ir tikusi tik tālu līdz būtu jābūt nākamajam bitam no pults.Tas ir tā kad zinot katra bita garumu tiek uzģenerēti aiztures laiki.Kas tiek pasaukti kontrētajā vietā.Par cik derīgais signāls ir lielāks tad tie trokšņi tiek nospiesti un tad vairs nevar tie traucēt.Bet via problēma sākas tieši 1 bitu pirms koda sākums.Piemēram pic domā ka komanda nāk no pults bet tas ir traucējums tad programma izpildās tālāk mani pults biti izpilda progu tālāk un tajā brīdī kodu virkes galā ir nobīde par 1 bitu.Ja nesakrīt traucējuma bita laiki ar laikiem no pults tad protams nojums aja sakrīt tad rodas kļūda.Ja traucējumi zāģē ar kādiem 20sec tad nevar neiekrist kāds bits pa vidam.Es laikam nekorekti uzrakstu šo problēmu bet savādāk neizprotu.Jajau nebūtu tie trokšņi no kvarca utt tik lieli tad nesūdzētos.Ja kodu virkne ir 44 biti aptuveni tad sanāk paliels čakars.tie 44 biti izpildās ap 60ms.Varbūt ka tiešām jāmēģina kautkā korekti citu kodu rakstīt.
Tas mans kods strādā tā.Ja ir 1 bits seko pauze un mēra vai ir nākamais bits konkrēti pēc precīza laika ja ir iet tālāk par 1 bit utt kamār 24 biti tad tieši tāpat ar 9 bitiem un tad seko kontroles biti kuros tad tieši ir tas kurai komandai pie kura bita jāizpildās.Ja konkrētā laikā ir bits dari to ja nav iet tālāk.Ja bita nav agriežas uz sākumu neko nedarot.Nutā apmēram.

----------


## next

> Ja godīgi tad nesaprotu kā ielasīt buferī un kurnu vēl salōdzināt.


 Nu a kas tur taads?
Uztaisam paartraukumu no briivi skrienosha taimera ar frekvenci reizes 4 vai 8 lielaaku par baudreitu.
Paartraukumaa skataamies ienaakosho bitu, ja ir izmainja tad noveerteejam ieprieksheejaa staavoklja ilgumu un iebiidam buferii 1 vai 2 bitus kas raksturo porta staavokli.
Ja izmainju nav saliidzinaam pagaajusho laiku ar defineeto taimauta intervaalu un ja pakete beigusies un uzstaadam karogu paarejai uz apstraades apakshprogrammu.

----------


## next

> Reāli - ja tev ir TIK daudz trokšņi, ka tu nevari saprast, kad dati nāk un kad nenāk, tad tur neko izdarīt nevar!
> Beefs


 Trauceejumi ir raidiishanas starplaikos, tos jaamaak nofiltreet.

----------


## konis22

Es par to iedomājos bet viss apstājās pie tā kā aizsūtīt datus uz atmiņu.Un vēl pie tā kā salīdzināt.Laikam jālasa vairāk manuāļi.

----------


## konis22

kad skatijos oscilogrammaa liekas ka nav traucējumu starp bitiem.Tīrs signāls.Apmēram tā kad dati tiek uzlikti uz tīra nesēja.Nevis katra pakete tiek ieslēgts raidītājs un izslēgts.Vismaz tā izskatas.Varbūt ka tā tikai liekas.

----------


## next

> Es par to iedomājos bet viss apstājās pie tā kā aizsūtīt datus uz atmiņu.Un vēl pie tā kā salīdzināt.Laikam jālasa vairāk manuāļi.


 Nu skaties:


```
	movlw	ircor		;korigeejoshaa konstante
	addwf	irtim,F
	btfss	irtim,4		;<16
	goto	lc2		;iiss impulss

	btfsc	oldirbit                      ;bita staavoklis
	goto	lc3
	bcf	irimage,0
	rlf	irimage,F
	rlf	irimagl,F
	rlf	irimagh,F
	rlf	irimags,F
lc5	bcf	irimage,0
	rlf	irimage,F
	rlf	irimagl,F
	rlf	irimagh,F
	rlf	irimags,F
	goto	next
lc3	bsf	irimage,0
	rlf	irimage,F
	rlf	irimagl,F
	rlf	irimagh,F
	rlf	irimags,F
lc4	bsf	irimage,0
	rlf	irimage,F
	rlf	irimagl,F
	rlf	irimagh,F
	rlf	irimags,F
	goto	next

lc2	btfsc	oldirbit
	goto	lc4
	goto	lc5
```

 Uztvershanas buferis 4 baitos (irimag)
Kods ir maksimaali optimizeets uz aatrdarbiibu samierinoties ar apjoma pieaugumu.
Saliidzinaashanu iemetiishu veelaak.

----------


## next

Saliidzinaashana.
4 baiti vispirms saXORoti 2 baitos lai paaatrinaatu saliidzinaashanu.
Rezultaats comprez baitaa.
Nesaprotamie operatori jair un janav iisteniiba ir tie pashi btfsc un btfss (nu nevaru es vinjus paciest).
#define		jair		btfsc
#define		janav		btfss
#define		nul		STATUS,Z


```
compare	clrf	comprez		;35 cikli
	movf	irimage,W
	xorwf	sample1l,W
	jair	nul
	bsf	comprez,0
	movf	irimage,W
	xorwf	sample2l,W
	jair	nul
	bsf	comprez,1
	movf	irimage,W
	xorwf	sample3l,W
	jair	nul
	bsf	comprez,2
	movf	irimage,W
	xorwf	sample4l,W
	jair	nul
	bsf	comprez,4
	movf	irimagh,W
	xorwf	sample1h,W
	janav	nul
	bcf	comprez,0
	movf	irimagh,W
	xorwf	sample2h,W
	janav	nul
	bcf	comprez,1
	movf	irimagh,W
	xorwf	sample3h,W
	janav	nul
	bcf	comprez,2
	movf	irimagh,W
	xorwf	sample4h,W
	janav	nul
	bcf	comprez,4
	return
```

----------


## Slowmo

Tie 433mHz moduļi pareizi ir jāpieslēdz (kā aprakstā rakstīts), citādi būs visādi trokšņi. Es pats ar pavisam nesen pieslēdzu šādu modulīti bez nekādiem kondensatoriem, "ground plane" u.c prasībām. Viss jau strādā, bet ir trokšņi brīžos, kad netiek sūtīti dati.
Bet, kas attiecas uz filtrēšanu, tad nav jau īsti starpības - filtrēt trokšņus vai signālu no kāda cita avota (kādas citas automašīnas signalizācijas pults u.c.). Tev jau tāpat jāatpazīst pareiza datu telegramma.
Taču šajā sakarā uzreiz jautājum: ja izmanto Škodas pulti, tur tak vajadzētu būt rotējošajam kodam (kods pēc katras pogas nospiešanas mainās). Ja vien nav zināms algoritms, šādu pulti nevarēsi pats izmantot tālvadībai.

----------


## konis22

Par to rotāciju šodien vēl apskatīšos.Tā pults nav nekāda jaunā.Ceru ka nebūs tāda lieta.Aja būs tad domās ko citu.Vienkārši negribās taisīt citu pulti.Varētu uzrakstīt uz cita kontroliera savu kodu un iebāst tajā korpusā tā čipa vietā.tur problēmas nebūtu bet no sākuma jāpārliecinās vai tiešām kods rotā.Traucējumus atradu.Izskatās ka vainīgs ir pica 4mhz kvarcs.Nomainīšu uz mazāku un pārrakstīšu to softu bišku.Paldies par ieteikumiem jums visiem.Nu es zinu vairāk.  ::  
Kļūda ir pāris bitos.nebiju iedomājies par to rotāciju kad kopēju signālu.Domāju ka nokopēšu virkni ar tiem un izpētīšu.Daudz kombinācijas jau nevarētu būt.Ganko izdomāšu.Tad došu ziņu.

----------


## Slowmo

Auto signalizācijas pultī viennozīmīgi būs rotējošais kods, citādi kāds ar uztvērēju varētu nolasīt, ko Tu sūti un atkārtot to pašu bitu kombināciju, lai atslēgtu automašīnu. Un iespējams, ka būs vairāk kā miljards unikālo kombināciju (pietiek ar 30 bitiem, lai sasniegtu miljardu). Tavām vajadzībām labāk derēs kāda vārtu atvēršanas pults. Tur parasti ir fiksēti kodi. Vai arī kāda no šīm varētu derēt: http://www.elfa.lv/ec/26a2b3c/rf-talvadibas-pultis

----------

