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   1146 / 1210
(#) vladcepes válasza vladcepes hozzászólására (») Jan 9, 2021 /
 
Kicseréltem ezeket,bele is égettem. De nem változott semmi ugyan úgy játssza mind a 15 programot.

5.jpg
    
(#) nedudgi válasza whalaky hozzászólására (») Jan 10, 2021 /
 
Van egy halvány emlékem, miszerint, ha a slave NAK választ adott a kommunikáció közepén, a driver elveszti a fonalat, és végtelen ciklusba kerül. Ezt valamelyik Errata, vagy Appnote leírásban említik is, vagy a Microchip fórumán olvastam? A megoldás az lehet, hogy minden feltételt vizsgálni kell.
(#) nedudgi válasza vladcepes hozzászólására (») Jan 10, 2021 /
 
Legközelebb megnézem, van még egy ötletem. De csak akkor jut rá idő, ha a mostani gondot letudtam.
(#) vladcepes válasza nedudgi hozzászólására (») Jan 10, 2021 /
 
Rendben! Ráér. Majd ha esetleg ide tennéd be,akkor dobj légyszi egy PÜ-et mert van amikor én sem vagyok itt sokáig. Köszi!
(#) glaci hozzászólása Jan 10, 2021 /
 
Sziaszok!
16F887-et programozok mikroc alatt és az lcd-re való írásra szóló utasítás fordíása után ez a figyelmeztetés íródott.
irp bit must be set manually for indirect access to variable
Utánnanézve a dolognak, olyat olvastam, hogy ezt a hibát a RAM túl sok igénybevétele okozza és kézi bank váltást kell csinálni (?), illetve van egy másik lehetőség, string konstanként kell tárolni a kiírandó karakter tömböt és a fehasználás előtt kell Ram-ba olvasni és akkor az ilyen hibaüzenet elkerülhető.
Kérdésem: hogy csinált e már valaki ilyet, ha igen akkor jó lenne ha el tudná magyarázni a dolog mibenlétét egy próbakód segítségével.
(#) Hp41C válasza glaci hozzászólására (») Jan 10, 2021 /
 
A 16F családban az utasítások a memória címének csak az alsó 7 bitjét, a FSR az alső 8 bitjét adja, de a memória 9 bites címzést használ. A direkt címzésnél a felső két bitet a STATUS regiszter RP1 és RP0 bitjei adják, indirekt címzésnél a legfelső bitet a STATUS regiszter IRP bitje adja.
Egy indirekten elérendő adatra vonatkozó művelet előtt nem csak az FSR regisztert kell beállítani, hanem az IRP bitet is. Ha az adat a 0. vagy 1. lapon van (RAM page 0, 1) akkor IRP -t 0-ra, ha a 2. vagy 3. lapon van (RAM page 2, 3) akkor IRP -t 1-re kell állítani.

Meg kell oldani azt is, hogy a megszakítási rutin a saját igényének megfelelően állítsa be az IRP bitet a STATUS mentése után. A visszaállítás a STATUS visszaállításával egyszerre megtörténik.
(#) zenetom válasza Hp41C hozzászólására (») Jan 10, 2021 /
 
Nem is értem miért terjedt el a 16F széria, ráadásul most hogy írod az indirekt címzésnél is mókázni kell a bankokkal, ez már nevetséges.
Jó, valójában értem, a C és magasabb szintű fordítók leveszik ezt a terhet az ember válláról (mármint nem indirekt címzés esetén). Csak hát így plusz egy felesleges művelet.
Persze, 18F esetén is az egyre több periféria miatt bankolgatni kell, de ott legalább nem olyan sűrűn, illetve vannak rá alternatív megoldások (pl. core regiszterek, melyek minden bankból elérhetők), "ablakos" memória elrendezés, ráadásul az indirekt címzéshez nem kell bankolgatni.
Na ezért se használtam a 10 év alatt soha 16F-et.
Jó mondjuk hacsak nem kell USB-t programozni, én asm-t használok.
(#) trickentrack hozzászólása Jan 10, 2021 /
 
Üdv!

Megépítettem az ebben a CIKKBEN található kapcsolást. Sikerült életem első pic programozása is. Azonban olyan problémám adódott, hogy az óra fizikailag visszefele jár. Ezt a programban lehetséges valahogyan egyszerűen orvosolni? Vagy szerintetek mi lenne a megfelelő megoldás.

Előre is köszönöm!
(#) Bakman válasza trickentrack hozzászólására (») Jan 10, 2021 /
 
A videó szerint jó irányba jár. Ha nálad nem, akkor a vezetékezés sorrendje lehet felcserélve a LED-ek és a NYÁK között.
(#) Hp41C válasza zenetom hozzászólására (») Jan 10, 2021 / 1
 
A 16F indirekt címzés kezelését egy "jó" C fordítónak tudnia kellene.
Ami a család hátránya, azt ki is lehet használni. Pl. dupla bufferes megoldásnál a két buffert úgy lefoglalni, hogy köztük csak az IRP értékében legyen különbség - ugyan az a kódrészlet futhat.
Volt élet magas szintű nyelv nélkül 512 utasítással és 64 byte RAM -mal is.

Ne kezdjük el megint...
A sima 16F -eket jóval előbb tervezték (16C83 -16C84), vezették gyártásba, mint ahogy a hozzájuk tartozó C fordítók elterjedtek volna. Az enhanced 16F1xx sorozatot már a C fordítók igényét figyelembe véve tervezték.
(#) glaci válasza glaci hozzászólására (») Jan 10, 2021 /
 
Találtam egy megoldást.

  1. const char part1[] = "some text";
  2. char msg[16]; //declare array
  3.  
  4. // copy const to ram string
  5. char * CopyConst2Ram(char * dest, const char * src){
  6.   char * d ;
  7.   d = dest;
  8.   for(;*dest++ = *src++;)
  9.     ;
  10.   return d;
  11. }
  12.  
  13. void main(){
  14. ...
  15.   Lcd_Out(1,1,CopyConst2Ram(msg,part1));
  16. ...
  17. }


Ennek alapján készítettem el saját kódot és hiba nélkül lefordult és a pic-ben is működik.
(#) Hp41C válasza glaci hozzászólására (») Jan 10, 2021 / 1
 
Miért ez a görcsös ragaszkodás a rejtélyes library -khoz? Miér nem írjuk meg azokat az eljárásokat, amiket nem találunk meg bennük? Mi a titok benne?

Semmi... Sőt még 16 byte RAM sem kell hozzá.

  1. void Lcd_Out_Program_Memory(char row, char column, const char * src)
  2. {
  3.     if (*src)
  4.     {
  5.          Lcd_Chr(row, column, *src++);
  6.          while(*src)
  7.          {
  8.               Lcd_Chr_Cp(*src++);
  9.          }
  10.     }
  11. }
A hozzászólás módosítva: Jan 10, 2021
(#) glaci válasza Hp41C hozzászólására (») Jan 11, 2021 /
 
Köszönöm szépen!
Bár egy kicsit csípősnek éreztem az indítást, ez is működik, "sőt még 16 byte RAM sem kell hozzá."
Tudod azért szoktam kérdezni és válaszokat várni, mert mint a fórum címe mutatja "PIC kezdőknek". Én is kezdő vagyok, sokat kell még tanulnom és szeretnék is, bár nem hivatásszerűen foglalkozok pic programozással, különösen 70 közelében.
Minden esetre még egyszer köszönöm szépen a segítséget.
(#) zoltan48 hozzászólása Jan 11, 2021 /
 
Üdvözöllek benneteket, olyan szakit keresek aki ért ehhez a programhoz MPLAB and HiTech C és ha szépen megkérem egy szervo motor picbe való felprogramozásához segitene leforditani a programot hex fájl formátummá. Előre is köszönöm

A fájl küldöm ha felvesszük egymással a kapcsolatot
(#) Hp41C válasza zoltan48 hozzászólására (») Jan 13, 2021 /
 
Milyen típushoz kellene? Melyik is az a forrás?
(#) slimcolt hozzászólása Jan 14, 2021 / 1
 
Sziasztok!

A PIC32MM-ben szeretném használni a 12bit-es ADC modult.
Arra vagyok kíváncsi, hogy jól számoltam e ki az acquisition time-ot és a throughput rate-et.
Tehát:

ADC input clock = FRC 8MHz
Mivel a min tAD = 250ns az adatlap szerint, ezért ADCS<7:0> = 3, tehát tAD = 375ns (2.66MHz)
tCONV = 16 x tAD = 6us
Az ADC adatlapja szerint a tartó-mintavevő áramkör kondenzátora (Csh) 40pF, a kapcsoló ellenállása 3K + 250 ohm interkonnekt ellenállás = 3.25K
Ennek az időállandója: 130ns
Ha ezt megszorzom 9-el, akkor 1.17us alatt töltődik fel a Csh a maximális kivezérlés (FS) -0.5LSB értékre.
Vagyis elvileg a minimális acquisition time 1.17us.
SAMC<4:0> = 5 esetén ez 1.875us lesz, ami elvileg elég még ha az FRC -5%-on megy.
Az acquisition time tehát 1.875us, ha a forrás impedanciája kicsi. Én műveleti erősítő + RC szűrővel hajtom meg így azzal nem lesz gond.
A throughput rate pedig így 127ksps-re adódik.

Ez így OK?
A hozzászólás módosítva: Jan 14, 2021
(#) wincso hozzászólása Jan 15, 2021 /
 
Sziasztok, mi lehet az oka, hogy pickit3 nem látja a pic18f__k__ szériás piceket?
Táp, gnd, mclr, pgd, pgc, vcap bekötve.
(#) nedudgi válasza wincso hozzászólására (») Jan 15, 2021 /
 
Egyet sem, vagy csak néhányat? A kutya az utolsó két számjegy alá lehet elásva.
A másik lehetőség, hogy a program az elején átállítja a programozó lábakat, nincs beiktatva késleltetés, hogy a programozó idomíthassa az alkatrészt.
(#) Bakman válasza wincso hozzászólására (») Jan 15, 2021 /
 
PICkit2 is csak módosított, illetve bővített "PK2DeviceFile.dat" fájllal látja a K család elemeit. Abban a családot többnyire kézzel kell kiválasztani, a kedvétől függ, hogy felismeri-e vagy sem. Ezek hog yműködnek PICkit3 esetén? Illetve milyen programmal kezeled a konkrét programozót?
A hozzászólás módosítva: Jan 15, 2021
(#) moltam hozzászólása Jan 15, 2021 /
 
Helo.
Van egy Pckit3 nevű kínai klónom és néhány PIC16F1615 ös kontrollerem. Korábban szórakoztam én 12f683 mal 18f4550 nel, csináltam néhány dolgot. Most visszatérnék részben a pichez mert van pár olyan periféria, amely semelyik másik gyártónál nincs. Milyen programmal tudnám őket programozni C ben és akár ha belekóstolnék ASM ben? Ha jólemlékszem nagyonrég az MPLAB X et használtam meg párhuzamos porti programozót.
A hozzászólás módosítva: Jan 15, 2021
(#) Pali79 válasza moltam hozzászólására (») Jan 15, 2021 /
 
Én a régi 12F, 16F de még a 18F szériához inkább az Mplab IDE utolsó verzióját használom, igaz csak assemblyben programozok.
(#) Elektro.on válasza wincso hozzászólására (») Jan 15, 2021 /
 
PK3 al és IPE programmal...

IPE.png
    
(#) Hp41C válasza moltam hozzászólására (») Jan 15, 2021 /
 
A PIC16F1615 elég új típus, így csak az XC8 újabb verziói képesek rá fordítani kódot. Ezek pedig nem kompatibilisek már a MpLab 8.xx -el.
A közelmúltban a Microchip kivezette az MpAsm -et, helyette a pic_as nevű assemblert tette a csomagba. Sokan elég szomorúak lettek a változtatástól...
(#) moltam válasza Hp41C hozzászólására (») Jan 15, 2021 /
 
Ha lemondanék a c ről mert xc8 ból a normális gondolom egy vagyon és sehol sem fogom megtalálni, akkor az ingyenesen letölthető mplab x el és a kínai pickit klónommal menne a dolog assemblyből? Gondolom a régi IDE esélytelen még ha asm et is használnék, pedig az jobb szerintem is mint ez a java izé, emlékszem alig bírta a gép annyi erőforrást kért.
A hozzászólás módosítva: Jan 15, 2021
(#) Elektro.on válasza moltam hozzászólására (») Jan 15, 2021 /
 
A Mikro Pascal és a MikroC elvileg tudja. Most a munkahelyi gépen nem tudom futtatni de a listában benne van.
2K fordítási határig ingyenes.

https://www.mikroe.com
(#) gyoran válasza moltam hozzászólására (») Jan 15, 2021 /
 
Hát, lehet, hogy hülyeségeket fogok beszélni, de
Kényszerűségből fel kellett lépjek a legújabb MPLAB X 5.45-re
Ott - szintén kényszerből - át kellett térjek a piac_as-ra, ehhez fel kellett tegyem az XC8-at és semmit nem fizettem. És még talán a Pic_AS-t is külön fel kellett tennem, de erre már nem emlékezem. Kezeli a PICKit 3-t (Orig). Viszont annyit kellett az MPLAB-bal görcsölnöm (invalid toolkit meg miegymás), hogy fogalmam sincs már mi volt a nyerő lépés. Viszont nem fizettem semmit.
Emlékeim szerint, az a C compiler, ami hozzáfordítja a háború és békét, az ingyenes, ha okosabb kell, az fizetős.
(#) moltam válasza gyoran hozzászólására (») Jan 15, 2021 /
 
Ott tartok hogy feltettem a legfrissebb MPLAB X et, a programozóm elvileg látja, az ipe dumált vele. Az ide viszont problémás, az xc8 on kívül más toolchain nem jelenik meg mikor új projektet csinálok, pedig fenn van a pic-as is vele. Hogy lehetne megoldani azt hogy lássa is? Semmi tallózás vagy ilyesmi lehetőséget nem látok. Szerk.: siker, options, embedded, build tools, add a megoldás ha valaki keresné.
A hozzászólás módosítva: Jan 15, 2021
(#) wincso válasza Bakman hozzászólására (») Jan 15, 2021 /
 
A programban benne van, pickit3, de azt írja rá hogy no device ha rádugom
(#) Lamprologus hozzászólása Jan 15, 2021 /
 
Jól értelmezem az adatlapot, hogy a PIC18F4550-nél nem lehet egyesével engedélyezni az analog bemeneteket? Csak AN0 tól indulva sorban, AN0, AN0+AN1, AN0+AN1+AN2 ... Tehát tehát nem
tudom használni pl. az AN3-at és az AN5-öt, miközben a többi láb digitális I/O marad?
(#) Hp41C válasza Lamprologus hozzászólására (») Jan 15, 2021 /
 
Tartományt lehet csak analógnak állítani. A tartomány mindig az AN0 -val kezdődik, és az választható, hogy melyik legyen az utolsó analóg bemenet. Az analógra állított lábat olvasva mindig 0 -t kapunk. Ha a hozzá tartozó TRISx bit 0, akkor a logikai kimenet be lesz kapcsolva, a lábon a digitális kimenet szintje lesz mérhető, ha más meghajtó nem csatlakozik rá. Az A/D is ezeket a digitális szinteket méri meg.
Azaz digitális bemenetnek nem, de kimenetnek lehet az analógra kapcsolt lábat használni. Egy apró bökkenő van: Az analóg módra állított bit a LATx regiszterben is mindig 0. A LATx regiszterről másolatot kell tartani a RAM -ban, azon végezni a műveleteket és csak kimásolni az új értéket.
Digitális bemenetet szintjét meg is lehet mérni és az eredmény alapján lehet döntést hozni, hogy magas vagy alacsony szint van a lábon.
Ezenkívül a RA0, RA1, RA2 és RA3 lábon levő szintet a komparátor egységgel (CM2:CM0 = 110) is lehet figyelni.
Következő: »»   1146 / 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