Fórum témák
» Több friss téma |
A2 A1 A0 láb igazából mit csinál mert sok helyen testre van húzva másik kérdésem meg decibálisan is meg adhatom a címeket??
Nem tudom pontosan mi modon tárolja de egysorba hány db érték fér el??? Idézet: „A2 A1 A0 láb igazából mit csinál mert sok helyen testre van húzva” Ezen lábak felhasználásával egy I2C buszon max. 8 db memória eszköz kezelhető egyszerre. Az egy buszon kezelt azonos eszközöknél egyedi A2, A1, A0 értékeket kell alkalmazni. Idézet: „decimálisan is meg adhatom a címeket” Ugyan minden fordító (C, Pascal, Basic) képes a hexadecimális számok kezelésére, de csak most és csak Neked: 0xA0 decimálisan 160, 0xA1 decimálisan 161, 0xA2 decimálisan 162, 0xA3 decimálisan 163, ... 0xAF decimálisan 175. 0xA decimálisan 10, 0xA7 ezek szerint 10 * 16 + 7 = 167 Idézet: „Nem tudom pontosan mi módon tárolja de egy sorban hány db érték fér el” Nem tudom pontosan, mit értesz sor alatt. Tegyük fel, van egy 25 byte -os struktúrád és ebből szeretnél sokat egymás után tárolni az EEProm -ban. A 0 sorszámú struktúra a 0 címen, az 1 sorszámú a 25 címen kezdődik. A cím tehát <sorszám> * <strukra_méret> A hozzászólás módosítva: Nov 21, 2017
Ha androidos mobilod van, töltsd le a Play áruházból a Hex Bin Dec Calkulator nevű programot.
Egyszerre van képernyőn a három típus, és bármelyikben írsz, rögtön látod a másik kettőt is.
Rendben nagyából kezdem megérteni.
Idézet: „8 db memória eszköz kezelhető egyszerre” 8db ugyan ilyen eszköz??? Eppromoknal decimálisan 0 tolkezdödnek a cimzések??
Néztem a fájlokat az egyikben _ jelet írj még utána a define sorában. (var.c _TPvar_ legyen)
Az xc.h mindegyikben be kell írnod? A main.c ben ha kiveszed az x1,x2 sort lefordítható maga ez a c file ? (kivenni extern unsigned char x1,x2 ![]() Én anno más C ben foglalkoztam de ott a linkernél már az .o fájlokat kellett kijelölni nem C fájlokat és azt elsőnek megjelölni, amiben a main függvény van. Linker parancs a már lefordított .o fájlokra. De itt van sok szakember és senki nem segít, hogy kell több fájlból egyre fordítani. Bár a linkernél is sok paramétert kellett beállítanom nem tudom itt PIC nél is. Tehát a var.c main.c lefordítható e hiba nélkül külön? Aztán menj tovább.
Ha az extern unsigned char x1,x2 sort kiveszem, nem fordul le együtt.
A var.c külön csak úgy fordul le, ha kiegészítem egy üres void main(void){}-al. A main.c külön csak úgy fordul le, ha x1, x2-t definiálom. Nagyon köszönöm az eddigi segítséged! Remélem találok használható infót, vagy akad valaki, aki járatos az MPLABX részletkérdéseiben. De az is lehet, hogy nem jó helyen vetettem fel ezt a kérdést. A hozzászólás módosítva: Nov 21, 2017
Sziasztok, Segítségeteket kérem a lenti programrészlettel kapcsolatban. Az LCD kezelését áthelyeztem a PAGE3 ra ( PIC16F877A) és azóta nem működik, és nem igazán értem az okát. A probléma akkor van amikor a dt táblázatból olvasná ki az adatokat. Az ugrás előtt a Call ztasítás a verembe beteszi a visszatérés címét, de amikor az " ADDWF PCL,F" végrehajtódik a W-be nem töltődik be a dt értéke és kiugrik innen a PCL által mutatott utasítás sorra, nem pedig a veremből töltődik vissza. Már mindennel próbálkoztam amit hibának gondoltam de nem sikerült megoldani. Van valami ötlet?
Idézet: „A var.c külön csak úgy fordul le, ha kiegészítem egy üres void main(void){}-al.” Lehet hogy a fordítás előtti beállításában át kell állítani valamit, hogy ez nem fő program, hogy main nélkül elfogadja. pld csak függvények Idézet: „A main.c külön csak úgy fordul le, ha x1, x2-t definiálom.” Ha az extern.h betöltődne, akkor ezen nem hibázna le, biztos betöltődik ? jó helyen van ? var.c hiba: #ifndef _TPvar_ #define _TPvar; helyesen #define _TPvar_; erre értettem Biztos vannak itt beleolvasó profik is csak nem mindenki problémájára válaszolnak. Egy izgalmas női névvel kellene ugyanezt megkérdezni. ![]()
Nem néztem nagyon vissza,az egészet,de az utolsónál nem csak
a gond,de szerintem még a ; se kellene Idézet: „Szintaktikailag a # a sor első karaktere kell hogy legyen, az ilyen sorokat nem zárhatjuk pontosvesszővel, és minden sorban csak egy #define állhat. Mivel ezek a leírások az előfordítónak szólnak” ![]() ![]() A _TPvar_ -t természetesen kijavítottam. Másik típussal még nem próbáltam, mert nincs kéznél. Hiba nélkül lefordul, így a változók - úgy tűnik - rendben vannak. Az XC8 linker beállítások közt van lehetőség a változók inicializálását ki/be kapcsolgatni, ami a szimulátorban működik, de a hardverben hatástalan.
Kössz tényleg nem kell ; ok
én máson álltam meg
Dobd fel az egész progidat,hátha úgy hamarabb meglesz a megoldás.
extern et betölti és lefordítja úgy érted
akkor ami a TPvar.c ben van az a main.c az elején #include "TPvar.c" akkor hányat villog ?
Tasznka, valóban célszerű feltenni az összes fájl.
A processzor PIC18F25K40, mellékeltem a c és h fájlokat.
#include "var.c" -vel is lefordul, de nincs változás.
Amikor ISCP módon PIC et programozunk és kódvédett, akkor tulajdonképpen
mikor veszítjük el a program anyagot ? Az ERASE hatására vagy a program újraírásánál is? Ha órajelpontosan megfelelő ponton csak addig engednénk megfelelő külső feltételeket, amikor a config CP bitje törlődik alapra és más munkafázisnál órajel_pontosan lehetetlen feltételeket biztosítanánk magának a törlésnek, de a tudata a feladatok elvégzésének megmaradjon, akkor lenne esély egy hibás portú PIC újra cseréjéhez ? Mint írtátok a Vdd szintje kérdéses a törlésnél. Csak mint kezdő kérdés
Csak 1 gyors kérdés? Csak annyit szeretnél,hogy máshonnan deklarált változót használjon a main-ben? ...csak mert eléggé érdekes a megközelítésed
![]()
Mi van ha sok üres utasítással eltolod a programot hogy a memcímen később kezdődjön a hasznos munka. Csak be tudsz írni próbából az elejére semmit mondó utasításokat amiből bármennyi lehet. Úgy emlékszek én is eltoltam NOP kkal 32 byteot talán.
Vagy tedd fel a lefordított fájlt vagy a hex fájlt. visszaküldöm én ennyit hagytam ki :020000040000FA :1000000000000000000000000000000000000000F0 :1000100000000000000000000000000000000000E0 :100020000F01D389D39BD38D9B919B939B959B97DA 2 sort vagy állítsd be hogy ne az elejére fordítsa 0020 ra vagy többre A hozzászólás módosítva: Nov 21, 2017
Ha jól tudom,amikor le van védve,akkor bármit is szeretnél változtatni,akkor előbb felülírja a progit,és a végén állítja be a védelmeket(config-ot).Így nem lehet csak úgy megszakítani,hogy kilője a védelmet...Bár annyira nem mentem bele ennek a részleteibe.
A lényeget nem értetted. Amit nem kérek ott legyen a törlésnek és írásnak nem megfelelő állapot. Más Vdd stb, Akár órajelfázisonkénti külön értékű Vdd Persze akkor kondenzátor nem maradhat esetleg speciálisan vezérelhető Vdd szolgálattevő alkalmazása a Pickit után.
A hozzászólás módosítva: Nov 21, 2017
bár nem tudtam leszimulálni,mert csak 16,32-es fordítóim vannak ![]() itt duplán megy az externezés,és szerintem azt nem szereti ![]()
Sziasztok!
Kezdő PIC-es vagyok és egy olyan kérdésem lenne, ami szerintem ide vág a témához, ezért nem írtam ki új kérdést. Egy barátom megrendelte nekem a linkben található programozó szettet. Illetve van nekem otthon PIC 16F886-os kontrollerem. Ilyet használunk a suliban, csak az előadás most éppen szünetel., én pedig szeretnék elkezdeni otthon gyakorolni. Továbbá vannak elektronikai cuccaim (raszter, kondik, LED-ek ellenállások, IC-k,stb...). Igazából csak a programozáshoz való felszerelés hiányzott. A kérdésem az lenne, szükséges-e ehhez még hardver szinten beszereznem valami mást, vagy ezzel a szettel már tudom programozni a 16F886-osomat? Link: https://www.hestore.hu/prod_10033203.html A válaszokat előre is köszönöm! ![]()
Egy PICKIT 2 vagy 3 fog kelleni, de abból sem muszáj az ilyen drágát megvenni.
Igen, egy I2C buszon, ha kedved tartja, 8 darab ugyan ilyen EEProm -ot (24FC512) is kezelhetsz. Ezenkívül más eszköz is lehet még ugyan azon a buszon.
Idézet: „Eppromoknal decimálisan 0 tolkezdödnek a cimzések?” Igen. Az eszközön belüli cím mindig 0x0000. Ha már több ilyen EEProm -ot kezelsz, akkor a rendszerbeli címek a következően alakulnak:
Mivel az írás/olvasás vezérlőbit a készülékcím legalsó bitje, így egy 64k -s EEProm kétszer akkora, 128k -s területet "foglal" le.
Az addwf PLC,f utasítás csak a PC alsó 8 bitjét módosítja, még átvitel sincs a 8. bitre. Ahhoz, hogy az ilyen fajta kiszámított ugrás jól működjön az addwf PLC,f előtt a PCLATH regisztert is fel kell tölteni a kívánt értékkel - figyelembe véve az esetleg keletkező átvitelt is.
Van-e megszakítás a programodban? Ha van: Mented-e a PCLATH értékét a megszakítási rutin belépésévél? Beállítod-e a PCLATH értékét a 0. program lapra a kiszolgáló rutin első ugrása/eljárás hívása előtt? Visszaállítod-e a PCLATH mentett értékét a kiszolgál rutin utolsó ugrása és a visszatérés között?
Igaz, hogy csak MpLab 8.92 és XC8 1.42 -beli tapasztalat (ami sajnos nem ismeri18F25k40 -et) :
A projectben a forrás állományok (Source files) közé fel kell venni minden .C állományt. A projectben a include állományok (Include files) közé fel kell venni minden .H állományt. A cfg.h -ban felhasznált szimbólumok még nem ismertek a fordító számára. Az xc.h beállítja a kiválasztott kontroller -t.
A sorrendet cseréld meg:
Átírtam a cfg.c -t 18F25K50 -re, arra a kontrollerre ezekután az XC8 V1.42 lefordítja a projectet. A hozzászólás módosítva: Nov 22, 2017
|
Bejelentkezés
Hirdetés |