Fórum témák
» Több friss téma |
Még éppen elég volt a láb. Az a A portból hagytam ki RA4-et az SLC SDA is szabadok, jumper-el terveztem a nyákra. 10k-os ellenállásokat raktam rá. Van 1 Pickit2 Clonom az látja az 24LC-t
Jobb lenne programból, de ha meglehet csinálni külön a rutinokat, és belőle a hex-t azt rátudnám tölteni.
Szervusz!
Köszönöm a hozzászólásod, magyarázatod! Részletesen leírtad, mi mitől függ. Valahol olvastam hasonló dolgokat, talán a PIC PID Library fórumban. Olyan mélységig biztosan nem kell mennem, az már szakdolgozat szint lenne szerintem. Magamat inkább PLC és robotika iránt érdeklődő gépésznek tartom. ![]() Még egyszer köszönöm Mindenki a hozzászólást, segítséget! Ha bajom van jövök és "hisztizek". De próbálkozásból és küzdésből tanul az ember.
Sziasztok!
Megint elakadtam, szeretnék segítséget kérni. 10 éve nem programoztam, régebben írtam olyan rutint amikor egy regiszter értékét növeltem aztán összehasonlítást csináltam és a kiértékelés során az eredménytól függően volt egy elágazás. Ez a rutin 20x be kéne billentse a PORTA0 át és a végén bekapcsolja a PORTB1 en lévő LED et majd kikapcsolja és kezdődik előlről. Nos, most próbálgatom és nem megy sehogy sem. Mi lehet a gond? Egy 16f877 el próbálkozom, az van próbapanelen.
A hozzászólás módosítva: Ápr 12, 2020
32. sorban hiba van, az "GOTO R" nek kellene legyen mert így nem törli a REF1 regisztert. Javítottam de így sem megy.
![]()
Szia!
A BANK macrók és a DELAY22 biztos jó ? Maga a működése, ill. nem túl rövid, hogy a felvillanást lásd ? Próbáld ki szimulátorral, nekem így próba nélkül jónak tűnt ez a részlet... !
A bank1-et nem veszi cimkének, így a sor elején?
A fordító kiad egy .lst filet is, ott ellenőrizheted.
A fórum motor jelenítette meg így a tabulátor miatt szerintem, nálam nincs a sor elején. Meg akkor fordításkor hibát dobna az MPLAB.
Rendben, utána nézek köszi. Nincs csak ez az egy F877 esem sajna, még 16F690, meg F628 és 648 van de azok ugye jóval kisebbek és nem csereszabatosak.
Minden jó, mert egy futófény programmal ha tesztelem ugyan ezt a hardvert ugyan ezekkel a késleltető rutinokkal és bank váltás macrókkal akkor működik, láthatóak a port billentések. Az INI ben van még pár dolog amit átállítok csak azt nem tettem be a példakódba. Pl az ADCON1 nél minden láb digitális.. stb. Nem értem miért nem megy. Még arra gondolok hogy a REF1 regiszter lehet másik program lapra esne? (PAGESEL1 ?) De ahhoz nagyon rövidke ez a program hogy átessen a másik lapra, és fordításkor hibát is jelezne. A REF1 lett utoljára deklarálva a 7 lefoglalt regiszter közül, de ha elsőnek deklarálom akkor se jó. Összesen 7 változót deklaráltam, "org 0x0c" től. Szerintem jó mert a teszt futófénynél is így múködik.
Helyesbítés:
cblock 0x0c . . . . . . . ENDC ;---------------- org 0x00 org 0x04 ; int korán van még... ![]()
Utána olvastam az általad említett BANKSEL makrónak. Ha jól értelmezem, akkor a banksel használatakor a bankváltásokra ugyanúgy ügyelnem kell, csak éppen arra nem kell odafigyelnem hogy a bankváltás melyik bankból melyik bankba történik mert ezt végzi el helyettem. Ez is nagy segítség mert így nem kell az adatlapot böngészni hogy melyik regiszter melyik bankban van, vagy éppen mindegy és nem is kell bankot váltanom mert bármelyik bankból elérhető (pl STATUS reg) ..stb. Jól értem?
0x0C-nél még a PIC regiszterei vannak, a szabad helyek 0x20-tól kezdődnek.
Ez a memória foglalás csak a 16C83, 16C84, 16F84, 16F84A esetén működik.
Sziasztok! Mivel C-nyelvvel eddig még nem foglalkoztam, most több időm van, a YouTube-on találtam jó oktatóvideókat. ITT Eddig 10-videó alapján készítettem programot, a Proteusban jól működnek. Most viszont a 11-filmnél nem boldogulok. Már több napja szenvedek vele, a C-compiiler kiakad, tehát nem csinál HEX-fájlt. Már tízszer átnéztem, hogy mi a baj, de nem találok különbséget a filmben levő kód és amit kiszedtem kód között. Minden ugyanaz mint a filmben, szofwer: microC PRO for PIC, ver.6.0.0. A PIC-ugyanaz és úgy konfiguráltam ahogy írva van Minden úgy csinálok mint Józsi /jedles/, nála működik, nálam sajnos nem.
Legyetek szívesek ránézni! Segítségeteket előre is köszönöm! A hozzászólás módosítva: Ápr 13, 2020
A 19. sorban paraméter nélküli függvényként van létrehozva az nygfigy(), te meg a 109. sorban paraméterrel szeretnéd meghívni.
A Delay_nyg önmagát hívja meg.
Jogos, egy F84 re írt asm et írtam át és benne hagytam ezt az értéket. Köszi a megoldást mindkettőtöknek!
Szia!
Volna egy kérdésem, az lcd-4bit.asm példakódoban (az LCD kezeléshez küldted) az érdekelne hogy az alábbi rutinban a 8 és 9. sorban a "goto $+1 " sornál a +előtt álló karakter az mi?. Mintha rémlene hogy a decimális számértéknek megfelelő sorral ugrik előre(+) vagy hátra(-)? Tehát az adott sor azt jelenti "ugorj egy sorral előre, azaz a következő sorra", aztán még egyszer ugyan ez. Akkor miért nem helyettesíthető ez esetben két NOP al ez a két sor? Nekem nekem ez az oldal a "bibliám" de erről nem találok ott semmit, vagy rossz helyen keresem... Tehát kérdésem, hogyan kell alkalmazni ezt a címzés módot?
A hozzászólás módosítva: Ápr 14, 2020
A Microchip Assembler nyelven a $ annak az utasításnak a címe, amit épen fordítás alatt van (az aktuális PC). A goto $+1 (12 és 14 bites szóhosszúságú kontrollereken) a következő utasításra ugrik, de pontosan kétszer annyi ideig tart, mint a nop. 16 bites szóhosszúságú kontrollereken goto $+2 (két szó, 2 ciklus) vagy bra $+2 (1 szó, 2 ciklus) utasításokat lehet használni.
Ötlet: egy címkét tenni a return utasítás elé, azt call -lal hívni: 1 utasítás 4 ciklus. A hozzászólás módosítva: Ápr 14, 2020
Anno ezt egy mintaprogramnak írtam, aminek nem csak az LCD vezérlése volt a cél, hanem más információk megértése is. Pld. a futásidő számítás, mert abban is vannak érdekességek, és néha fontos mi mennyi idő alatt fut le. Tehát nem a hatékonyság/rövidség volt az elsődleges. Tehát így kell rá tekinteni..
Nem kritikának szántam a kérdésemet, ez a kód is számomra egy etalon.
![]() A hozzászólás módosítva: Ápr 14, 2020
Szia!
Bocs, hogy beleszólok, de szerintem használd a szimulátort...Beállítod az órajeled frekvenciáját és hajszálpontosan megmondja, mennyi az annyi ! Kiszámolni sokszor nyűgös, mert a program erre megy vagy arra megy, de ha leszimulálod, akkor a választott irányodnak megfelelően adja az időértéket! Fontos dolgok: Watch, StopWatch, BreakPoint, Stimulus, ezeket nézd meg vele kapcsolatban!
Köszönöm az ötletet, akkor ideje a szimulátorral összebarátkoznom mert soha az életben nem használtam még... Ehhez elég a Relase - t Debug ra állítani? vagy van erre valami ikon a menüsorban? Tudom, nézzem meg. És gondolom van valami tutorial video is erről a youtub on... Újabb házi feladat.
![]() Idézet: anélkül is megy az MPLAB SIM.„Ehhez elég a Relase - t Debug ra állítani?” Milyen IDE-t használsz? Sima MPLAB ( nem X-es ![]() Ezután látsz majd újabb ikonokat ( majd rájössz, melyik mire jó, ha nem olvasol ![]() Használd utána az F7, F8 billentyűket ( persze fordítás után!). Rengeteg beállítása van, valóban olvasni, videókat nézni és kérdezni, próbálgatni ![]() Sok sikert, megéri az erőlködés ! szerk.: csatoltam két leírásomat egy kis segítségként ![]() A hozzászólás módosítva: Ápr 14, 2020
Ez így van, lehet használni a szimulátort, brake pontok lerakásával megadja az időket. persze a kavics frekit is kell közölni vele. Normális programban a fordítóval van kiszámítva az időzítés a freki alapján. (Mert az számolni is tud, majd konstansként deklarálja. De nem magától, hanem számodra, tőled.)
Az utasítás táblában ott van a végrehajtási ciklusszám. Könnyű elrontani (főleg ha számít), mert pld. egy elágazásnál nem mindegy melyik ág hajtódik végre. De kiszámolod, szimulátorban meg ellenőrzöd. Igen, a minimális időket kell tartani, hosszabb lehet. Adatátvitel kezelésénél ott a busy jelzés, csak mindenki lusta vele foglalkozni..
A régi "fapados" MPLAB Ver. 8.40000. Ez az X es eclipse kinézetű MPLAB nekem nem jön be.
![]() |
Bejelentkezés
Hirdetés |