Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Úgy van, hogy ha egy bemenetnek állított láb állapotát akarod olvasni, akkor azt a PORT regiszterben teheted meg. Ha viszont írni akarsz egy lábra, vagy az egész portra, akkor a hozzá tartozó LAT regisztert kell használnod.
Tehát ha egy feltételt írsz egy láb állapotától függően, akkor így írod:
Viszont egy lábat így állítasz be:
Értem. Még új vagyok és mint még sok mindent ezt sem tudtam eddig. Köszönöm
A probléma megoldódott. A triseket elrontottam. Miután kijavítottam hibátlanul ment. Köszönöm a segítségeket.
Valaki el tudná magyarázni, hogy lehetne egy kvarc kristályt rákötni a pic-re? (16F887) Próbálkoztam sokféleképpen, de nem jött össze. Érdekes módon az érintéseimet számolja Ha hozzáérek a kondenzátorhoz, akkor beindul az órajel termelés. Szóval valamit rosszul köthettem, vagy a kondenzátor értéke nem jó. A kvarc 3,2768 MHz-s, a kondenzátor 47 pF.
Inkább 22pF kondenzátorok kellenének.
A bekötést meg az adatlapban a Figure 4-3 rajzon találod.
Még valami, amire rájöttem, igaz csak egy kis szívás árán. Lehet hogy a többségnek tök természetes, csak nekem nem volt.
Ha egy kimeneti pinre egy bitwise AND vagy OR (vagy bármi más) eredményét szeretnénk kitenni, akkor a bitet mindig a 0. helyre kell előtte shiftelni. Tehát ez NEM működik:
Így működne csak:
De ez esetben meg felesleges az AND-elés, elég ha a döntő bitet a 0. helyre shifteljük! Így:
Sikeres programozást mindenkinek!
Azért nem működik, mert egy lábra nem írhatsz ki 8-at. A fordító megnézi az oda beírt érték utolsó bitjét, és attól függően ki vagy bekapcsolja a lábat. De ilyeneket nem illik csinálni - függetlenül attól, hogy a C megengedi - mert elég átláthatatlan a kód tőle. Inkább írd ezt:
Bár ezt a módszert a C18 fordító elég érdekesen fordítja asm-be. A legjobb asm kódot ekkor produkálta:
A túl sok shiftelés sem az igazi egyébként, főleg az ilyen
Köszönöm a választ. Biztos ez volt a gond akkor, és én a kezemmel sütöttem ki a 47 pF-et, ezért indult be akkor Olyat sajnos vennem kell, majd holnap..
Sziasztok.
Szoftverből van rá mód hogy a pic-et reseteljem? Az egyik ötletem ez lenne hogy az MCLR lábat lehúzni földre, de sajna akkor változtatni kéne a nyákon ami már készen van. Valami egyéb megoldás létezik erre? István PIC: 18f4550
Végre kegyeg a másodpercre pontos órám! Még csak binárisan, mivel kijelzőm az nincs.
Gratula!
Hogyan sikerült az oszcit életre kelteni végül?
Grat!
Hogy csináltad? Én is próbálkoztam órával, de egy idő után mindig kiderült, h nem pontos. Mostanában nincs időm vele foglalkozni a suli miatt. Ha lesz, akkor inkább RTC-vel szeretnék próbálkozni.
Jól csináltam mindent eddig is, csak rossz értékű kondenzátorokat raktam be. Most két 12 pF-es üzemel.
Ez még nem tudom mennyire pontos, de a másodperceket látszólag jól számolja. gyengus: Rákötöttem az oszcit, de ez már le van írva az előző oldalon, hogy kell. Az asm-ben átírtam _INTRC_OSC_NOCLKOUT --> _LP_OSC-re. A számoláshoz a Timer0-t használtam, mivel le tudja osztani a frekvenciát (prescaler). 1:32 leosztás az 1 Hz, de én 1:16-ot használtam egy villogó led miatt, ami a kettőspont szerepét tölti be. Aztán megírtam a programot, és megy szépen Menne, ha lenne kijelzőm.
én a pic kristályát használtam, lehet azért csúszott el idővel
Hát.. Én azt nem bírtam beüzemelni. De úgy hallottam, hogy akiknek sikerült, azoknak se volt pontos. Egy 32,768-as kristály 27 Ft, 2 db 12 pF-es kondenzátor együtt 6 Ft. Szerintem érdemes rá beruházni
Megint kifogtam voltam egy szilikonos chipet ?!!!
Tudtok pic18f258nál olyan hibáról, hogy a 200h alatti tartományban bármilyen movf vagy addwf PCL nem hajtódik végre vagy rossz helyre ugrik? Más picekkel működik, 258ból meg nincs másik darabom kipróbálni.
Sziasztok kezdo vagyok a PICekben de erdekelnek,es szeretnem tudni,hogy mi is az az ICD2?Gondolom valami programozassal kapcsolatos de nem tudom hogy mi is.Segitsegeteket kernem
Az ICD2 egy komplex, fejlesztő és programozó eszköz.
Arra szolgál, hogy a PIC-be beégesd a programot, s utána ugyan ezzel az eszközzel tudod tesztelni is a szoftvert. Végeredményben egy céláramkörön belüli programozó-fejlesztő eszközként lehetne felfogni leginkább.
Nézz utána az errata-ban, van-e valami erről. De az addwf PCL eleve körültekintést igényel, mutathatnál a kódodból részletet, ami nem úgy működik, mint ahogy elvárod.
Idézet: „The Program Counter (PC) is 13 bits wide. The low byte comes from the PCL register, which is a readable and writable register. The high byte (PC<12:8>) is not directly readable or writable and comes from PCLATH.” Ez 16F887, de gondolom a tied is így működik. Van erre egy példaprogramom, ha kell.
A 16F és a 18F ilyen téren eltérnek valamelyest, nem jó az egyikre írt program a másikon.
Nem olyan rég volt a terminal forumon erről szó, megpróbálom megkeresni.
Na megtaláltam, itt volt róla szó: Link
Az errata-ban nem találtam semmit ezzel kapcsolatban, a kódodban van a jó eséllyel a hiba. Idézet: „Jól csináltam mindent eddig is, csak rossz értékű kondenzátorokat raktam be.” Elég furcsa megközelítése annak a ténynek, hogy hibás értékű kondit használtál, ami miatt nem működött az áramköröd! Na mindegy, lénye, hogy most jó!
Köszi, de mint irtam, 2455ben és 452ben is működik ugyanaz a kód.
22pF ~= 47 pF nem? Nem. Mostmár én is tudom
Köszönöm szépen,sokat segitett,most már értem,ha jól fogtam fel,nem kell egy külön teszt áramkört is épiteni,hanem,ez 2 az egyben.Jó dolog
Így van. A kész (cél-) áramkörben csak a szükséges kivezetéseket kell kivezetni (ICSP), és azokon keresztül programozható. De ezt bármelyik programozó tudja. Az ICD2 annyiban több, hogy képes futtatni is a beégetett programot a céláramkörben, tesztelés céljából. (Tehát nem kell minden alkalommal kivenni-betenni a PIC-et.)
Idézet: „Az ICD2 annyiban több, hogy képes futtatni is a beégetett programot a céláramkörben, tesztelés céljából. (Tehát nem kell minden alkalommal kivenni-betenni a PIC-et.)” Hát konkrétan nem ennyivel több az ICD2, mert ezt mindegyik rendes programozó tudja. Az ICD2 annyival több, hogy a céláramkörben lehet léptetni vele utasításonként a programot, közben figyelni a belső regiszterek tartalmát, adott esetben módosítani is lehet azokat, stb.
Így van, csak nem akartam nagyon belemászni a kérdező lelki világába...
Azért köszönöm szépen az értékes kiegészítést! |
Bejelentkezés
Hirdetés |