Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Timer1-el meg lehet oldani. Kérdés mennyire kell pontosnak lennie annak az 1s-nek.
Csak ugy nagyjából legyen 1 s. AZ elv a fontos számomra.
"Keressetek és találni fogtok...." Ha a topikcím mellett a K betűs ikonra kattintasz, s a csillagot delay-re átírod, kikerestetheted ebben a topikban a késletetéssel foglalkozó hozzászólásokat.
Például a #300328 számúban van egy program, amit könnyen adaptálhatsz. Ennél többet nem tudunk segíteni, amíg nem árulod el, hogy milyen PIC, milyen frekvencián, milyen kapcsolásban működik...
Sziasztok!
Szeretnék készíteni egy alkalmazást PIC16f877 procival, amelyik a PC soros vonalával vezérelhető. Először az lenne a cél, hogy vegyen egy karaktert amit visszaküld a PC-nek. A PC-n futó program VISUAL BASIC-ben készült, jól működik. A PIC BASIC Pro-val készített programot mellékelem. Mellékelem a Compillerrel készült serin.asm fordítást is. Az alapvető problémának azt tartom, hogy a fényképen is látható teszteren csak a PC felöli ( RD ) led világít. Ha PC soros vonalait csatlakoztatom mind a két oldalra, akkor a ( TD ) led is világít. Az alkalmazást a CHIP-CAD próbapaneljére készítettem, ( több jól működő alkalmazást készítettem vele ) de a soros vonal kezelése nem akar működni. Az USART kezeléséről sehol nem találok magyar nyelvű leirást. ( A tudomány technika oldalon készülő PIC kézikönyv még odáig nem jutott el. ) Ha valaki tud segíteni előre is köszönöm.
Keress vissza, régebben tettem fel tesztprogramot! Igaz az asm. Itt a nagy többség nem nagyon használ Basicet, meg Pascalt, legfeljebb C-t. Javaslom erre áttérni, könnyebben kapsz segítséget, ha már úgy is az elején vagy. Felnézhetsz az oldalamra is, találhatsz egy írást, kezdőknek szántam.
Kösz a segitséget, éppen a Te oldaladon boklászok.
Hogy mostanában elég sokszor merül fel ez a soros kérdés, gondolkodom hogy írok erről valamit majd...
Addig is erről a forrásról beszéltem: 877 RS232 példa
Hello
A program végén az decfsz utasítás mire való azt értem hogy 1 el csökkenti a T-ket de hogy ez mire jó azt nem. Légyszi válaszoljatok.
Hello ismét egy kérdés a 16F877 nek hogy todnám a B portját digitálisra állítani?
Hát ez egy olyan kérdés, ami az adatlapból "megoldható"!
![]()
Nem csak csökkenti a megadott regisztereket, de azt is ellenőrzi, hogy a művelet eredménye nulla-a? Ha nulla, a következő utasítást átugorja és az az után következőn folytatódik a programvégrehajtás. Tulajdonképpen feltételes elágazás. Ajánlott olvasmány!
Állítani sehogy, mert az csak digitális lehet...
Kérlek, rendesen fogalmazz egy kérdést(írásjelek, tagolás, kis és nagybetű), mert többet nem olvasom el!
Sziasztok!
Volna egy kis problémám, hátha tudtok segíteni. A gondom az hogy raktam az autómba egy SMS küldős riasztót. Házi gyártmány, PIC16F628A a mikrovezérlő, soros porton keresztül vezérli a GSM modult AT parancskészlettel. A bajom az hogy néha önindítózáskor megáll az egész szerkentyű, pedig az F628A nál a POR / BOR/ PWRTE be van kapcsolva tehát elvileg ilyen esetben újra kéne induljon a program. Ilyenkor felállítaná a GSM modult és újra küldené az AT parancsokat. De nem oldódik meg a probléma csak akkor ha kb 10 sec re elveszem a tápot az egész szerkezettől és aztán újra ráadom, ilyenkor újra bootol és működik rendesen. A szoftveres BOR reset nem lenne elég? Esetleg használjam az adatlapban lévő külső reset megoldást a MCLR lábon? De az csak POR reset... Mi lehet a megoldás?
Amit elfelejtettem írni, 12 V ról egy LM 350 állítja elő a modulnak a 4,2 V ot. Szűrve van rendesen, pufferelve...stb. Próbából a puffereket kicseréltem 470 u ról 1u ra, mert arra gondoltam hátha a puffer miatt bolondul meg annyira rövid a feszültség esés hogy nincs idejük kisülni (bár pont ezért vannak ugyebár ot...)... Nem oldódott meg úgy sem a probléma.
Lehet hujeseg de en megprobalnek az lm350 ele bekotni egy diodat es a dioda utan meg egy nagy kondit mondjuk egy 4-6 ezer mikrosat.
Lehet, érdemes lenne bekapcsolnod és beleszőnöd a programba a WDT kezelését is. Gyanítom, hogy indítózáskor olyan gyors, nagy mértékű feszültségváltozások lépnek fel a 12V-on, aminek a hatása a CPU-t megbolondítja. Azaz lehet, hogy valahova nem kellő helyre kerül a vezérlés vagy hasonló hülyeség történik vele, a BOR meg nem szabadítja ki ebből, miután helyreállt a tápfeszültség. A WDT szerintem pont ilyen helyekre, helyzetekre való.
Hát 4 - 6 ezer µF val nem próbáltam. De gyanítom nem ez lesz a megoldás mert a gyári cuccokban sincsenek ekkora pufferek. A soros diódától meg idengenkedem kissé mert azért csúcsokban 2 - 3 A folyna át rajta, eléggé melegedne szerintem. A polarítás védelem is pont ezért egy soros multifuse biztosítékkal és fordított párhuzamos diódával van inkább megoldva.
Köszönöm, én is erre gondoltam csak még nem használtam sosem ezért félek tőle...
![]()
Azt hogyan lehet meghatározni hogy hány utasításonként kell lenulláznom?
Olvasgatom Topi cikkét a WDT ről...Hát eléggé át kell írkálnom a programot, + bonyolítja a dolgot (számomra) hogy a késleltetésekhez nem számlálót hanem késleltető rutinokat használok. De megoldom. (remélem
![]() Köszönöm a segítséget ( WDT vel kapcsolatban lehet hogy még kérdezni fogok...sőt , biztos ![]()
Első körben érdemes lenne meggyőződni arról, hogy a PIC fagy le, a GSM modul vagy mindkettő. Egyébként jobb lenne kideríteni, mi okozza a hibát. Én nem tartom szerencsésnek a watchdogot üzemszerűen használni. Egy jól működő áramkör esetén elvileg a watchdognak sose szabad resetelni...
A csúcsáram nem számít, ha az áram átlagértéke alacsony marad. Egy 1N5819-es schottky szerintem jó lenne oda. Nekem is van cuccom autóban, és csak egy 100n van az MCP1790 előtt (ez kb. 7805, csak kis nyugalmi árammal), és nem vettem észre, hogy probléma lenne az áramkörrel. Bár lehet nem lenne hülyeség reset után az eepromban egy számot növelni, hogy tudjam, volt-e menet közben reset.
Kiszedtem a cuccot a kocsiból most itt az asztalon tesztelgetem. A program úgy van megírva hogy az AT parancsok betöltése után sleep re megy a PIC. Most azt próbáltam ki hogy ha nem küldöm aludni a program végén hanem egy végtelen ciklust teszek a program végére akkor mi lesz...? És láss csodát valamiért működik a dolog. Eddig asztalon úgy teszteltem hogy a 12 V os labortáp kimenetére kötöttem a modult és egy miniplex fúrógépet párhuzamosan. Ha felbootolt a modul és bekapcsoltam a kis fúrógépet (ami 3 - 4A áramot vesz fel kb. induláskor pár sec re) akkor leült a modul és nem indult újra. Mióta kivettem a sleepet a program végéről működik. Csak nem tudom mitől és azt sem mennyire stabil lesz hosszútávon ez a megoldás.
A SLEEP önmagában nem kellene, hogy hibát okozzon, valami más okozza ott a galibát. Talán egy SLEEP utáni felébredéskor bebillenő megszakítás nincs letiltva, vagy ilyesmi. A SLEEP hasznos dolog, de át kell gondolni a dolgokat, mielőtt kiadjuk a sleep parancsot, és miután felébredt a kontroller sleepből.
Azt a végtelen ciklust nem értem, hol van a program végén. A főprogram kell, hogy tartalmazzon egy végtelen ciklust. Tehát egy ilyen lehet és kell, hogy legyen a programban. Akkor mostmár te is érted és érzed, hogy miért mondjuk azt, hogy a delay dolgokat tessék szépen elfelejteni és helyette timeres időzítést alkalmazni!
Nem használok megszakítást, minden megszakítás tiltva van de átnézem még egyszer.
A főprogram annyit csinál hogy karakterről karakterre kiküldi a TXREG re az adatokat. Miután ez megvan elmegy a controller aludni. A sleep helyére ezt raktam: X NOP goto X lehet hogy ezt nem így kéne... No igen, és meg kéne tanulnom a timereket használni...Jártam már úgy hogy egy aránylag kis és egyszerű program nem fért el a memóriában a sok delay miatt.
És ebből hogy jön ki a program, ha nem használsz megszakítást?
![]()
Sziasztok!
Segítségre lenne szükségem! Mégpedig hogy a 24LC256-ot hogyan kössem össze a PICKIT2 vel! Az adatlap alapján összekötöm és nem ismeri fel? Az 5x5x5 led kockát szeretném megépíteni de itt elakadtam! Köszi előre is! Zoli
Pickit2 klón topikban nemrég volt erről szó. Keress rá, ott megtalálod a választ.
A PICkit2 Readme-t kell elolvasni,abban benne van a bekötés.
A mellékelt PDF-et kinyomtatva a PICkit2 hátuljára ragaszthatod a bekötést. forrás Kép a megvalósításról!
Sehogy, ez a program azzal befejezi a működését hogy az adatokat betölti a GSM modulba. A mikrovezérlő újabb szerepet csak az egész kütyü újra indításakor kap, amikor újból fel kell konfigolnia a GSM modult az AT parancsokkal. Ezért is küldtem sleepre a program végén, mert nincs rá szükség a továbbiakban. Tudom hogy ti nem így oldottátok volna meg, de így is működik bár elvében biztos hogy nem jó megoldás. Én csak azt nem értem hogy ha sleep ben van a PIC akkor miért zavarodik össze a feszültség ingadozásoktól, és ha nem küldöm aludni, csak egy végtelen ciklusban pörög dolga végeztével akkor ugyanez a jelenség miért nem okoz problémát...? Lehet hogy csak szerencsén múlik a dolog ? Többször is próbáltam és a második verzióban nincs önindítózáskor hibajelenség, rendben újraindul a PIC és modul is.
Azért a WDT t bekapcsolom és átírom a programot. Mégiscsak jobb megoldás mint a "nemtudom mitől de működik..." variáció ![]() |
Bejelentkezés
Hirdetés |