Fórum témák
» Több friss téma |
Pic Simulátor IDE
ezeknek utánanézek. A pickit 3-al ugyanúgy küldöm át a a programot, mint korábban: PGD/PGC/MCLR kombóval (ICSP)
Akkor az kilőve..
Már csak az a kérdés hogy a klon mennyire klon....? Használható e vagy sem...
Sziasztok! Regiszter értékét tudok decimális változóval megadni?
Ezzel a szimulátorral figyelj oda, mert nem mindent úgy csinál mint a fizkai PIC. Az sem érdekli, hogy a quartzot, hogy konfigolod. Simán lefut a neki beállított frekivel. Más gondom is volt vele de részletekre már nem emlékszem.
Tudsz, a fordító minden számrendszert átfordít binárisra, csak azt értik a digitális eszközök.
Bocsánat, valóban szűkszavú voltam. MPlab C. Egy 8 bites regiszter utolsó 4 bitjét szeretném függvény alapján változtatni, csak decimális környezetben otthonosabban mozgok.
A hozzászólás módosítva: Márc 8, 2017
A hardver kvarc beállítása jó (4MHz), másik progi fut rajta. A Simulátor beállítása is ugyan az, mint működő változatnál, tehát ez sem okozhatja a gondot.
Ha logikai hiba lenne (rossz cím, hivatkozás, stb., akkor a szimulátor azt kihozná (annyira gagyi nem lehet), gondolom. Én inkább valami időzítési dologra gondolok, ebben vannak mindenféle késleltetések, hogy az LCD jól működhessen. Ezeknek az ütemezése lehet a gond - érzésem szerint, de ehhez már kevés vagyok, ezért kértem tanácsot.
A C alapértelmezett számrendszere a tizes.
A két sor lefuttatása után a munka tartalma 252 = 0xFC.
Idézet a PIC16F87xA adatlapjából (DS39582B-page 45):
Idézet: „Low-Voltage ICSP Programming (LVP) is enabled by default which disables the RB3 I/O function. LVP must be disabled to enable RB3 as an I/O pin and allow maximum compatibility to the other 28-pin and 40-pin mid-range devices.” Ha LVP engedélyezett és az RB3 az LCD modul D7 kivezetésére magy (4 bites mód), a láb lebeghet illetve a modulban levő felhúzó ellenállás magas szintre viheti. Ha magas szint előfordulhat rajta akárcsk rövid ideig, a kontroller programozási módba léphet... Már írtál majdnem egy oldalt, hoyg miért nem fut a 16F84 -re írt program a 16F877A -n, nem kellenhe kipróbálni a javasoltakat? Pokoli szerencséd van: - A del változóba betöltött érték maximális értéke 15, azaz nem érinti a 4. és 5. bitet. Mi történne, ha a programot kiegészítenéd megszakítás kezeléssel. A PIR1 gegiszter írása azonnal kiváltja a megszakítást azokon a biteken, ahol 1 érték íródik be és a hozzá tartozó megszakítás engedélyezett. - A cmd azaz PIR2 regisztert valamiért nem használja a program... Szerintem valaki rájött, hogy hiányoznak a nem megvalósított bitek... Teszteld le a szimulátort: Miután a cmd változót nem használja a program, töröljük ki.
Működik a szimulátorban így is??? A hozzászólás módosítva: Márc 9, 2017
Természetesen magam is próbálkozok folyamatosan. Egyenlőre kevesebb, mint több sikerrel.
Nem azt várom, hogy megcsinálja valaki helyettem, csak ötleteket, amit köszönök.
Üdv!
Nagy valószínűséggel időzítési probléma lesz, ahogy írtad. A valós eltelt idő számlálója 200ms-ot mutat, ebből 100ms-nak kellene lennie minimum az LCD inicializálásnak és ehhez jön hozzá még a többi. De ha már használod ezt a programot, miért nem írod meg BASIC-ben? Főleg, ha csak ennyi lenne a kiírási feladat. Nem lenne egy egetverően nagy feladat, főleg úgy hogy a példák között van ilyen, azt hiszem pont 16F877A-ra.
Nem jó új vágányra terelni a tapasztalatlan programozót.
Idézet: „Értelemszerűen a hardver ugyan az (ami a 84a-val ment), csak PIC van cserélve és átdugdosva az eltérő lábkiosztás (és szám) miatt.” Ha abból indulok ki, amit az idézetben állít, akkor a fenti hibákat kijavítva, az összekötéseket újra megvizsgálva, az esetleg hiányzó szűrőkondenzátorokat beépítve (az összehuzalozás megnöveli az induktivitásokat, így a kondenzátorokat közvetlenül a 16F877A táp és föld lábaihoz) és az eredetileg használt 4MHz -es kristállyal működnie kellene. 4MHz -nél egy utasítás 1us a 16F87xA -n is...
A szűrőkondi közvetlenül a foglalat lábára forrasztva (100nF kerámia, 2x a 877-nél mert két helyen kap tápot), 10KOhm-os felhúzóellenállás az MCLR lábra, kontrasztpoti, mind ok.
És ahogy írom és mutatom 84a-val megy a led villogtatás (3-as kép), és a kiíratás is. Az angol az eredeti, a magyar már az enyém - 2-es, 1-es kép. 877-el is megy a fénysor, tehát a panel, PIC, oszcillátor jó. A szimulátoron mindkét típus azonosan fut le, kijelzéssel. A panelon viszont csak a 84-el. Lehet, hogy nem túl jó a program, de a 84-en megy. Próbálom tovább..
A cmd törlése a programból a panelon eredménytelen, a szimulátor csak a felső sort írja ki, azt is hibásan:
Nos akkor mégiscsak kezeli a kontroller sajátosságait a szimulátor. A cmd törlésével a temp került a PIR2 (a 7., 5., 2., 1. bit nem létezik, mindig 0) regiszterbe, de ezen a változón keresztül küldi a programod az adatokat az LCD -nek. Azt csinálja, amit vártam: Elrontja az adatokat...
Ha megfogadod a tanácsokat és - a cblock 0x00C -t kijavítod végre cblock 0x020 -ra, - a konfigurációs sor megadását kiegészíted az _LVP_OFF -fal, működni fog....
No, átírtam a programot, hogy ne a B portot, hanem a D-t használja, így nincs "érdekütközés".
A fordítás és feltöltés lefut, de kijelzés az LCD-n nincs. A szimulátor szerint ez is jó:
Hát, kivettem a cmd-t, átírtam a cblock-ot és kikapcsoltam az LVP-t is a konfigban.
Eredmény: szimulátor ok, nem ír be fals karaktereket, de a kijelző továbbra is kuka. Több ötletem nincs, elkezdem az időzítést piszkálni. Az az érzésem, ott a baj.
A hozzászólás módosítva: Márc 9, 2017
Az a szimulátor nem sok mindenre jó, mint ahogy Te is tapasztalod.
Köszi, próbálom.
De előre szólok, hogy sikítok, ha azzal is jó - és nem megy a kijlző
Az a probléma, hogy egy BASIC-re kifejlesztett IDE szimulátorát használja az MPLAB-ban írt programjához. Így szerintem csak saját magával szúr ki, mert sok funkciótól elesik. Példának okáért a program követéstől, amit gondolom az MPLAB szimulátorában is megtalálni. Én csak arra akartam rávilágítani, hogy ha assembly nyelven szeretne megtanulni programozni, akkor arra koncentráljon és használja az MPLAB IDE-t, ha BASIC-ben, akkor pedig ezt. Nem jó keverni a dolgokat, mert abból ilyen problémák származnak.
Ha újabb verziót használsz, akkor a c:\Documents and settings\"sajátnév"\AppData\Roaming\OshonSoft\PIC Simulator IDE\ helyen találod meg.
Ha régebbit, akkor a program telepítési mappájában. Vagy az oshonsoft.com címen.
Nem tudom miért lenne Basicra fejlesztve? A hex fájlt kell betallózni, azt futtatja. Hogy mivel hoztad létre nem mindegy?
Maga a szimulátor gépközeli környezet, munkaregiszterrel, gépi kódokkal, stb. Épp ezért csak egyszerűbb pgm-et lehet igazán követni (nekem), a bonyolultabb fordítmányok már nem láthatók át (vissza) se assembly-be, pláne nem Basic.re. Szerintem.. A másikat még nem volt időm nézni - de fogom.
Szia Hp41C
A másodszorra küldött fájlok közül én is lefordítottam az .ASM -et Mplab 8.9 el. Ugyan az a HEX lett min amit küldtél. Ezt beégetve már müködik a frekimérő. Na nem egyből lett jó. --Gerjedt az MB506 előosztó. Ezt sikerült megoldani. --Alacsony fr bemenetről átkapcsolva előosztós bemenetre és nagy bemenő jelszint esetén a kijelzőről eltünt minden. Ilyenkor leállt az oszcillátor egy rövid időre. Később hiába indult ujra, nem jelzett ki semmit. A hiba a tápellátásban volt. Ezekben az esetekben a +5V-on negatív és pozitív ugrások jelentek meg. 9V-os elemmel táplálva ezek megszüntek. Még a pontos 10 MHz-et kell beállítani h pontosan mérjen. Összefoglalva: Köszi a sgítséget a program átírásával. Minden elismerésem. ramok A hozzászólás módosítva: Márc 10, 2017
No, megy...
Kombináltam a te javaslatod a portcserével és lőn fényesség a kijelzőn! Valamiért a portB-vel nem megy, hiába az LVP_OFF. Átírva portD-re jó. Nem teljesen értem, de megy. A cmd maradt.
Erről jut eszembe a kérdés: az ICSP-n keresztüli felprogramozásnál hogy szokták megoldani, hogy az RB6/PGD RB7/PGC lábakon keresztül menjen a feltöltés, aztán a program viszont adat kimenetként (bemenetként) használja? Amúgy nem ez volt itt is gond? A kijelzőhöz csak az alsó 4-bit van használva RB0-3, és a RB6-7 szabad volt, de az RB3-is többfunkciós (LVP). Köszi az eddigieket |
Bejelentkezés
Hirdetés |