Stránka 3 z 3

Napsal: 01 úno 2011, 01:33
od procesor
Dalo by sa to aj trochu "učesať" ...urobiť z opakujúceho sa kódu podprogramy. :wink:

Napsal: 01 úno 2011, 09:30
od walleyman
Díky, moc, zatim to můžu jenom trochu urovnat a rotřídít na podprogramy, což jsem měl v plánu .. jenom to nemohu vyzkoušet, než mi přijde nový programátor, včera odešel te starý do křemíkového nebe ...

Napsal: 01 úno 2011, 15:22
od procesor
Je mi ľúto, aj to sa stáva.

Napsal: 06 úno 2011, 19:37
od walleyman
Tak programátor už je doma, v kodech jsem opravil pár chybiček .. (pojmenování bitů.. a opravil WAIT200uS) ovšem z nějakého důvodu nedochází ke komunikaci ... 627 jen opakovaně vysílá a 877 nic nevrací .. do 877 jde z RXTX modulu přijatý signál .. ovšem 877 už nepřepíná Rx/tx a nic negeneruje ....

Napsal: 07 úno 2011, 22:00
od procesor
Čo svieti na ledkách?. Asi k tomu nedôjde.
Skús upraviť, aby po chybe sa to vrátilo na START_R

Kód: Vybrat vše


START_R   
   BSF      RCSTA,CREN   ; zapne sa prijem do RCREG

   BTFSS      PIR1,RCIF      ;ceka na prichozi data (dokud neni naplnen RCREG)           
   goto      $-1      ;


   BTFSC      RCSTA,OERR      ;TEST CHYBY PRIJMU
   GOTO         RESTARTPRIJMU      ;   
   BTFSC      RCSTA,FERR      ;TEST CHYBY PRIJMU
   GOTO         CHYBARAMEC      ;



   MOVF         RCREG,0
   MOVWF      VYBER
   MOVWF      PORTB         ;zobrazeni prichozich dat na LED
       GOTO         MENU

RESTARTPRIJMU
      BCF         RCSTA,4
;     BSF         RCSTA,4         ; nastavi sa po START
      GOTO      START_R
CHYBARAMEC
      MOVF      RCREG,0
      GOTO      START_R

Napsal: 08 úno 2011, 01:12
od walleyman
Led jsou všechny v 0, START_R jsem přidal, po drátech vše funguje ale pomocí modulů se situace nezměnila, jinak příchozí data: Přijde 55h pak po dobu 6ms 0 pak po dobu 13ms 1, přijde 55h .... takže 627 generuje a čeká správně .... jen 877 vůbec nereaguje. Dcl rád bych věděl kde je tady zakopaný pes ....

Napsal: 08 úno 2011, 07:49
od procesor
Možno treba pred vyslaním dát vysielať dlhšie nejaké dáta (nar.10...20 krát 0xFF alebo predĺžiť 10...20x ten BLank), aby sa v prijímači nastavila citlivosť.
Teraz je to cca v dĺžke iba jedneho znaku.

Napsal: 08 úno 2011, 18:18
od Chenzee
Kdysi se tu řešilo posílání dat přes Auriel moduly a myslím, že Andrea tehdy psala, že tyto moduly neumí odesílat trvale log 1. Závěr tehdy tuším byl, že je nutné buď seriová data negovat nebo použít vlastní protokol kde výchozí stav je 0. Třeba si to s něčím pletu, třeba ne tak mě prosím nekamenujte ....

Napsal: 08 úno 2011, 18:55
od Andrea
Psala jsem, že to chce používat kódování s nulovou ss složkou, třeba manchester.

Napsal: 08 úno 2011, 20:42
od procesor
Lepšie som si pozrel dadasheet-y.
V popisoch sa uvádza, že tento modul je za istých podmienok vhodný aj pre prenos dat usartom. Nesmie sa prenášať impulz dlhší ako 5ms ...či už Hi, alebo Lo.
Takže z toho mi vychádza:
1/skrátiť úvodný vysielanie BLANK) na cca 2..4ms maximálne 5...10x400us (predtým som radil predĺžiť ..čo je chyba :oops: )
2/ ak sa to podarí rozbehnúť ...potom zvýšiť prenosovú rýchlosť aspoň na 4,8kBd. Pri prenose 0x00(pri 2,4kBd) by hrozilo prekročenie 5ms kladného impulzu ak by po prenose okamžite nenasledoval nasledujúci znak.
Samozrejme manchester kódovanie by riešilo aj nižšie prenosové rýchlosti a najmä prázdne miesta medzi dátami asynchrónneho prenosu.

