EUSART plus MPLAB - komunikace s DS18B20

V tom případě není co řešit, oba dva mají HW USART, takže tento kus programu nebudeš potřebovat.

To Petr: Ja viem ze tieto oba procaky maju HW EUSART , ale priznavam ze vobec neviem ako by som ich mal v tomto konkretnom pripade pouzit. Este som s tym nerobil , Ak s tym mas skusenosti nevdel by si mi trsosku pomoct??
Dakujem…

Jasně že pomůžeme, ale chce to více ujasnit. V nadpisu máš napsáno komunikace s DS18B20 a stále se tu píše o USART, o jakou komunikaci a mezi čím chceš vlastně komunikovat.

To MiloPS3 : Prosim ta stiahni si oba tieto programy *.asm na tychto dvoch velmi zanamysch strankach, nastuduj si schemu zapojenia a programu a odsimuluj si to v MPLABE a povedz mi ci sa ti v okne watch prepina bit0 portuA…Tu su tie dava odkazy.

pandatron.cz/?566&teplotni_cidlo … _pic12f629
pandatron.cz/?530&uart_na_pic_-_ … covy_rs232

To Prter : Pozri si tieto dve stranky aby si bol v obraze a vedel o co ide…a mozno ta tym usmernim trochu.
Dakujem…

pandatron.cz/?566&teplotni_cidlo … _pic12f629
pandatron.cz/?530&uart_na_pic_-_ … covy_rs232

Špatně jsem pochopil zadání, takže to co jsem poprvé napsal byla blbost.
Program je napsán pro dvě varianty a to buď jenom pro vysílání, anebo vysílání i příjem. Takže pokud jde o ten kousek kódu o kterém je pořád řeč, má za úkol jen nastavit PORTA.0 jako výstup a nastavit na něm log.1. o žádné přepínání tedy nejde. Vlastní přepínání portu A.0 z log.1 do log.0 se zajišťuje v programu o něco níže.

To Peter: A nezistoval si preco sa MPLABE nemeni bit0 portuA?? Mne sa teda nemeni, ale zato sa mi meni TrisA. Toto je to co nechapem a nema logiku…
Vladimir…

MiloPS3 ti to vysvětloval 2x! :open_mouth:

Vladimíre, MPLAB nepoužívám a v asm nepíšu, ale tak jak to popsal honza3 i MiloPS3 je jasné že to tak může být a funguje to, akorát ten zápis tak jak je napsaný se zdá být matoucí, leč funkční.

Z toho co jsem pochopil já by se dalo jedním „define“ v případě PIC16F887 který chceš použít, přepínat mezi čtyři registry a to PORTA, TRISA, WDTCON a SRCON, stačí jen nastavit příslušnou banku.

Vladimire , tuto komunikaci “USEND” sem pouzival kdysi taky pro 629 , mam to odskousene funguje to , funguje to i v simulatoru v MPLABu, jak pro 12f629 tak 16f676, funkcni kody i se screenama sou prilozeny, jediny s cim se my to nepovedlo roschodit byla 675, prepinal se jen TRISIO, komparatory vyply ale GPIO se nehnul (mozna mas stejnej problem), nesel ani zmenit manualne (mozna naka chyba v MPLABu cert vi), ale u vise zminenych to funguje, pokud si spravne nastavis typ procesoru , bez chyby prelozis navidim duvod proc by to nemelo fungovat
TEST.rar (453 KB)

To MiloPS3: ahoj milo, tak mne sa vcera podarilo rozchodit UART s PIC16F690 (mam ich totiz doma 5 kusov), ale nefunguje to jak ma. Ja napriklad v slucke dokola vysielam do HyperTerminalu znak ‘1’ , ale HyperTermilal sa mi zaplni uplne inym znakom. Ked v asm zmenim znkak, tak temilnal sa mi zaplni zase uplne inym znakom ako chcem. Teda strucne, hterminal sa sice pekne zaplnu jedny znakom, no nikdy nie tym, ktorym chcem. V com by mohol byt problem?? Ja mam podozrenie na freqenciu , alebo rotaciu bitov. Pri 16F690 sa rotuje pomocou Cary bitu v statuse. Pracujem na 4MHz (teda aspom si myslim). Prikladam subor asm, pozri na to…
Dakujem, Vladimir.
uart_16F690_len_vystup_TX.asm (1.27 KB)

Pokud ti to prima neco jinyho nes vysilias je mozna problem v casovani viz vise, pokud primas porad stejnej znak (i kdyz jinej a treba paskvil) je to casovanim, ja sem to ladil v "Look RS232 " posilal se si hodnoty 0-255 (0,1,2,3…255,0,1…) porad dokola po 100mS a zobrazoval sem si to v binarni hodnote a doladoval sem SPEED , co se tyce hyperterminalu ja ho moc nepouzivam, nepobira to kdyz to do nej chrlim,pouzivam “herkules” nebo PICKIT uart tool, a vloz si mezi odesilani znaku nakou mensi pauzu at ti to tolik nechrli

EDIT: a jek dopat ten problem s tim PortA-TrisA ?

OK Milo, dakujem, doma vyskusam…dam vediet… a co sa tyka PortuA a TrisA, tak tak to som doposi nepochopi, ale skratka v praxi to funguje tak uz sa s tym nejdem zapodievat.

To MiloPS3 , tak uz to mam, vsetko pekne funguje aj v HypTerminale, aj v Herculese, aj v Terminale. Bolo tam treba upravit tu hodnotu 9600 baud. z 34 az na 29-31. Je to sposobene asi rozdielnou prac. frekvencou procesorov… Dakujem za usmernenie…
Vladimir…

A teď když ti to tak pěkně funguje jak píšeš, si nastav a vyzkoušej i hw usart, ten má tu výhodu že zbytečně nezatěžuje běh vlastního programu a má i svůj baudrate generátor.

To Petr: No ale s tym mi musis pomoct, to som este nerobil… nejak ma trochu nasmerovat. A este mam jeden dotaz: Nechapem preco sa mi ten program toci dokola??.. cize vypise to co chcem a chcem aby prestal, teda koniec programu “END” no ale on to stale vypisuje dokola v nekonecnej slucke…
Dakujem …

END neznamena konec programu ale konec kodu pro prekladac, jestli chces nejak ukoncit program tak GOTO $ , program se ti zastavi na goto a zustane tam,pak se z toho dostanes jedine prerusenim,

To Peter, Milos, Honza: Tak pani uz sa mi podarilo preluskat s tym, respektive prerobit to na tu 16F690, vsetko funguje jak ma, teda aj vstup s DS18B20 a tiez aj USART vystup… posielam ukazku…
Vladimir…

USART máš hardware nebo z toho programu?

V 16F690 je si hardwarovy USART , no ja ho nepouzivam, pouzivam ten emulovany, lebo to nieviem, ale chcel by som to naucit…Keby mi ktosi pomohol??..