Fórum témák
» Több friss téma |
Értem, köszönöm! Összebarátkozom a szimulátorral, eddig azt se tudtam hogy lehet előcsalni. Újabb feladat, de lassan felcsipegetek Tőletek (megint) annyit hogy ne csak ledeket et tudjak villogtatni. Régebben voltak "komolyabb" PIC es projectjeim is, PLL es adók (I2C - LMX2326 al), GPS, GSM..stb. De csak a 8 bites kontrollerekig jutottam, aztán közbeszólt a nagybetűs Élet. Egy kisebb laza agyvérzés után még az is csoda hogy egy év rehab után tudok már gépelni és kérdezni, forrasztgatni..stb. Sok dolog kiesett e miatt, ami már megvolt régebben. Meg eleve nem is vagyok már tinédzser korban, lasabban forog a megmaradt agyam, sorry
![]()
Ha "megeszi" a 10 éves projecteket is akkor lecserélem. De valamiért úgy emlékszem gondom volt a legfrissebb "hagyományos" MPLAB IDE verzióval ezért visszatettem a 8.40 et.
A hozzászólás módosítva: Ápr 14, 2020
Ha nem eszi meg, az inkább a fordítóprogram miatt van. Javaslom, hogy a beállításokat hagyd meg alapértelmezésben, sokkal kevesebb gondod lesz.
Sziasztok Benjami és Ktamas66! Köszönöm a segítségeket! Játszottam a paraméterekkel. Ha a 109. sorban nem adok meg paramétert, akkor a 32. sorban jelez hibát. Ha a 109. sorban adok paramétert, akkor ott jelez hibát. Bárhogy csinálom nem sikerül. Az assemblernél számomra átláthatóbb, hogy melyik cimkére kell ugratni a programot. Itt ezt nem értem, hogy miért ugrik a program valahova? Azt sem értem, hogy Jedlesnél ezzel a beállítással hibátlanul működik, nálam meg nem. Mit csináljak másként?
Köszönöm, hogy foglalkoztok vele?
Idézet: „Ha a 109. sorban adok paramétert, akkor ott jelez hibát.” Miután a nygfigy eljárás definíciójában (19.sor) nincs paraméter a zárójelek között
a fordító hibának veszi, ha paraméterrel hívod. A 109. sorban így hívod:
azaz átadsz a nygfigy eljárásnak paramétert. Ha a 2120 -at kitörlöd, a hívás és a definíció összeegyeztethető, nem ad rá hibát. Idézet: „Ha a 109. sorban nem adok meg paramétert, akkor a 32. sorban jelez hibát.” A 37. sorban hívsz egy eljárást
Az eljárás, amiben meghívod a Delay_nyg -t az maga a Delay_nyg eljárás. Mi történik egy eljárás meghívásánál: A paraméter(ek)et egy stack -ra másolja a program és call -lal meghívja az eljárást. A PIC16F877A stack -je csak 8 szintű, a paramétereknek sem áll rendelkezésre sok memória. Mi történik, ha egy ilyen eljárás önmagát hívja meg. Újból és újból a stack -re teszi a paramétert és újabb call -lal meghíja önmagát - rekurzív eljáráshívás lesz belőle. Ha nincs kilépési feltétel (márpedig itt nincs) a teljes memóriaterületet felülírja, betelíti a stack -et. Ennek elkerülése végett a microC nem engedi meg az ilyen rekurzív eljárás hívást a 16F széria kontrollerein. A 109 sorba helyére írt be:
A hozzászólás módosítva: Ápr 15, 2020
Üdv. Hp41C! Köszönöm a segítséget! Ki fogom próbálni, remélem, hogy sikerül!
Üdv. Hp41C! Köszönöm a magyarázatot! Igazad volt, mert a 37.sorban a Delay_ms helyett a Delay_nyg-ot adtam meg, ott van a for ciklusban az "int ido" változó, de én az idő helyett nyg-ot adtam meg. Igy már sikerült egy lépést tenni a C-ben! Nagyon köszönöm a segítséget!
Sziasztok!
Adott: PIC16F88. Belső oszcillátorról szeretném működtetni, ilyenkor ha alvó állapotba állítom, leállítja a belső oszcillátorát? Igazából a Timer1-el szeretnék kívülről érkező jelet számoltatni, majd túlcsorduláskor felébreszteni a processzort. Nem értem, hogy ilyenkor muszáj saját (külső) oszcillátort építeni a Timer1-nek hogy alvó állapotban működőképes maradjon, vagy járva marad a belső oszcillátor? A másik kérdésem az lenne, hogy a Watchdog oszcillátora (ha be van kapcsolva a Watchdog) minden esetben üzemel?
A belső oszcillátor leáll, Timer1 megszakításra felébred a kontroller. Watchdog működik alvás közben is, de mielőtt fellövöd a pizsamát, le tudod állítani a wdtcon regiszter segítségével.
A hozzászólás módosítva: Ápr 16, 2020
Üdvözlet az Uraknak!
Ez a PIC32MZ2048EFH nagyon magasan van hozzám képest, és a távolságot nagyon nehezemre esik csökkenteni. Nehezen, de eljutottam odáig, hogy működtessem a timer 1-et, és a Change Notification funkciót éldetektálós funkcióban, DE CSAK KÜLÖN-KÜLÖN (mire erre rájöttem, az is sok idő volt.) Ha már megemlítem (deklarálom) az Mplab X Ide-nek a másik ISR-t, a proci futás alatt megmakkan, olyannyira, hogy debug alatt a pickit3 jelzi, hogy megállt az egység. Nem tudom, mi lehet a gond, tudna valaki otletet adni. Koszi a figyelmet, sziasztok (Nem adhatom lejjebb, mert már egy rég óta szüneteltetett projectemet akarom befejezni, ahhoz meg ez kell. Terveztem és csináltam egy nagyon stabil futású, ámde pontatlan, maszív CNC-t. Elektronikusan akarom korrigálni az ideálistól való eltérő haladást. Ezt csak azért írtam le, hátha valakit érdekel.)
Köszönöm a gyors választ! Azt gondoltam, ha leáll az oszcillátor, a timer se tud számolni.
Kicsi zavart érzek... Ha a Timer1 a PIC-et is hajtó belső órajelről jár akkor természetesen az is leáll. A Timer1 külső órajelről tud járni alvó üzemmód alatt is. Ha a timer számlálója túlcsordul, felébreszti a PIC-et.
És nem árt T1CON regiszter T1SYNC bitjét 1-re állítani, hogy ne próbálja meg a timer léptetését az alvó módban nem létező processzor órajelhez szinkronizálni.
Sziasztok. Váltottam 16-ról 18-as PIC-re. van egykét utasitás ami más a 18-ban.
Elakadtam a STATUS regiszternél. BCF STATUS,C BTFSS STATUS,Z Ezeket szeretném a 18-ba berakni. Segítenétek? Köszönöm.
Ezeknek az utasításoknak működniük kell a 18F sorozat esetében is. Annyi a változás, hogy az adat memóriára hivatkozó utasításoknak van még egy paraméterük, ami azt határozza meg, hogy a bank (BSR) regiszter által meghatározott bankot vagy az ACCESS bankot használja a címzésnél.
Figyelmesen át kell nézni, hogy az egyes utasítások milyen jelzőbiteket állítanak a két széria kontrollerein.
Köszönöm. előttem volt 16-os 18-as adatlap de nem tudtam kihámozni.
volt abban minden SSPSTAT BC, BZ, De egyik sem működött. Köszönöm.
Azt sem árt megnézni, hogy nem kiváltható-e az adott utasítás. A STATUS Z és C bitjeinek vizsgálatát sokszor használják pl. egy léptett regiszter értékének figyelésére. A 18-as szériánál erre már megvannak a direkt parancsok is.
Idézet: Nem csoda... A SSPSTAT az SSP kommunikációs modulhoz van. Semmi köze a STATUS regiszterhez. „volt abban minden SSPSTAT BC, BZ,”
Igen ahoz kellene. De erre a BCF STATUS,C, ACCESS-re is hibát ír a forditó.
![]()
Tedd be ide a kódrészletet, hátha könnyebb lesz.
Megoldódott Köszönöm, most a bank váltásokkal kínlódok. De olvastam hogy az automatikus, tehát nem kell vele foglalkozni. Ha igaz.
Nem automatikus. elérhető a BSR által kiválasztott lap
vagy az ACCESS bank.
Indirekten ill. a movff utasítással a teljes adatterület címezhető. Az ACCESS bank a 0. Bank "eleje" és a 15. Bank "vége". A hatás a típustól függ, általában 0x00 - 0x5F a 0. bankból és 0xF60 - 0xFFF a 15. bankból. Vannak újabb 18F -ek, amelyeknek több bankjuk van. (ld. movffl)
Köszi. Majd próbálkozok. Merőben más egykét dolog meg utasítás, lesz mit tanulni ismét.
Az enyém 18F4520-as.
Nézz szét a honlapomon is, hátha segít valamit!
Sziasztok!
LCD vezérléssel kapcsolatban kérdezném, hogyan lehetne megoldani azt a problémát hogy hardveresen úgy kötöttem össze a kontrollert(16F877) az LCD(HD44780) vel hogy a PORTB alsó négy bitje vezérli az LCD felső 4 bitjét? Tehát a két nibble "keresztben van." PORTB alsó nibble vezérelné az LCD felső nibble ét. Hab a tortán hogy még ezen belül is sikerült kersztbe kötnöm mivel a PORTB legalsó bitje vezérli az LCD legfelső bitjét. Tehát teljes a káosz a fejemben. Mivel nem foglalkoztam még LCD vel nem figyeltem a tervezéskor, nem gondolván hogy ez később jelentősen (legalábbis nekem) megnehezíti majd a vezérlést. Jelenleg így van bekötve: PORTB0 - LCD_D7 PORTB1 - LCD_D6 PORTB2 - LCD_D5 PORTB3 - LCD_D4 Az inicializálás 8 bites részével nincs gondom, csak a portokra kell odafigyelni a "keresztbe kötés" miatt. De ez a maszkolásos dolog kifog rajtam. A maszkolás tulajdonképpen nem tesz mást mint hogy az éppen kimaszkolt nibble t 0000 ba állítja? proli007 től kapott oktató jellegű pelda kódjában így van megoldva a felső , alsó nibble küldése. Ha jól tudom van erre külön utasítás, gondolom azért van így a példakódban hogy szemléltesse a működését a félbájt küldésnek. Ha jól gondolom... Jelenleg így próbálom, a swapf ot én tettem bele, lévén hogy nálam a két nibble fel van cserélve. De nem biztos hogy ez így jó, sőőt..:
A hozzászólás módosítva: Ápr 21, 2020
Hali!
Nagyon csúnya lenne azt a pár fóliát elvágni, normális sorrendben bedrótozni? Valamelyik microchipes példában láttam(talán lcdblocking néven volt), hogy bármilyen biten lehetett bármi, de nyilván ez a sebességbe, kódméretbe beleszól.
Szia, ez egy általam vasalt demo board. Nem olyan vészes csak macerás mert pl. a PIC DIL tokozású és SMD ként van felforrasztva foglalat híján és alatta is mennek vezetősávok.... stb
A hozzászólás módosítva: Ápr 21, 2020
De lehet ez lesz, ha a kódot ennyirte megbonyolítja ahogy írod. Akkor gondolom arra gondolsz hogy a PORTB4 - 7 vezérelje az LCD D4 - D7 et. Jelenleg viszont a PORTB felső 4 bitje az EN és az RS (az RW fixen GND n van) , valamint a PB6 és 7 két egyéb bemenet, + a PGD- PGC ami tovább bonyolitja a helyzetet.
A hozzászólás módosítva: Ápr 21, 2020
|
Bejelentkezés
Hirdetés |