Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   994 / 1203
(#) pajti2 válasza Pali79 hozzászólására (») Nov 21, 2017 /
 
A pic32-eseké meg 4ezer+

Kérdezhetsz nyugodtan, arra van az egész topic
(#) Pali79 válasza pajti2 hozzászólására (») Nov 21, 2017 /
 
Nem jó, mert nem látom ha puskázol!
(#) kriszrap válasza Hp41C hozzászólására (») Nov 21, 2017 /
 
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???
(#) Hp41C válasza kriszrap hozzászólására (») Nov 21, 2017 /
 
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
(#) sonajkniz válasza kriszrap hozzászólására (») Nov 21, 2017 / 1
 
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.
(#) kriszrap válasza Hp41C hozzászólására (») Nov 21, 2017 /
 
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??
(#) f2f2 válasza Bell hozzászólására (») Nov 21, 2017 /
 
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.
(#) Bell válasza Hp41C hozzászólására (») Nov 21, 2017 /
 
Az benne van
(#) Bell válasza f2f2 hozzászólására (») Nov 21, 2017 /
 
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
(#) tiborati hozzászólása 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?

org1800.txt
    
(#) f2f2 válasza Bell hozzászólására (») Nov 21, 2017 /
 
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.
(#) Tasznka válasza f2f2 hozzászólására (») Nov 21, 2017 /
 
Nem néztem nagyon vissza,az egészet,de az utolsónál nem csak
  1. #ifndef _TPvar_
  2. #define _TPvar;
  3. helyesen
  4. #define _TPvar_;

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”
(#) Bell válasza f2f2 hozzászólására (») Nov 21, 2017 /
 
, de az is lehet, hogy másik topikban kellett volna keresgélni.
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.
(#) f2f2 válasza Tasznka hozzászólására (») Nov 21, 2017 /
 
Kössz tényleg nem kell ; ok
én máson álltam meg
(#) Tasznka válasza Bell hozzászólására (») Nov 21, 2017 /
 
Dobd fel az egész progidat,hátha úgy hamarabb meglesz a megoldás.
(#) f2f2 válasza Bell hozzászólására (») Nov 21, 2017 /
 
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 ?
(#) Bell válasza f2f2 hozzászólására (») Nov 21, 2017 /
 
Tasznka, valóban célszerű feltenni az összes fájl.
A processzor PIC18F25K40, mellékeltem a c és h fájlokat.
(#) Bell válasza f2f2 hozzászólására (») Nov 21, 2017 /
 
#include "var.c" -vel is lefordul, de nincs változás.
(#) f2f2 hozzászólása Nov 21, 2017 /
 
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
(#) Tasznka válasza Bell hozzászólására (») Nov 21, 2017 /
 
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
(#) f2f2 válasza Bell hozzászólására (») Nov 21, 2017 /
 
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
(#) Tasznka válasza f2f2 hozzászólására (») 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.
(#) f2f2 válasza Tasznka hozzászólására (») Nov 21, 2017 /
 
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
(#) freeridre válasza Pali79 hozzászólására (») Nov 21, 2017 /
 
C-ben, és Mplab-ot használunk.
(#) Tasznka válasza Bell hozzászólására (») Nov 21, 2017 /
 
  1. void main(void)
  2. {
  3.     extern unsigned char x1, x2;  <-- ezt a sort töröld ki,és próba :)
  4.     unsigned char i, x3;
  5.     x3=4;
  6.     OSCFRQ = 0b0000011;  // 8MHz

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
(#) just_the_bek hozzászólása Nov 22, 2017 /
 
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!
(#) Pali79 válasza just_the_bek hozzászólására (») Nov 22, 2017 / 1
 
Egy PICKIT 2 vagy 3 fog kelleni, de abból sem muszáj az ilyen drágát megvenni.
(#) Hp41C válasza kriszrap hozzászólására (») Nov 22, 2017 /
 
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:
  1. Sorszám,A2,A1,A0,  Eszközcím,   Eszközön belüli kezdőcím, Rendszerbeli címtaromány
  2. 0.          ,  0,  0,  0,    0xA0       ,    0x0000                           ,  0x00000-0x0FFFF
  3. 1.          ,  0,  0,  1,    0xA2       ,    0x0000                           ,  0x20000-0x2FFFF
  4. 2.          ,  0,  1,  0,    0xA4       ,    0x0000                           ,  0x40000-0x4FFFF
  5. ....
  6. 6.          ,  1,  1,  0,    0xAC       ,    0x0000                           ,  0xC0000-0xCFFFF
  7. 7.          ,  1,  1,  1,    0xAE       ,    0x0000                           ,  0xE0000-0xEFFFF

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.
(#) Hp41C válasza tiborati hozzászólására (») Nov 22, 2017 / 1
 
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?
(#) Hp41C válasza Bell hozzászólására (») Nov 22, 2017 /
 
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.
  1. #include "cfg.h"
  2. #include <xc.h>

A sorrendet cseréld meg:
  1. #include <xc.h>
  2. #include "cfg.h"

Á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
Következő: »»   994 / 1203
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem