PIC1628 a USART

Zdravim vsetkych,
Potreboval by som poradit ohladom citania SMS sprav z mobilu.Mobil prijme vopred definovanu spravu, porovna ju z obsahom pamati a vykona urcitu akciu.V podstate mi vsetko funguje ,system rozozna vsetky spravy a vykonava vsetky urcene akcie, ale problem je ked pride kratsia sprava ako je ta zadefinovana.Procesor skratka caka na zvysne znaky doblba.Neviem si nijako poradit ako testovat ci prisiel nejaky znak, a ak ano porovnat ho ak nie tak celu spravu vymazat.
Uz som skusal vselico ale marne.Mohol by mi niekto ukazat smer?
Vdaka
Tomy

Čau,
sice nevim jestli jsem to 100% pochopil, ale stoho jak to vidim bych to udělal asi takhle: Začal bych do procesoru přijmat správy, pri příchodu prvního bajtu bych zapnul čítač (třeba TMR2) a při každym dalšim přijmutym znaku bych ho vynuloval, sčehož vyplívá že pokud nepřijde znak delší dobu než bude nastavení timeru tak dojde k jeho přetečení a tim bych detekoval nečinost. Prakticky je to něco jako timeout.

Zdravim,
Este som sa k pouzitiu TMR nikdy nedostal, ale skusim nieco o tom najst.
Skor som myslel nejaku operaciu s PIR1, RCIF.Ak som spravne pochopil
manual, tak prave on signalizuje nove data v RCREG ak je v H.No ale nic som z toho nedostal.
S pozdravom
Tomy

Moc tomu tvojemu popisu nerozumim, ale SMS zprava ma v sobe zakodovanou delku, takze bych se ridil tim. Jinak bych teda znaky vycitel na zaklade preruseni od serioveho portu (snad to 1628 ma znamenat 16F628) a daval do nejakeho pole. Urcite nema smysl na to cekat v nejake hlavni smycce.

Zdravim,
Pouzivam textovy mod, tak tam taka moznost nie je.Prave skusam doplnit
system o nejaku casovaciu rutinu,ze ak nepride dalsi znak na porovnanie ,tak sa sprava vymaze.Zatial sa mi moc nedarilo s prerusenim…
A sorry za preklep, je to PIC16F628.
Tomy

Čau, tady jsem ti napsal jak nastavit a používat ten TMR2 o kterém jsem psal nahoře:

Základní nastavení T2CON může vypadat CCA takhle:
MOVLW B’01111011’
MOVWF T2CON
takhle nastavenej T2CON udělá to že je nastavená 1:16 před dělička a 1:16 po dělička a čítač nečítá (čas přetečení timeru při kristalu je 0,0655s)
Potom když dáš BSF T2CON,2 tak se timer rozběhne a čítá (BCF ho zase vypne).
Jestli chceš sledovat přerušení od TMR2 tak musíš mít nastavenej INTCON na hodnotu 11xxxxxx a PIE1 na hodnotu xxxxxx1x .
Do přerušení si pak dej něco takovýdleho a pokaždý když vznikne přetečení od TMR2 tak to skočí do PROCEDURA
BTFSC PIR1,TMR2IF
GOTO PROCEDURA
a nezapomeň v přerušení nulovat přerušovací bit:
BCF PIR1,TMR2IF

Zdravim,
A uz je to v p… akosi mi nestaci pamet procesora :unamused:
Nechcem ubrat z poctu a typu povelov prichadzajucich sprav, takze skusim 16F690 ten ma az 4kb .Inak skusam tuto rutinu a dufam ze je to dobre. Po volani receive z programu nasleduje test na f_char ak je H tak
sa sms maze, inak sa pokracuje. Zatial sa mi to neda vyskusat, tak skusim zacat len so spracovavanim SMS.Inac pouzivam Proteus na simulaciu a je to super vec, a dufam ze je to aj realita…
S pozdravom
Tomy

receive BCF STATUS,RP0
BTFSC RCSTA,OERR
GOTO overerror ;if overflow error…
BTFSC RCSTA,FERR
GOTO frameerror ;if frameerror…

receive1 BTFSC PIR1,RCIF
goto uart_gotit

ch1 decfsz ch_cnt1,1
goto receive1
ch2 decfsz ch_cnt2,1
goto receive1
ch3 decfsz ch_cnt3,1
goto receive1
bsf f_char
return

uart_gotit BCF INTCON,GIE ; turn gie off. This is IMPORTANT!
BTFSC INTCON,GIE ; MicroChip recommends this check!
GOTO uart_gotit
MOVF RCREG,W
BCF INTCON,GIE

ch_fill movlw 0xFF
movwf ch_cnt1
movwf ch_cnt2
movwf ch_cnt3
bcf f_char
RETURN

overerror BCF INTCON,GIE ;turn gie off. This is IMPORTANT!
BTFSC INTCON,GIE ;MicroChip recommends this check!
GOTO overerror
BCF RCSTA,CREN ;pulse cren off…
MOVF RCREG,W ;flush fifo
MOVF RCREG,W ;all three elements.
MOVF RCREG,W
BSF RCSTA,CREN
BSF INTCON,GIE ;enable interrupts.
GOTO receive ;try again…

frameerror BCF INTCON,GIE
BTFSC INTCON,GIE
GOTO frameerror
MOVF RCREG,W
BSF INTCON,GIE
GOTO receive ;try again…

DAj bacha stymi 4 kb… lbo sa to adresuje hore dole… ma zvlast starnku pamet 2+2kb