PIC16F690: UART wake up // pull up rezistory

Zdravim, potrebujem zobudit PIC zo sleep vzdy ked sa na RX zbernici objavia nejake data. Kedze prerusenie na UART nesposobi prebudenie procesora, vyriesil som to spojenim RX zbernice s lubovolnym vstupom cez 10k - vid prilozeny obrazok. Mam to ale zapojene bez R2. Vsetko funguje perfektne, co ale neviem je, ze ci ma z elektrického hladiska vyznam davat tam R2? Povedzme ze kvôli zabraneniu vzniku nejakého neurciteho stavu na vstupe apod. Na druhej strane Rx zbernice je pripojene zariadenie ktore je tiez v sleep mode a UART ma vypnuty.

Otazka c.2 sa tyka pull-up rezistorov: na obr je na vstup RA0 pripojene tlacitko v klasickom zapojeni ktore ja pouzivam. Otazka je ze ci mozem zo zapojenia vynechat R3 v pripade ze na RA0 aktivujem pull-up. V tychto pull-up rezistoroch nemam este uplne jasno ci sa jedna o plnohodnotnu alternativu externého rezistora, alebo to ma nejake obmedzenie. Este jedna podotazka: v pripade ze R3 mozem nahradit pull-upom, mozem nim teoreticky nahradit aj R2 ak je vôbec R2 potrebny?

PS: samotne data z UARTu nepotrebujem, potrebujem len prebudit PIC, ciz nevadi ak sa nejake prvotne bajty stratia…

  1. Pokud máš standartní UART, pak R2 musí jít na VCC nebo stačí mít aktivovaný pull-up na RB6. V klidovém stavu by měla být UART linka v log. 1 a nemůžeš jí odporem stahovat na GND. Externí přerušení na probuzení procesoru musíš nastavit na sestupnou hranu. Kromě toho, pokud RB6 budeš mít nastavený jako vstupní, s aktivovaným pull-upem a použitý čistě jenom na probuzení procesoru, můžeš vynechat i ten R1 a piny propojit přímo. Musel bys s tím ale počítat i na druhý straně a před vysíláním nastavit data linku do log. 1, chvilku počkat (mezera 2-3 bity bohatě postačí), aby se mezitím probral i tenhle procesor a můžeš začít vysílat.

  2. Interní pull-upy se u tlačítek používají zcela běžně. U AVRka je interní pull-up na IO pinech cca 30k. U PICů to předpokládám bude hodnota podobná, ale to by se mělo dát vyčíst z datasheetu.

Teď jsem si teprve přečetl Tvojí poznámku, že nepotřebuješ data z UARTu. Pokud jenom potřebuješ monitorovat, jestli je nebo není aktivita na DATA lince UARTu, pak vůbec nepotřebuješ ten RB5 mít nakonfigurovaný jako UART RX a k němu z druhýho pinu pull-up. Stačí Ti jeden vstupní pin s aktivovaným pull-upem a musí umět vyvolat přerušení (ideálně) při sestupné hraně = START bit, neboli začátek přenosu. Pokud by neuměl probudit procesor na sestupnou hranu (což nepředpokládám), pak náběžná hrana může přijít s prvním datovým bitem, ale může přijít také až se STOP bitem, neboli až po odvysílání celého prvního bytu.

Dakujem za odpoved - objasnilo mi to dost veci.
Tu moju poslednu poznamku som uplne nedomyslel pred tym ako som to odoslal - data z UART samozrejme potrebujem, ale filtrujem si iba urcitu cast z balika dat ktore pridu. A ta potrebna cast nikdy nie je na zaciatku, cize chcel som tym povedat, ze nie je problem keby sa nejake prvotne byty stratili kym sa PIC prebudi.
Co sa tyka log. 1 na UART v kludovom stave - potvrdzujem ze to suhlasi. Cize pull up je spravna volba.

