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…
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.
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.
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ě.
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.