Založen: May 27, 2008 Příspěvky: 35 Bydliště: Jičín
Zaslal: po leden 24 2011, 23:36 Předmět:
Jsem to ale blbec, vůbec mne nenapadlo použít Subtract a pak testovat příznak ve STATUSu ... to je hodně velké zjednodušení ... díky moc.
A koukám, že jsem opět přehodil testování TXIF až za naloadování TXREG .. bože jak je člověk blbej když civí půl dne na tu samou věc ... S 627 si pohraji zítra, prozatím mnohokrát děkuji za pomoc, občasné nakopnutí a inspiraci. Zítra dám dohromady 627 snad to bude běhat ..
funguje ....
niekedy je vhodnejší tento inokedy so SUBWF... podľa toho či je potrebné o výsledku vedieť viac ( nastavuje c,dc,z ), alebo stačí z a c,dc zostáva nezmenené.
Založen: May 27, 2008 Příspěvky: 35 Bydliště: Jičín
Zaslal: út leden 25 2011, 21:22 Předmět:
Zdravím, tak jsem teda ještě doupravil oba kody, teď již komunikace mezi nimi naběhne, ovšem data jsou pořád stejná nezávisle na vstupu AD. Bohužel nevím kde je chyba ...
Založen: Oct 02, 2009 Příspěvky: 5286 Bydliště: PO
Zaslal: út leden 25 2011, 22:59 Předmět:
Synchro
- vyšleš 0X55
-naplň pocitadlá na hoci aj na 50ms
- kontrola prijímačaFERR,OERR
-test RCIF? ak je... príjem a kontrola na 0XAA ak OK skoncil synchro
---ak nie je dekrementuj pocitadlá o 1
-----vynulonané pocitadlá? Ak áno ides znova synchto
-----este nevynulované vrát sa na test testRCIF vyssie
skoncil synchro
tu sa ide klasicky pošleš kod
naplň pocitadlá na hoci aj na 50ms
kontrola prijímačaFERR,OERR pri chybe oprav a ide "Synchro"
čakáš príjem podobne ako pri synchro
v čakacej slučke je testRCIF?
ak neprídu data do uplynutia času ide "synchro"
prisli data ide sa ďalej na nové data
Založen: May 27, 2008 Příspěvky: 35 Bydliště: Jičín
Zaslal: st leden 26 2011, 18:54 Předmět:
RX u 627 po zapnutí samovolě resetuje (osciluje) i když k němu nic není připojeno, TX vysílá 0X55 a 877 v pořádku přijímá a vrací 0xAA, ale vzhledem k oscilaci vstupu RX 627 se signál nedostane dovnitř 627 ... dle datasheetu : pokud OERR set (overload FIFO RCREG), tak odstranit resetem přijímače CREN a spustit SYNCHRO, pokud OERR set, tak nebyl přijat stop bit, odtranění přečtením RCREG a spuštěním SYNCHRO ... kde je tedy chyba to by mne zajímalo ...
MOVLW B'00000001' ;ve W je ulozena informace a MCU ji odesila pres UART ven (KANAL 0)
BTFSS PIR1,TXIF ;TESTOVANI ABYCHOM SI TXREG NEPREPSALI vždy pred zápisom !
GOTO $-1 ;
MOVWF TXREG ;presunout 8-bit hodnotu do registru TXREG (Bank0) => nacteni dat zacina vysilani
BTFSC RCSTA,OERR ;TEST CHYBY PRIJMU
GOTO RESTARTPRIJMU ;jdi na opravu chyby prijmu
BTFSC RCSTA,FERR
GOTO CHYBASTOPBITU
MOVLW 0x21 ;33 DEC
MOVWF TMP1
MOVLW 0x76 ;118 DEC
MOVWF TMP0
CYKPRIJEM1
BTFSC PIR1,RCIF
GOTO PRIJEM1
CALL PocitadloMinusJedna
ANDLW 0XFF ;test W
BTFSC STATUS,Z
GOTO SYNCHRO ; podol čas
GOTO CYKPRIJEM1 ; ešte nepadol
PRIJEM1
MOVF RCREG,0
MOVWF K0L ;DAT A JEJICH ULOZENI
CYKPRIJEM2
BTFSC PIR1,RCIF
GOTO PRIJEM2
CALL PocitadloMinusJedna
ANDLW 0XFF ;test W
BTFSC STATUS,Z
GOTO SYNCHRO ; podol čas
GOTO CYKPRIJEM2 ; ešte nepadol
MOVLW B'00000010' ;ve W je ulozena informace a MCU ji odesila pres UART ven (KANAL 0)
BTFSS PIR1,TXIF ;TESTOVANI ABYCHOM SI TXREG NEPREPSALI vždy pred zápisom !
GOTO $-1 ;
MOVWF TXREG ;presunout 8-bit hodnotu do registru TXREG (Bank0) => nacteni dat zacina vysilani
BTFSC RCSTA,OERR ;TEST CHYBY PRIJMU
GOTO RESTARTPRIJMU ;jdi na opravu chyby prijmu
BTFSC RCSTA,FERR
GOTO CHYBASTOPBITU
MOVLW 0x21 ;33 DEC
MOVWF TMP1
MOVLW 0x76 ;118 DEC
MOVWF TMP0
CYKPRIJEM3
BTFSC PIR1,RCIF
GOTO PRIJEM3
CALL PocitadloMinusJedna
ANDLW 0XFF ;test W
BTFSC STATUS,Z
GOTO SYNCHRO ; podol čas
GOTO CYKPRIJEM3 ; ešte nepadol
PRIJEM3
MOVF RCREG,0
MOVWF K1L ;DAT A JEJICH ULOZENI
CYKPRIJEM4
BTFSC PIR1,RCIF
GOTO PRIJEM4
CALL PocitadloMinusJedna
ANDLW 0XFF ;test W
BTFSC STATUS,Z
GOTO SYNCHRO ; podol čas
GOTO CYKPRIJEM4 ; ešte nepadol
Založen: Oct 02, 2009 Příspěvky: 5286 Bydliště: PO
Zaslal: st leden 26 2011, 20:07 Předmět:
V INIT oprav TRISB pre RB1.... vstup. RB2...výstup
Tam kde je inicializácia TRISB je nezmyselný CLRF PORTB...toto vyhoď, lebo je to de facto v BANK1 clrf trisb, čiže portB na výstup otočený!?!
Založen: May 27, 2008 Příspěvky: 35 Bydliště: Jičín
Zaslal: ne leden 30 2011, 16:49 Předmět:
Zdravím, tak jsem tu zas, vše komunikuje tak jak má, přenáším více kanálů, vše ok. Ovšem, konstrukci jsem rozšířil o bezdrátové RTX-mid 5v moduly od AURElu, takže UART chci přenášet bezdrátově. Dodržel jsem všechny časy dle katalogu aurelu pro inicializaci, přepínání příjmu a vysílání .. mám ošetřeno aby nedošlo k ustřihnutí odchozích dat, než jsou odvysíláná, z nějakého důvodu se oba procesory nechtějí zasynchronizovat ... přikládám oba zdrojáky a časové diagramy z katalogu aurel.
MOVLW B'00000001' ;ve W je ulozena informace a MCU ji odesila pres UART ven (KANAL 0)
BTFSS PIR1,TXIF ;TESTOVANI ABYCHOM SI TXREG NEPREPSALI vždy pred zápisom !
GOTO $-1 ;
MOVWF TXREG ;presunout 8-bit hodnotu do registru TXREG (Bank0) => nacteni dat zacina vysilani
CALL TXTORX
BTFSC RCSTA,OERR ;TEST CHYBY PRIJMU
GOTO RESTARTPRIJMU ;jdi na opravu chyby prijmu
BTFSC RCSTA,FERR
GOTO CHYBASTOPBITU
MOVLW 0x21 ;33 DEC
MOVWF TMP1
MOVLW 0x76 ;118 DEC
MOVWF TMP0
CYKPRIJEM1
BTFSC PIR1,RCIF
GOTO PRIJEM1
CALL PocitadloMinusJedna
ANDLW 0XFF ;test W
BTFSC STATUS,Z
GOTO SYNCHRO ; podol čas
GOTO CYKPRIJEM1 ; ešte nepadol
PRIJEM1
MOVF RCREG,0
MOVWF K0L ;DAT A JEJICH ULOZENI
CYKPRIJEM2
BTFSC PIR1,RCIF
GOTO PRIJEM2
CALL PocitadloMinusJedna
ANDLW 0XFF ;test W
BTFSC STATUS,Z
GOTO SYNCHRO ; podol čas
GOTO CYKPRIJEM2 ; ešte nepadol
PRIJEM2
MOVF RCREG,0
MOVWF K0H ;DAT A JEJICH ULOZENI
CALL RXTOTX
;-------------------------------------------------------------------------------------------------------------------------
PRENOSK1
MOVLW B'00000010' ;ve W je ulozena informace a MCU ji odesila pres UART ven (KANAL 0)
BTFSS PIR1,TXIF ;TESTOVANI ABYCHOM SI TXREG NEPREPSALI vždy pred zápisom !
GOTO $-1 ;
MOVWF TXREG ;presunout 8-bit hodnotu do registru TXREG (Bank0) => nacteni dat zacina vysilani
CALL TXTORX
BTFSC RCSTA,OERR ;TEST CHYBY PRIJMU
GOTO RESTARTPRIJMU ;jdi na opravu chyby prijmu
BTFSC RCSTA,FERR
GOTO CHYBASTOPBITU
MOVLW 0x21 ;33 DEC
MOVWF TMP1
MOVLW 0x76 ;118 DEC
MOVWF TMP0
CYKPRIJEM3
BTFSC PIR1,RCIF
GOTO PRIJEM3
CALL PocitadloMinusJedna
ANDLW 0XFF ;test W
BTFSC STATUS,Z
GOTO SYNCHRO ; podol čas
GOTO CYKPRIJEM3 ; ešte nepadol
PRIJEM3
MOVF RCREG,0
MOVWF K1L ;DAT A JEJICH ULOZENI
CYKPRIJEM4
BTFSC PIR1,RCIF
GOTO PRIJEM4
CALL PocitadloMinusJedna
ANDLW 0XFF ;test W
BTFSC STATUS,Z
GOTO SYNCHRO ; podol čas
GOTO CYKPRIJEM4 ; ešte nepadol
PRIJEM4
MOVF RCREG,0
MOVWF K1H ;DAT A JEJICH ULOZENI
CALL RXTOTX
;-------------------------------------------------------------------------------------------------------------------------------
PRENOSK2
MOVLW B'00000100' ;ve W je ulozena informace a MCU ji odesila pres UART ven (KANAL 0)
BTFSS PIR1,TXIF ;TESTOVANI ABYCHOM SI TXREG NEPREPSALI vždy pred zápisom !
GOTO $-1 ;
MOVWF TXREG ;presunout 8-bit hodnotu do registru TXREG (Bank0) => nacteni dat zacina vysilani
CALL TXTORX
BTFSC RCSTA,OERR ;TEST CHYBY PRIJMU
GOTO RESTARTPRIJMU ;jdi na opravu chyby prijmu
BTFSC RCSTA,FERR
GOTO CHYBASTOPBITU
MOVLW 0x21 ;33 DEC
MOVWF TMP1
MOVLW 0x76 ;118 DEC
MOVWF TMP0
CYKPRIJEM5
BTFSC PIR1,RCIF
GOTO PRIJEM5
CALL PocitadloMinusJedna
ANDLW 0XFF ;test W
BTFSC STATUS,Z
GOTO SYNCHRO ; podol čas
GOTO CYKPRIJEM5 ; ešte nepadol
PRIJEM5
MOVF RCREG,0
MOVWF K2L ;DAT A JEJICH ULOZENI
CYKPRIJEM6
BTFSC PIR1,RCIF
GOTO PRIJEM6
CALL PocitadloMinusJedna
ANDLW 0XFF ;test W
BTFSC STATUS,Z
GOTO SYNCHRO ; podol čas
GOTO CYKPRIJEM6 ; ešte nepadol
PRIJEM6
MOVF RCREG,0
MOVWF K2H ;DAT A JEJICH ULOZENI
CYKPRIJEM7
BTFSC PIR1,RCIF
GOTO PRIJEM7
CALL PocitadloMinusJedna
ANDLW 0XFF ;test W
BTFSC STATUS,Z
GOTO SYNCHRO ; podol čas
GOTO CYKPRIJEM7 ; ešte nepadol
PRIJEM7
MOVF RCREG,0
MOVWF ZNAMENKO ;DAT A JEJICH ULOZENI
CALL RXTOTX
VYSILEJL
BSF STATUS,RP0 ;BANKA1 (ADRESL JE V BANCE 1 !!! )
MOVF ADRESL,W ;do W je ulozena informace a MCU ji nasledne odesila pres UART ven
BCF STATUS,RP0 ;BANKA0
BTFSS PIR1,TXIF ;TESTOVANI ABYCHOM SI TXREG NEPREPSALI
GOTO $-1 ;
MOVWF TXREG ;presunout 8-bit hodnotu do registru TXREG (Bank0) => nacteni dat zacina vysilani
RETURN
VYSILEJH
MOVF ADRESH,W ;do W je ulozena informace a MCU ji nasledne odesila pres UART ven
BTFSS PIR1,TXIF ;TESTOVANI ABYCHOM SI TXREG NEPREPSALI vždy pred zápisom !
GOTO $-1 ;
MOVWF TXREG ;presunout 8-bit hodnotu do registru TXREG (Bank0) => nacteni dat zacina vysilani
RETURN
Založen: May 27, 2008 Příspěvky: 35 Bydliště: Jičín
Zaslal: po leden 31 2011, 1:13 Předmět:
Super, myslel, jsem si, že problém je v moc malých intervalech mezi příjmem a vysíláním, a měl jsem podezření, že přepnutí vysílání na příjem na druhé starně vyvolá chybu ... hned ráno zkusím přepsat a upravit .. žil jsem v domění, že RF moduly prostě nahradím drátovou komunikaci, ovšem nic není jednoduché jak se zdá ...
Založen: Oct 02, 2009 Příspěvky: 5286 Bydliště: PO
Zaslal: po leden 31 2011, 10:22 Předmět:
Možno by to chcelo aj zabezpečenie dat pridaným kontrolným bytom. Z éteru môže prísť kedykoľvek hocičo, pričom sa nemusí vygenerovať FERR/OVERR. Častými falošnými príjmami budú všelijaké znaky ako 0xFF, 0X7F, 0X3F .... a iba časť z nich bude mať nahodenú FERR.
Prijímač by dáta skontroloval aj s kontrolným bytom a až ich potom použil. Inak by sa buď opäť vyžiadali, alebo zahodili. To závisí od aplikácie.
Založen: May 27, 2008 Příspěvky: 35 Bydliště: Jičín
Zaslal: po leden 31 2011, 19:04 Předmět:
Tak nevim, jestli jsem to pochopil, jelikož to jako nashvál nekomunikuje ... jinak Baudrate mám 2,4k, což znamená 1bit = 400us, 25bitů = 10ms.
Takže po přepnutí RXTOTX následuje čekání 10ms.
Druhá strana:
Před přepnutím TXTORX je zakázán příjem UARTU, po přepnutí čeká 5ms (cca 13bitů), následně zapne příjem a čeká RCIF.
Vložil jsem detekce FERR a OERR.
Pro jistotu přikládám zdrojáky ...
MOVLW B'00000001' ;ve W je ulozena informace a MCU ji odesila pres UART ven (KANAL 0)
BTFSS PIR1,TXIF ;TESTOVANI ABYCHOM SI TXREG NEPREPSALI vždy pred zápisom !
GOTO $-1 ;
MOVWF TXREG ;presunout 8-bit hodnotu do registru TXREG (Bank0) => nacteni dat zacina vysilani
CALL TXTORX
BTFSC RCSTA,OERR ;TEST CHYBY PRIJMU
GOTO RESTARTPRIJMU ;jdi na opravu chyby prijmu
BTFSC RCSTA,FERR
GOTO CHYBASTOPBITU
MOVLW 0x21 ;33 DEC
MOVWF TMP1
MOVLW 0x76 ;118 DEC
MOVWF TMP0
CYKPRIJEM1
BTFSC PIR1,RCIF
GOTO PRIJEM1
CALL PocitadloMinusJedna
ANDLW 0XFF ;test W
BTFSC STATUS,Z
GOTO SYNCHRO ; podol čas
GOTO CYKPRIJEM1 ; ešte nepadol
MOVF RCREG,0
MOVWF K0H ;DAT A JEJICH ULOZENI
CALL RXTOTX
;-------------------------------------------------------------------------------------------------------------------------
PRENOSK1
MOVLW B'00000010' ;ve W je ulozena informace a MCU ji odesila pres UART ven (KANAL 0)
BTFSS PIR1,TXIF ;TESTOVANI ABYCHOM SI TXREG NEPREPSALI vždy pred zápisom !
GOTO $-1 ;
MOVWF TXREG ;presunout 8-bit hodnotu do registru TXREG (Bank0) => nacteni dat zacina vysilani
CALL TXTORX
BTFSC RCSTA,OERR ;TEST CHYBY PRIJMU
GOTO RESTARTPRIJMU ;jdi na opravu chyby prijmu
BTFSC RCSTA,FERR
GOTO CHYBASTOPBITU
MOVLW 0x21 ;33 DEC
MOVWF TMP1
MOVLW 0x76 ;118 DEC
MOVWF TMP0
CYKPRIJEM3
BTFSC PIR1,RCIF
GOTO PRIJEM3
CALL PocitadloMinusJedna
ANDLW 0XFF ;test W
BTFSC STATUS,Z
GOTO SYNCHRO ; podol čas
GOTO CYKPRIJEM3 ; ešte nepadol
MOVF RCREG,0
MOVWF K1H ;DAT A JEJICH ULOZENI
CALL RXTOTX
;-------------------------------------------------------------------------------------------------------------------------------
PRENOSK2
MOVLW B'00000100' ;ve W je ulozena informace a MCU ji odesila pres UART ven (KANAL 0)
BTFSS PIR1,TXIF ;TESTOVANI ABYCHOM SI TXREG NEPREPSALI vždy pred zápisom !
GOTO $-1 ;
MOVWF TXREG ;presunout 8-bit hodnotu do registru TXREG (Bank0) => nacteni dat zacina vysilani
CALL TXTORX
BTFSC RCSTA,OERR ;TEST CHYBY PRIJMU
GOTO RESTARTPRIJMU ;jdi na opravu chyby prijmu
BTFSC RCSTA,FERR
GOTO CHYBASTOPBITU
MOVLW 0x21 ;33 DEC
MOVWF TMP1
MOVLW 0x76 ;118 DEC
MOVWF TMP0
CYKPRIJEM5
BTFSC PIR1,RCIF
GOTO PRIJEM5
CALL PocitadloMinusJedna
ANDLW 0XFF ;test W
BTFSC STATUS,Z
GOTO SYNCHRO ; podol čas
GOTO CYKPRIJEM5 ; ešte nepadol
VYSILEJL
BSF STATUS,RP0 ;BANKA1 (ADRESL JE V BANCE 1 !!! )
MOVF ADRESL,W ;do W je ulozena informace a MCU ji nasledne odesila pres UART ven
BCF STATUS,RP0 ;BANKA0
BTFSS PIR1,TXIF ;TESTOVANI ABYCHOM SI TXREG NEPREPSALI
GOTO $-1 ;
MOVWF TXREG ;presunout 8-bit hodnotu do registru TXREG (Bank0) => nacteni dat zacina vysilani
RETURN
VYSILEJH
MOVF ADRESH,W ;do W je ulozena informace a MCU ji nasledne odesila pres UART ven
BTFSS PIR1,TXIF ;TESTOVANI ABYCHOM SI TXREG NEPREPSALI vždy pred zápisom !
GOTO $-1 ;
MOVWF TXREG ;presunout 8-bit hodnotu do registru TXREG (Bank0) => nacteni dat zacina vysilani
RETURN
Založen: Oct 02, 2009 Příspěvky: 5286 Bydliště: PO
Zaslal: út únor 01 2011, 1:17 Předmět:
pozri si toto
Je tam upravené čakanie na zapnutie vysielača druhej strany. To sa robí priamo cez portc7 resp. portb1 čítaním.
Nie je to bohvie čo, ale možno to pôjde, ak som v tom nerobil nejaké chyby.
Najmä u 627 je potrebné na príjem čakať iba do nejakej doby, aby sa to nezaťalo. Po pretečení času sa musí nanovo rozbehnúť nadviazanie spojenia...synchro.
877 môže trčať v prijímacej slučke stále. Iba pri zapínaní prenosu sa musí rozpoznať začiatok, prvý PaZnak vyhodiť-preskočiť...ten znak je tam zákonite ak sa príjem zapne skôr ako 627 zapne vysielač.
Ak by to nestačilo takto detekovať zapnutý vysielač, potom s HW by sa dal urobiť RC obvod a snímať ho na voľnom pine 627/877
Časy uváděny v GMT + 1 hodina Jdi na stránku Předchozí1, 2, 3Další
Strana 2 z 3
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.