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   418 / 1210
(#) vicsys válasza roozsa hozzászólására (») Jún 1, 2013 /
 
Ahhoz még egy RC oszcillátor is megfelelne, de természetesen jó lesz kvarc is. A szoftvert meg gondolom Te írod.
(#) Hp41C válasza roozsa hozzászólására (») Jún 1, 2013 /
 
Nem érdemes ennyire lelassítani. Maradjon a MHz -es tartományban. A TMR2 ás CCP modul segítségével csinálj egy 1/1000 -leosztást (Fosc = 4MHz, CCP megszakítás 1 ms -enként), és programmal számolva hozz létre egy1s -enként ismétlődő jeltést. Ennek felhasználásával lehet a nyagyobb, véletlenszerűen induló időzítéseket megcsinálni. Rengeteg funkció belepakolható ebbe a kontrollerbe: távvezérlési lehetőség DCC -vel, uarttal, infrával stb.
(#) levaitamas hozzászólása Jún 1, 2013 /
 
Sziasztok!
PIC12F683-at szeretnék égetni, de az Ic-prog-ban nem találom ezt a típust. Tudtok ajánlani más "egyszerű", kezdőnek való programot?
(#) pjg válasza levaitamas hozzászólására (») Jún 1, 2013 /
 
Én Watt programját használom. Az tudja. WPB_F18_F16_F12_v1.32b
(#) levaitamas válasza pjg hozzászólására (») Jún 1, 2013 /
 
Utána nézek, köszönöm.
(#) Bell hozzászólása Jún 2, 2013 /
 
Sziasztok!
XC8 fordítóval 256 elemű konstans tömböt szeretnék létrehozni úgy, hogy a fordító számolja ki az értékeket.
A fordítót nem tudom rávenni sem függvények számítására, sem ciklus használatára.
Ezzel próbálkoztam:
  1. const unsigned int tomb[]=
  2. {
  3. (long)exp(1.044451,0),
  4. ..
  5. (long)exp(1.044451,255)
  6. };

Létezik erre egyszerű megoldás?
(#) Hp41C válasza Bell hozzászólására (») Jún 2, 2013 /
 
Szia!
16F -re vagy 18F -re fordítasz?
Az a baj, hogy a 256 elemű real int mérete 256 * 2 byte. A linker állományban gondoskodni kell ekkora egybefüggő területről. Csak 18F és Enhanced midrange kontrolleren van rá esély.

Ez a táblázat 15 db 1 -est, aztán 11 db 2 -est, majd 7 db 3 -ast fog tartalmazni ?
(#) mindegy hozzászólása Jún 2, 2013 /
 
Segítségre lenne szükségem.
Feladat: Van több állomás, az egyik a doboz allját adagolja a másik a tetőt a harmadik ezt a kettőt csavarja össze. Ha valamelyik lefogy akkor függetlenül egymástól utánaadagolja. Na most a programtervezés menetére vagyok kiváncsi nem pedig a megoldásra. Lényeg nekem hogy függetlenül egymástól csinálja ne várjanak egymásra. Köszönöm
(#) Bell válasza Hp41C hozzászólására (») Jún 3, 2013 /
 
A processzor PIC18F2321, hely az lenne.
De az alapműveleteken (+-*/) kívül nem tudok mást használni. Talán valamilyen beállítással van gond.
Pl. a
  1. const long x = exp(2,2);

sem működik. (too many function arguments és constant expression required)

A másik problémám ezzel kapcsolatban, hogy nem tudom hogyan lehet ciklust létrehozni makróval, ami a tömb elemeit létrehozza. Assembly-ben ilyesmire emlékszem:
  1. MACRO m1 n,f
  2. LOCAL i=0;
  3. while(i<p)
  4. addwf f,f
  5. i++;
  6. ENDM
(#) Bell válasza Hp41C hozzászólására (») Jún 3, 2013 /
 
Bocs, a kérdésre nem válaszoltam: igen.
(A táblázat 256 elemű, az értékek exponenciálisan növekednek. Az első 1, az utolsó pedig 65535. Minden elem értéke az előzőnek 1.044451 szerese.
Ismétlődések vannak benne, mert 16 lépéssel fentebb lesz mindig kétszeres, így az első 15, az mind 1.)
(#) Bell válasza mindegy hozzászólására (») Jún 3, 2013 /
 
Gondolom, ez valamilyen szalagon működik. Csak tipp: programmegszakítással oldanám meg és nem azt nézném, hogy valamelyik elfogy, hanem azt, hogy a feltöltési idő figyelembevételével kevés.
Nincs mit összecsavarni, ha valamelyik hiányzik.
(#) Llajti válasza Bell hozzászólására (») Jún 3, 2013 / 1
 
A "too many function arguments" azt jelenti, hogy túl sok paramétert adtál meg a függvénynek, jelen esetben kettőt: 2 és 2. Angolszász nyelvterületen a tizedeseket ponttal választják el egymástól, gondolom emiatt is lett a C-ben a függvényparaméter elválasztó vessző. Tehát exp(2.2); és valószínűleg a constant expression required-et is megoldja.
C-ben makrót a #define-nal lehet létrehozni, de szerintem itt nem makrózni kéne, egyszerűen csak írj egy ciklust. Amennyiben sokszor felhasználnád a ciklust, akkor pedig függvény. Ha mégis makróznál, akkor pl. #define add(a,b) (a+b) alakban teheted meg.
Kiegészítés: ha a const-ot flash-ben akarod tárolni, az mplab c18-ban akkor azt const rom-nak kellett megadni, nem tudom, xc8-ban is így kell-e, illetve az exp() rom-ra valószínűleg nem fog működni, mert hó jól látom, futásidőben működik.
(#) pajti2 hozzászólása Jún 3, 2013 /
 
Sziasztok,

Mplab / mplabx kezeléshez lenne szükségem tanácsra. Megnyitott projectben van egy #define az egyik headerben. Szeretném látni, hol van rá hivatkozás a projectben, hol / hány helyen van felhasználva az értéke. Van ilyen lehetőség akár mplab akár mplabX alatt?

Köszönöm
(#) Kisvé válasza pajti2 hozzászólására (») Jún 3, 2013 /
 
Igen van MPLAB X-ben. Jobb klikk a define-olt dologra és Find usage. Ezt mindennel meg lehet csinálni: változókkal, függvényekkel, headrekkel stb.
A hozzászólás módosítva: Jún 3, 2013
(#) Llajti válasza Llajti hozzászólására (») Jún 3, 2013 /
 
Közben elolvastam a többi hozzászólásod is
Ha nem ragaszkodsz a const tömbhöz, viszonylag könnyen abszolválható a dolog:
  1. long tomb[256]; //de lehet double is, vagy unsigned short, stb.
  2.  
  3. main
  4. {
  5.   int counter = 0;
  6.   double number = 1;,
  7.  
  8.   do
  9.   {
  10.     tomb[counter] = number;
  11.     number *= 1.044451;
  12.   }while(++counter < 256);
  13. }

Ha jól értettem, amit írtál, akkor a fenti kód elvileg azt csinálja, amit szeretnél, csak nem fordítás- hanem futásidőben. Fordításidőben valószínűleg nem lehet megcsinálni, de megcáfolhattok
A hozzászólás módosítva: Jún 3, 2013
(#) sherlock válasza pajti2 hozzászólására (») Jún 3, 2013 /
 
Ugyanakkor Control + Shift + F az egész projektben keres
(#) Bell válasza Llajti hozzászólására (») Jún 3, 2013 /
 
A PIC18F2321-ben 512 byte RAM van, így csak konstans tömb jöhet számításba.
Fix értékekkel - pl. excelből - létre tudom hozni, de mindezt az assemblernek is tudnia kéne.
Például a
  1. #define value(n) (float)pow(1.044451145,n)
  2. const unsigned int tomb[]={
  3. value(1),
  4. value(2),
  5. ...
  6. value(255)
  7. }

nem elegáns, de XC16-ban működik, XC8-ban nem.
A hozzászólás módosítva: Jún 3, 2013
(#) icserny válasza Bell hozzászólására (») Jún 3, 2013 /
 
XC8-ban van float?
(#) Bell válasza icserny hozzászólására (») Jún 3, 2013 /
 
Elfogadja a float-ot, double-t is.
(#) Bell válasza Hp41C hozzászólására (») Jún 3, 2013 /
 
A
  1. const unsigned int tomb[]={
  2. 1,
  3. 1,
  4. 1,
  5. ...
  6. 65535
  7. };

működik és excelből vágólappal átrakható.
De nem elegáns
(#) Bell válasza Llajti hozzászólására (») Jún 4, 2013 /
 
Köszönöm! Ezt elnéztem, mert a hatványozás nem exp(x,y), hanem pow(x,y)
(#) pajti2 hozzászólása Jún 4, 2013 /
 
Ugyan rs232 kérdés, de pic-relatív dolgot érint. Kellene csinálnom egy olyat, hogy rs232-ről táplálni egy pic-es áramkört, és még hajtani meg vissza irányban az rs232-t is. Ezzel kapcsolatban fontolgatom azt, hogy mennyi áramot lehet statikusan "lelopni" egy rs232-ről (ofc, nem optoelektronikusan leválasztott túloldal lesz).

Ha valaki még emlékszik olyan hatérértékekre, milyen áramokkal volt szokás egy JDM égetőt megterhelni statikusan, vagy van valahol egy ezt is érintő blog, hasznos segítség lenne.
(#) nedudgi válasza pajti2 hozzászólására (») Jún 4, 2013 /
 
Az RS232 valószínűleg max232-t használ. Ilyen áramkör nekem USB-s átalakítóval 20mA áramfelvétellel simán működik. A PIC a tápot a vételi védődiódáján keresztül kapja.
A hozzászólás módosítva: Jún 4, 2013
(#) Doky586 válasza nedudgi hozzászólására (») Jún 4, 2013 /
 
Adatlapot átböngészve más jobb ha nem számít ekkora áramra..
(#) pajti2 válasza Doky586 hozzászólására (») Jún 4, 2013 /
 
Legrosszabb esetben egy 3mA lehet szükséges. Filozom az alacsonyabbra szorításán, de vagy sikerül, vagy nem.
(#) Doky586 válasza pajti2 hozzászólására (») Jún 4, 2013 /
 
Idézet:
„hajtani meg vissza irányban az rs232-t is”

Ne csak a belső fogyasztással számolj. Ha 1lábat meg akarsz hajtani az eleve 1mA, de esetleg több is lehet. vonalanként.
(#) pajti2 válasza Doky586 hozzászólására (») Jún 4, 2013 /
 
Oké, ez egy kicsike magyarázatra szorul. Csak azért, mert kimenetre programozok egy lábat, és üresben hagyom utána (be sem kötöm), már egy egész mA ?
(#) Doky586 válasza pajti2 hozzászólására (») Jún 4, 2013 /
 
Nem a PIC hanem az RS232 csatlakozó lába!
Ha a mellékelthez hasonló táp-megoldásban gondolkododol.

- pl ha 3kohm-ot kell meghajtanod 4V-al rs232-at rx-data lábon az kapásból >1mA fogyasztás a PIC táplábán. (ha csak ttl jelszintel hajtod, nem szabványossal)
- tápot pedig előállítani olyan lábakról akarsz amik rövidzárban tudnak csak kiadni 7mA-t. (Adatlap pirossal jelölt részei.) Ha 4V jut a PIC-nek már örülhetsz.

Ha jól értettem a PIC egy RS232 vonalról kapná a vezérlést és a tápot, és RS232-n küldené vissza a visszajelzéseket. Ha valamit rosszul értettem szólj.
(#) pajti2 válasza Doky586 hozzászólására (») Jún 4, 2013 /
 
Talán ezért is találták ki az rs232 level shiftert. Hagyom a max232-t a fenébe.
(#) pajti2 hozzászólása Jún 4, 2013 /
 
Mplabx alap kérdés. Csinálok új projectet (File / New Project... / Microchip Embedded / Standalone Project), proci mx795, tool pickit3, compiler xc32, elnevezem a projectet, <finish>. Semmi source meg ilyesmi még nincs, de initializing után azonnal ami fogad:

Idézet:
„info: Configuration "XC32_PIC32MX795F512L" will build with toolchain "XC32" at "C:\Program Files (x86)\Microchip\xc32\v1.21\bin".
info: Configuration "XC32_PIC32MX460F512L" will build with toolchain "XC32" at "C:\Program Files (x86)\Microchip\xc32\v1.21\bin".
info: Configuration "XC32_PIC32MX360F512L" will build with toolchain "XC32" at "C:\Program Files (x86)\Microchip\xc32\v1.21\bin".
info: Configuration "XC32_PIC32MX110F016B" will build with toolchain "XC32" at "C:\Program Files (x86)\Microchip\xc32\v1.21\bin".
error: Configuration "C32_PIC32MX795F512L" builds with "C32", but no toolchains of that type are installed.
Errors have occurred while loading one or more configurations.
If a specific error is not shown above, this may happen when you import a project from another computer.
+ You can add language tools in Tools->Options embedded tab.
+ You can change which language tool to use in the project properties dialog.


error: Configuration "C32_PIC32MX795F512L" builds with "C32", but no toolchains of that type are installed.
Errors have occurred while loading one or more configurations.
If a specific error is not shown above, this may happen when you import a project from another computer.
+ You can add language tools in Tools->Options embedded tab.
+ You can change which language tool to use in the project properties dialog.


Miért keresgel mx795 helyett barmi mas procira? Miert akar c32-t hasznalni?
A hozzászólás módosítva: Jún 4, 2013
Következő: »»   418 / 1210
Bejelentkezés

Belépés

Hirdetés
XDT.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