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   995 / 1203
(#) tiborati válasza Hp41C hozzászólására (») Nov 22, 2017 /
 
Megszakítás nincs. A főprogramból mikor a PAGE3 ra ugrok a PCLATH 3,4 bitjét beállítom, ami a verembe eltárolt címen is látszik. Amennyiben jól értem amit írtál, a PCLATH 0,1,2 bitjét is kezelnem kell a tömbbe ugrás előtt.
(#) Hp41C válasza tiborati hozzászólására (») Nov 22, 2017 /
 
Jól értetted. A 3. és 4. bitjét meg kell őrizned, ha a hívni kívánt táblázat a 3. program lapon van.
A hozzászólás módosítva: Nov 22, 2017
(#) tiborati válasza Hp41C hozzászólására (») Nov 22, 2017 /
 
Este kipróbálom, remélem sikerül, mert már régóta kínlódok vele.
(#) Bell válasza Tasznka hozzászólására (») Nov 22, 2017 /
 
Az összes gondom, hogy globális változót nem tudok deklarálni.
A változó definiálva lesz, de értéket nem kap.
(#) Bell válasza Tasznka hozzászólására (») Nov 22, 2017 /
 
Próbáltam így is, a változó definiálva van, de értéke nincs.
(#) Tasznka válasza Bell hozzászólására (») Nov 22, 2017 /
 
A var.c -ben ennyi legyen:
  1. unsigned char x1 = 2;
  2. unsigned char x2 = 3;

Az extern.h -ban:
  1. extern unsigned char x1;
  2. extern unsigned char x2;


HE-proba.c -ben:
  1. #include "extern.h"


Ennek így mennie kellene
Még annyi,hogy régebben mintha írtál volna olyasmit,hogy nagy tömbökkel dolgozol,ha így van akkor azt szedd ki ideiglenesen.
(#) Bell válasza Hp41C hozzászólására (») Nov 22, 2017 /
 
A c és a h fájlok a helyükön vannak, gond nélkül le is fordul, de az x1 és x2 vel futó for ciklusok egyike sem hajtódik végre, nem villog a LED.
Így gondolom, hogy az értékük nulla.
x3 lokális változó értéke 4, ezért 4 másodperc szünet után van 4 villanás.
Logikus, hogy az xc.h a legelejére kerül, de így sincs változás.
Az xc8 linker Runtime opciójában be van kapcsolva az Initialize data.
(#) Bell válasza Tasznka hozzászólására (») Nov 22, 2017 /
 
Így sincs változás.
Nincs tömb, mert egy mezei char-al sem működik.
A méretes globális konstans tömböt tárolja a memóriában, deklarálva van de inicializálva nincs.
Ezzel a PIC-el más dolgok sem működnek jól. Viszonylag "újnak" számít és a free fordítónak is lehetnek hibái.
Eldobni sajnálnám, ezért abban reménykedtem, hogy én rontok el valamit.
Mert az MPLABx-et eddig másra még nem használtam.
(#) sszasza hozzászólása Nov 22, 2017 /
 
Sziasztok,
tud valaki eladó PICKIT2-t? Nem klónt, eredetit. Más nem jó, céghez kellene, rá van állitva egy folyamat. Javítani már nem akarom, ezerszer volt, sok helyen van toldva.
Szentendre-Bp17kerület vonalon mozgok.
(#) Hp41C válasza Bell hozzászólására (») Nov 22, 2017 /
 
Sajnos, amint látom, a globális inicializált változókat egyszerűen nem tölti fel a XC8. A fórumon a legjobb ajánlás: Töltsük fel programból.
(#) f2f2 válasza Hp41C hozzászólására (») Nov 22, 2017 /
 
Akkor végre meg van miért kínlódott, de az XC8 nál nem kell beállítani még külön dolgokat neki a fordításhoz ?
A hozzászólás módosítva: Nov 22, 2017
(#) pajti2 válasza sszasza hozzászólására (») Nov 22, 2017 /
 
Privi ment, ilyesmi nem fórum téma.
(#) Hp41C válasza f2f2 hozzászólására (») Nov 22, 2017 /
 
Az a kérdés, mit és hol kellene még beállítani?
Linker: Initialize bepipálva.
Globális változó kezdőérték a deklarációnál. Nincs hibajelzés.
#pragma idata és #pragma udata -ra "Unknown pragma" figyelmeztetés.
A static nem változtat semmit sem.
Ha a kérdéses változó const, akkor a programba literális adatként (movlw paramérereként) kerül be.
A hozzászólás módosítva: Nov 22, 2017
(#) Bell válasza Hp41C hozzászólására (») Nov 22, 2017 /
 
Ha globálisan deklarálom, lokálisan definiálom, az sem jó, mert lokális változóként viselkedik. Máshol mincs értéke.
Biztos van erre valami egyszerű megoldás, talán le kéne foglalni a megfelelő memóriatarományt és hozzárendelni a változóhoz.
(#) kriszrap válasza Hp41C hozzászólására (») Nov 22, 2017 /
 
Idézet:
„Ha már több ilyen EEProm -ot kezelsz”

Nem vagyok mazochista
Örülök ha egyel boldogulok

Akkor a1,a2,a0 lábat akkor tesre kötöm ha csak egyet szeretnék kezelni?
A plédádba mindig 0xA1 vagy 0xA0 írtad ennek volt oka ?? Mert más példájába is láttam...
(#) f2f2 válasza Bell hozzászólására (») Nov 22, 2017 /
 
Akkor még meg lehetne csinálni

extern a helyére:
  1. extern void LET_1_uchar( unsigned char *adr, unsigned char bytee);
  2. extern void LET_2_uchar( unsigned char *adr, unsigned char bytee1, unsigned char bytee2);

deklarálás után vagy a main függvény elején

  1. LET_1_uchar((unsigned char*)x1 , 2);
  2. LET_1_uchar((unsigned char*)x2 , 3);


és a végén lenne a függvény

  1. void LET_1_uchar( unsigned char *adr, unsigned char bytee)
  2. {
  3.    adr[0]  = bytee;
  4. }
  5. void LET_2_uchar( unsigned char *adr, unsigned char bytee1, unsigned char bytee2)
  6. {
  7.    adr[0]  = bytee1;
  8.    adr[1]  = bytee2;
  9. }



vagy ezt lehetne static függvénynek is
vagy nem voidosan hanem int esen és } előtt return 0;
A hozzászólás módosítva: Nov 22, 2017
(#) Hp41C válasza kriszrap hozzászólására (») Nov 22, 2017 /
 
Idézet:
„Akkor a1,a2,a0 lábat akkor tesre kötöm ha csak egyet szeretnék kezelni?”

Ha az a1,a2,a0 lábat akkor tesre kötöd, akkor annak az egynek 0xA0 - 0xA1 lesz a címe.
Idézet:
„A plédádba mindig 0xA1 vagy 0xA0 írtad ennek volt oka ?? Mert más példájába is láttam...”

Az írás/olvasás bit az eszközcím alsó bitje.
Ha küldesz neki adatot, az eszközcím alsó bitje 0, ha olvasol belőle az eszközcím alsó bitje 1.
(#) Hp41C válasza Bell hozzászólására (») Nov 22, 2017 /
 
Globálisan deklarálod kezdőérték nélkül, a main függvény elején értéket adsz neki...
(#) Bell válasza Hp41C hozzászólására (») Nov 22, 2017 /
 
Az előbbi megállapításom nem igaz, elnéztem valamit:
Idézet:
„Ha globálisan deklarálom, lokálisan definiálom, az sem jó, mert lokális változóként viselkedik. Máshol nincs értéke.”

Tehát úgy működik, ahogyan írtad.
Köszönöm a segítséget!
A hozzászólás módosítva: Nov 22, 2017
(#) Bell válasza f2f2 hozzászólására (») Nov 22, 2017 /
 
Az extern-el valamiért nem sikerült megoldani, de ha globálisan deklarálom, lokálisan definiálom, akkor működik.
Kicsit szokatlan így, de majd valahogy megpróbálom külön fájlba rakni az adatokat.
Köszönöm a segítséged!
(#) just_the_bek válasza Pali79 hozzászólására (») Nov 22, 2017 /
 
Köszönöm!
(#) tiborati válasza Hp41C hozzászólására (») Nov 22, 2017 /
 
Megoldódott, köszönöm a segítséget.
(#) kriszrap hozzászólása Nov 23, 2017 /
 
Ezt a librayt használnám :Bővebben: Link

Kérdésem az lenne még hogy hol adom meg azt hogy melyik lábon van az eszköz vagy mindegyik SDA SCL lábon kiküldi az adatokat??

Inkább leírom hogy hogy értelmeztem a dolgokat hát ha tévedek:

Device code ahogy nézem eppromoknál 1010 bin vagy is hexa 0xA
2 írok utánna írás ha 1 akkor olvasás.

"Acknowledge Bit" ebbe nem vagyok biztos mire jó de szerintem a byte sorozat végét jelzi.

Jól gondolom??
(#) pajti2 hozzászólása Nov 23, 2017 /
 
Tudom, itt egy kicsit off, de találkozott bárki bárhol beépíthető rádioaktív sugárzás mérő szenzorral?
(#) Hp41C válasza pajti2 hozzászólására (») Nov 23, 2017 /
 
Geiger-Müller cső.
(#) Hp41C válasza kriszrap hozzászólására (») Nov 23, 2017 /
 
Ha az EEpromod A2, A1, A0 lábát Vss -re kötötted, akkor a Device code 10100000 bin vagy is hexa 0xA0 íráskor és 10100001 bin vagy is hexa 0xA1 olvasáskor.

A linkelt könyvtár az MSSI1 modult használja. Az adatlapon kellene találnod SDA1, SCL1 kivezetést. Az is előfordulhat, hogy remap -pelhető lábakon van. Ebben az esetben a lábat az MSSI1 modulhoz kell map -penli mégpedig kimenetként is és bemenetként is.
A hozzászólás módosítva: Nov 23, 2017
(#) icserny válasza pajti2 hozzászólására (») Nov 23, 2017 /
 
Mármint milyen sugárzás? α, β,γ, X, neutrino stb.?
A hozzászólás módosítva: Nov 23, 2017
(#) kriszrap válasza Hp41C hozzászólására (») Nov 23, 2017 /
 
A picemnek van sda1 scl1 laba . Akkor gondolom arra kossem majd az eppromot
(#) Bell válasza Hp41C hozzászólására (») Nov 23, 2017 /
 
Konstans tömbnél - amire nekem kellene - viszont nem működik.
Azt sajnos nem lehet futási időben létrehozni.
(#) eSDi válasza pajti2 hozzászólására (») Nov 23, 2017 /
 
Még nem láttam, de ha nem sürgős és nem lényeges a pontosság, akkor valamilyen fotodiódával is össze lehet hozni egyet. Egy régi Elektor újságban láttam a megvalósítását. Jövő héten elő tudom keresni, mert éjszakás leszek és bent van melóhelyen (ez a nappalos hét elég káosz, leülni sincs sok időm). Csak szólj majd, mert elfelejtem!
Következő: »»   995 / 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