Pak jenom zbývá zjistit, jestli RX pin UARTu umí současně fungovat i jako externí přerušení na sestupnou hranu. AVRka (ty, co mají PinChange Interrupt - PCINT) to umí. Já to používám k rozsvícení RX LEDky při komunikaci po UARTu, abych nemusel nějak čas RX LEDky prodlužovat, když by se rozsvítila až po přijetí bytu. Takhle na začátku START bitu LEDku rozsvítím a s UART RX Complete Interruptem ji zhasínám. Pokud ne, musíš propojit TX pin ještě s jedním (odpor R1), ale nedával bych tam víc, než 100R. Jako ochrana to stačí a na druhém pinu aktivuj pull-up a přerušení na sestupnou hranu.

Otázkou zůstává, jaký sleep mód používáš a zda nevypne i pull-upy. Pak bys musel buď použít jiný sleep mód nebo externí pull-upy. PICy nedělám, takže tohle si musíš zjistit sám nebo Ti to musí zodpovědět někdo jiný. Ale rychlejší asi bude to vyzkoušet.

To by bolo idealne riesenie keby pin v rezime Rx zaroven mohol fungovat aj ako externe prerusenie - urcite to vyskusam.
Co sa tyka pull-upov v sleep mode, nenasiel som zatial v datasheete nic co by potvrdzovalo, ze sa vypnu, asi tiez vymyslim nejaky sposob ako to otestovat. Asi len meranim napatia/prudu.

Kde to bude pouzite? Ako mas osetrene mozne rusenie vstupov procesora? Ktore moze sposobit az jeho reset?

Popravde zatial nijak a velmi ani nemam predstavu ako to korektne osetrit nakolko ruseni moze byt million druhov. Mne napada jedine kondik medzi vstup a zem pripadne zener, google radi varistor.
Pripomienka je to vsak velmi dobra, rad si neham poradit ak mas s tym skusenost. Riziko rusenia je vysoke, na druhom konci uart je GSM modem a je/bude umiestneny velmi blizko PIC.

Rovnou na to zapomeň, s tím se nedomluvíš když nevíš co děláš, neexistuje jednoduchá obecná rada - všelék, která by se dala udělit a začalo to fungovat. Ve VF se každá konkrétní realizace vždy řeší konkrétními řešeními a opatřeními (a nezřídka se u doho měří hodně drahým vybavením) a dost často z toho mají těžkou hlavu i lidi, co na to mají školu i s titulem a celoživotní praxi. GSM může vysílat až 4W výstupního výkonu a používá frequency hopping, to proleze všude. Dát hned vedle toho MCU opravdu není dobrý nápad když nevíš jak, a to ty ani netušíš. Popravdě já taky ne, VF nedělám, a lidi co tohle dělají (za velké peníze) nebudou mít čas vypisovat se ti tu na fóru s radami.

Pokud na to budeš kreslit desku, tak naopak, čím blíže, tím lépe. Krátký spoj = špatná anténa. Minimálně jedna zemní rovina pod celou deskou, signály v mezivrstvě,všemu co má odběr se musí patřičně blokovat napájení. Vstupy a výstupy mimo desku přes RC / LC odrušovací články nebo průchodky, pokud to bude mít kovovou krabičku. Mám to z praxe. Ve firmě kde dělám, jsme takové zařízení vyvinuli - gsm,gps,arm pospolu na desce 18x65 mm a funguje stabilně.

google.cz/search?q=odrušova … l%C3%A1nek

Zase az tak dramaticky by som to hned nevidel, funguje to uz vyse roka a zatial problemy neboli a pred tym to bolo este pol roka na prepojovacom poli natahane kablami. Asi hlavne preto ze 90% casu to spi. Momentalne akurát len riesim prebudzanie USARTom namiesto watchdogu a to teda bolo uz vramci tohto prispevku vyriesene.

BTW Balu potrvrdzujem:

Mahoney:
je pravda co pises, v minulosti ked som cital knihu o VF technike, tak vzdal som to v polovici s tym, ze to je velka veda a na to nemam. No myslim, ze v ramci hobby ma zmysel robit taketo zariadenia aj v domácich podmienkach a nemusim hned kupovat techniku za miliony, aby som vytvoril dokonale odtienene zariadenie, ktore bude fungovat desiatky rokov bez jedinej chyby. Snazim sa robit s tym co mam a vytazit z toho maximum.