Napsal: 08 úno 2011, 22:13
od walleyman
Tak jsem zkrátil dobu běhu Blank a zkrátil dobu čekání na Blank ... bez výsledku .. LED pořád bez odevzy .... na osc vidím, že Blankmá cca kolem 3ms .. což odpovídá kodu ... ovšem 877 pořád nic.

Napsal: 08 úno 2011, 22:43
od procesor
Ešte ma napadá...v inicializácii (v INIT) sa nastaví SPEN tým sa stane TX=Hi.
Potom zapnutie vysielača z PWRDN do TX nie je podľa obrázku

Kód: Vybrat vše

INIT      
      MOVLW      B'00000111'
      MOVWF      CMCON
      BSF         STATUS,RP0      ;BANKA1
           
      MOVLW      B'00000000'      ;VYSTUPNI PORT A
      MOVWF      TRISA
     
      MOVLW      B'00000110'      ;REZERVACE PORTU B,1,2 PRO SERIOVY PRENOS
      MOVWF      TRISB
     
      MOVLW      D'129'         ;KONSTANTA PRO VYPOCET BAUD RATE
      MOVWF      SPBRG     
     
      MOVLW       B'00100000'    ;zapnuti TXEN
      MOVWF       TXSTA         ;
      CLRF       PIE1          ;Vypnout preruseni na periferiich
      BCF        STATUS,RP0      ;BANKA0
;      BSF         RCSTA,SPEN      ;POVOLENI SERIOVEHO PORTU
;      BCF         RCSTA,CREN      ;POVOLENI PRIJMU ....teraz este bez  prijmu   

;INICIAKZACE BEZDRATOVEHO MODULU
      BSF         ENABLE
      CALL      WAIT20uS
      BSF         RXTX
      CALL      WAIT400uS
 
; !!!po  BST   RCSTA, SPEN sa TX nastav9 do Hi...!!!   oprava
     BSF         RCSTA,SPEN      ;POVOLENI SERIOVEHO PORTU
      BCF         RCSTA,CREN      ;POVOLENI PRIJMU ....teraz este bez     


možno ...?
a to potom treba aj pre 877

Aby sa nemuselo stále prepínať TRISB,RB2 in/out stačí na RB2 dať odpor 4k7 na GND aby sa na TX vnútila Lo aj v režime RB2 ak je IN.
To isté potom aj pre 877 tam je to tuším RC6

Keď sa prepína modul na čítanie a počas čítania ak bude TX=Hi, asi nebude vadiť.

Napsal: 08 úno 2011, 23:18
od walleyman
Zkusil jsem, bohužel beze změny .... to by mne zajímalo, kde je tady chyba ...

Napsal: 08 úno 2011, 23:31
od procesor
skús tie odpory, to som dopísal pozdejšie, musia tam byť, lebo keď nie je zapnuté SPEN sú RB1 aRB2 nastavené na IN.
Ešte treba po odvysielaní odpojiť SPEN podobne ako pri prepínaní na príjem až po kontrole toho bitu TRMT

Napsal: 29 dub 2011, 22:47
od walleyman
Heh ... koukám, že jsem před nějakým časem zapoměl poděkovat a sdělit, že problém vyřešen :D ...
Odpory to nakonec nebyly .... chyba byla, že se jeden z modulů vypínal příliš brzo, (moduly mají vlastní buffer, tím pádem je signál trošičku spožděný, než na výstupu z procesoru) a uříznul se stop bit ... což byl problém ... jelikož signál pak nebyl pro druhý procesor rozeznatelný ...

Tak tedy trochu opožděně děkuji a omlouvám se za nezdvořilost :)