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   1144 / 1203
(#) _BiG_ válasza miki79 hozzászólására (») Dec 28, 2020 /
 
(#) miki79 válasza Bakman hozzászólására (») Dec 28, 2020 /
 
Ilyesmire gondoltam köszencs!
(#) miki79 válasza gyoran hozzászólására (») Dec 30, 2020 /
 
Szia!
Látom Te értesz a pic-khez!Az a probléma Én nem!De nagyon érdekelnek újabban.Nekem kínai a programozásuk de nem megtanúlhatatlan.
Hogyan lehet,kell megírni egy ilyen programot?Nem szükséges,hogy naplemente szerű legyen, elég ha 5-10 lépésben halványítja el az adott izzót kb.1 óra alatt. Tyúkoknak kellene hogy kitudjam tolni az aktív villágosságot mert akkor jobban tojnak.
Ajánlanál olyan programírót ami esetleg egy totál laikus is megtud írni ehhez hasonló progit anélkűl hogy programozási nyelvet kellene megtanulnia.És igyenes!
Kösz!
A hozzászólás módosítva: Dec 30, 2020
(#) Pali79 válasza miki79 hozzászólására (») Dec 30, 2020 /
 
Van bármilyen PIC-ed és programozód?
(#) miki79 válasza Pali79 hozzászólására (») Dec 30, 2020 /
 
Nincs!De úgy tudom házilag is lehet csinálni.Vagy ha megy,veszek.
A hozzászólás módosítva: Dec 30, 2020
(#) Pali79 válasza miki79 hozzászólására (») Dec 30, 2020 /
 
Szerintem nem éri meg programozót építeni, a kínai klónok is teljesen jók és olcsók.
(#) miki79 hozzászólása Dec 30, 2020 /
 
Ez a pic memoria címeit adja meg?Ezekde kell a word-okat,mnemonikokat be égetni?
A hozzászólás módosítva: Dec 30, 2020
(#) miki79 hozzászólása Dec 30, 2020 /
 
És ebből mit lehet megtudni?
(#) miki79 hozzászólása Dec 30, 2020 /
 
És ebből?
(#) Pali79 válasza miki79 hozzászólására (») Dec 30, 2020 /
 
(#) whalaky hozzászólása Jan 2, 2021 /
 
Szevaztok BUÉK!
Hogy jól kezdődjön az év. Az lenne a kéréssem/kérdésem hogy valakinek van tapasztalata MCC i2c ügyben?
PIC18F27Fj53-al kinlódok egy ideje de reménytelenül. Az i2c -t képtelen vagyok müködésre bírni.
Igaz egyenlőre csak proteussal próbálgaton, mert valós hardvertbe nem szeretnék beinvesztálni ha nem muszály, de már ez sem működik. amellett hogy elvileg mindent beállítottam.
Elképzelésem sincs hogy a proteus hibázik vagy az mcc, de hamarosan....
Az egyszeűség kedvéért az már csak az MCC i2c_simple_example programmal küzdök de kezd igen balesetveszélyessé válni (állítólag a hatodikról a parkolóba kieső számítógép nem egy életbiztosítás).
Ha ez valakinek segít, a környezet:
MPLABX 5.35 (32-bites) Proteus 8
Az i2c driver előző verziója (sajnos már nincs meg és már nem is letölthető) még működött, bár már nem emlékszem milyen pic-el. Hála a microchipnek ismét újabb i2c drivert csináltak. Sikerült agyonbonyolítaniuk így használhatatlan az erősen hiányos dokumentációnak és hiányos nyelvismeretem köszönhetően, bár eddig a goole forditóval elboldogultam amiv volt mit, de most ....
Minden segítséget megköszönnék.
(#) Pali79 válasza whalaky hozzászólására (») Jan 2, 2021 /
 
Szerintem, ha van valós célod ezzel a fejlesztéssel, ruházz be a hardverre! Én csak egyszer próbáltam a Proteusban szimulálni egy kis progit és amikor a szimulátorban nem működött az ami a valóságban igen, el is engedtem a dolgot. Még szerintem sokkal nagyobb sikerélmény ha valóban működik is, legyen az akár egy LED villogtató.
(#) whalaky válasza Pali79 hozzászólására (») Jan 2, 2021 /
 
Nos a led villogtatás az menne, de a cél az lenne hogy RTC, Hőmérő, eprom menjen i2c-n.
Más PIC-el (elökerestem 18F25K22) még tudtam szimulálni, jó is volt de az még a régi driverrel ment. Tapasztalat szerizésre mindenképpen jó volt, mert a másodperces LCD frissítést már nem tűri mert ahoz már lassú az i2c még 400 kHz-en is. Későb ha elindull ki lesz egészítve USB-vel és ethernettel, skori féle 2 vezetékes LCD vezérléssel (szintén működik proteusban) de ahoz már le kell gyártatni egy nyákot amihez nincs "kedvem" amíg a részfunkciók nem mőködnek.
Csak most tanácstalan vagyok hogy a proteus nem jó, a driver nem jó, de a buszon semmi tevékenység nincs. Szoval ha valaki tud valamit róla és hajlandó megosztani az sikat lendítene a dolgon.
Ugyam konkrét célom nincs, egyenlőre egy "demoboard" lenne amire késöbb lehet fejleszteni sok sok alfunkciót. Ezért kell viszonylag nagy pic.
A hozzászólás módosítva: Jan 2, 2021
(#) Pali79 válasza whalaky hozzászólására (») Jan 2, 2021 /
 
Nem így értettem. A LED villogtatást arra értettem, hogy nagyobb élmény élőben látni mint a szimulátorban. Egyébként egy I2C perifériát ki lehet próbálni egy breadboradon is, nem kell mindjárt nyákot gyártani.
(#) Bakman válasza Pali79 hozzászólására (») Jan 2, 2021 /
 
Fordított esetem is volt, amit az Errata oldott fel.
(#) whalaky válasza Pali79 hozzászólására (») Jan 2, 2021 /
 
Akkor mégegyszer.
A jelenség az hogy mostmár se a 18F27J53 se a 18F25K22 nem működik. A nemblokkoló szuperdriver úgy blokkolja mint a sicc mindkét pic esetében.
Lehet hogy a driver haszálatánal nem vagyok tisztában (sőt biztos).
Aztt hittem hogy az "agyondokumentált" driverhez azért van az example hogy legaláb legyen min elindulni, de ezekszerint tévedtem.
  1. void i2c_writeNBytes(i2c1_address_t address, void* data, size_t len)
  2. {
  3.     while(!I2C1_Open(address)); // sit here until we get the bus..
  4.     I2C1_SetBuffer(data,len);
  5.     I2C1_SetAddressNackCallback(NULL,NULL); //NACK polling?
  6.     I2C1_MasterWrite();
  7.     while(I2C1_BUSY == I2C1_Close()); // sit here until finished.
  8. }

és innen kezdve megáll a tudomány
A hozzászólás módosítva: Jan 2, 2021
(#) Bakman válasza whalaky hozzászólására (») Jan 2, 2021 /
 
Letölthető régebbi verzió is, már ha az megoldás a problémára: Bővebben: Link.
(#) whalaky válasza Bakman hozzászólására (») Jan 2, 2021 /
 
A régebbi verziót eddigi ismereteim suerint megszüntették, a PLIB-et pedig a fordítók nem támogatják. Megpróbálom elővarázsolni a régebbi MCC verziót, bár félő hogy nem lesz már meg vagy az IDE nem támogatja.
Az éjszakát még rászánom, aztán ..... Egy hónapja küzdök vele, ideje feladni és végleg elfeleteni az MPLAB-X hülyeségeit. Értem én hogy ipri felhasználásra készül, és a hobbisták és az amatőrök le vennak, csak elfelejtik hogy a mai hobbistákból lehetnek a jövő mérnökei, akik enny bevallott kudarc után elfelejtk a microchipet. Furcsa üzletpolitika.... (olvasgattam a microchip fórumokat, ismerik a hibákat...)
A hozzászólás módosítva: Jan 2, 2021
(#) Peet19 hozzászólása Jan 2, 2021 /
 
Sziasztok!

Mégegyszer B.U.É.K mindenkinek, de lenne egy gyors kérdésem.
Helyesen írtam az alábbi kódot?
  1. MOVLW   B'00000010'; Bitmaszk betöltése W-be
  2. XORWF   PORTC, 1        ; RC1 negálás

A célom az lenne hogy negálja a RC1-et, de csak azt. Attól tartok hogyha van még a port egyéb bitjein is magas szint, akkor azt is negálni fogja. Az RC1 -en villogtatni szeretnék egy ledet, de pl: az RC2 -n meg folyamatosan magas szintet szeretnék a kimeneten akkor ez nem fogja azt is negálni?

Előre is köszi a segítséget!
A hozzászólás módosítva: Jan 2, 2021
(#) Pali79 válasza Peet19 hozzászólására (») Jan 2, 2021 /
 
Igen jól írtad, a többi bitet nem bántja, de milyen PIC-re írod? Lehet van rá egyszerűbb megoldás is.
A hozzászólás módosítva: Jan 2, 2021
(#) Peet19 válasza Pali79 hozzászólására (») Jan 2, 2021 /
 
Köszi.
18F2550 -re.
A hozzászólás módosítva: Jan 2, 2021
(#) Pali79 válasza Peet19 hozzászólására (») Jan 2, 2021 /
 
Akkor ha csak egy bitet akarsz változtatni használhatod a BTG parancsot is. De ilyenkor nem a portot írjuk, hanem a LAT regisztert. Tehát a példádnál maradva BTG LATC,1 használhatod. Ez mindig pont az ellentétesre változtatja a bit értékét. Ez csak egy bitre van hatással. Ha több bitet is akarsz változtatni akkor jó az előző kód.
(#) Hp41C válasza Peet19 hozzászólására (») Jan 2, 2021 /
 
Valószínűleg nem csak az RC1 -et fogja negálni.

Jelige:
Idézet:
„PORT regisztert olvasunk és LAT regisztert írunk.”

Ha Read-Modify-Write műveletet végzünk valamely PORT regiszterrel nem várt mellékhatások léphetnek fel:
- Egy bemenetnek állított vagy túlterhelt lábhoz tartozó biten az ALU a bemenet értékével fog számolni a művelet végzése során,
- Egy analógnak beállított lábhoz tartozó biten pedig 0 -val.
Még az sem garantált, hogy a LAT regiszteren végrehajtott R-M-W művelet azt az eredményt adja, amire számítunk ugyanis egy analógnak beállított lábhoz tartozó LAT regiszter biten is 0-val fog számolni.
Az utóbbi esetben egy RAM kópiát kell használni a LAT regiszter helyett és a művelet elvégzése után a movff xx, LATx vagy movf xx,w és movwf LATx utasításokkal írni a LAT regisztert.

Pali79:
a btg paramétere fix, a program megírásakor rögzül, a xorwf paraméterét futás közben kiszámíott is lehet.
A hozzászólás módosítva: Jan 2, 2021
(#) Peet19 válasza Hp41C hozzászólására (») Jan 2, 2021 /
 
Igen, igazad van, köszi, ezt tudtam csak most egy kicsit bekeveredtem.

Pali79: értem, köszi. A BTG-t 18F alatti PIC nél is lehet használni? (12F, 16F)?
(#) Pali79 válasza Peet19 hozzászólására (») Jan 2, 2021 /
 
Sajnos a régebbi PIC-ek utasításkészlete nem tartalmazza ezt az utasítást (sem).
(#) Peet19 válasza Pali79 hozzászólására (») Jan 2, 2021 /
 
Akkor jól sejtettem, köszi.
(#) oregharcos hozzászólása Jan 2, 2021 /
 
Sziasztok!

Hogyan lehet megoldani, hogy ameddig a GP2-ön magas szint van, a GP4-en egy led villogna, jelezné, hogy megy a fűtés, vagy valami más.
A végén a GP5-ön jelezi, hogy lejárt az idő.

  1. //PIC12675
  2.     //Nyomógombra indúl.
  3.     //A GP2-ön 10mp-ig magas szint van.
  4.     //A GP4-en az üzem jelzés lenne.
  5.     //A GP5-ön villog amíg feszt kap.
  6.    
  7.      #define nyg GPIO.GP3
  8.  
  9.      void main()
  10.       {
  11.         GPIO = 0;
  12.         TRISIO = 0b00001000;
  13.         ANSEL = 0;
  14.  
  15.         while (1)
  16.           {
  17.             if(nyg != 1)
  18.               {
  19.                 GPIO = 0b00000100;
  20.                 Delay_ms (10000);
  21.                 //GPIO = 0b00010000;
  22.                 //Delay_ms (10000);
  23.  
  24.                 vilog:
  25.  
  26.                 GPIO = 0b00100000;
  27.                 Delay_ms (500);
  28.                 GPIO = 0b00000000;
  29.                 Delay_ms (500);
  30.                 GPIO = 0b00100000;
  31.                 Delay_ms (500);
  32.                 GPIO = 0b00000000;
  33.                 goto vilog;
  34.               }
  35.           }
  36.  
  37.  
  38. }

Köszönöm előre is a segítséget!
(#) Peet19 válasza oregharcos hozzászólására (») Jan 2, 2021 /
 
Hali!
Próbáld meg így váltogatni a kimenetet:
  1. if(GPIObits.GP2){
  2.         GPIObits.GP4 = ~GPIObits.GP4;
  3.     }

(nem próbáltam, de hátha jó )
Az if elé meg rakhatsz valami delay -t.
(#) Pali79 válasza oregharcos hozzászólására (») Jan 3, 2021 /
 
Milyen nyelven programozol?
(#) oregharcos válasza Pali79 hozzászólására (») Jan 3, 2021 /
 
Sziasztok!
Peet19. Köszönöm a segítséget! Este megpróbálom.
Szia Pali79! A programot mikroC PRO for PIC v:6.00-val készítettem.
Én is azon gondolkoztam, hogy if-utasitásba berakom, hogy amíg a GP2-ön magas szint van, addig a GP5-ön villogtatok egy ledet.
Következő: »»   1144 / 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