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   613 / 1210
(#) benjami válasza zlanczky hozzászólására (») Jan 2, 2015 /
 
Na jó, az I/O részlegen a 42 meg az 50.oldalon találod meg a megoldást.
A hozzászólás módosítva: Jan 2, 2015
(#) zlanczky válasza benjami hozzászólására (») Jan 2, 2015 /
 
Szívesen elolvasom az "I/O részleget", de nem tudom, ezzel mire akarsz utalni.
Én elismerem, hogy kezdő, sőt alulinformált vagyok, de azért kérek segítséget, mert magamtól nem találtam a megoldást.
Az A/D megnézés javaslatot sem értem, mert nem akarok ezen esetben A/D konverziót indítani.
Az A/D kikapcsolását szerintem megtettem.
(#) benjami válasza zlanczky hozzászólására (») Jan 2, 2015 / 1
 
Nem tetted meg az A/D kikapcsolását. A TRIS regiszterekkel az adott láb adatirányát állítod be, az ADCON-t meg akkor kell használnod ha A/D átalakítást akarsz csinálni. Az ANSEL/ANSELH--val lehet beállítani hogy egy láb analóg bemenet vagy digitális I/O legyen. Azért nem mondtam meg rögtön a megoldást, mert meg kell tanulnod adatlapot olvasni.
(#) zlanczky válasza benjami hozzászólására (») Jan 2, 2015 /
 
Köszönöm, ez volt a megoldás. És megtaláltam az IO részleget is, a megoldás leírását a 42 és az 50. oldalon.
(#) kissi válasza Hp41C hozzászólására (») Jan 2, 2015 /
 
Ez se rossz online:
Bővebben: Link
(#) killbill válasza don_peter hozzászólására (») Jan 2, 2015 /
 
Ezzel a makroval inicializalsz egy megfelelo valtozot. Valoszinuleg strukturat.

struct xxx_t valtozo = SETUP_MESSAGES_CONTENT;

Ennek csak akkor van ertelme, ha ismered az adott strukturat.
(#) don_peter válasza killbill hozzászólására (») Jan 3, 2015 /
 
Ez véleményed szerint elfér egy struktúrában?
Gondolok itt a különálló 0x00-ákra.
Ebből a definícióból csak a hosszabb sorok az értékes adatok, ezeket az adatsorokat egymás után kell elküldenem, így a külön álló 0x00-ák nem lehetnek közöttük..
Esetleg egy példát tudnál nekem írni?
(Az adott struktúrát ismerem és mindig ugyan olyan vagy is konstans lesz)
A hozzászólás módosítva: Jan 3, 2015
(#) killbill válasza don_peter hozzászólására (») Jan 3, 2015 / 1
 
Idézet:
„Ez véleményed szerint elfér egy struktúrában?”
Teljes mertekben:
  1. struct packet_t {
  2.   char   dummy;
  3.   char   data[8];
  4. };
  5.  
  6. struct xxx_t {
  7.     struct packet_t  left;
  8.     struct packet_t  right;
  9. } xxx = SETUP_MESSAGES_CONTENT;

De ugyanezt leirhatod maskepp is, csak az nem szep:
  1. struct xxx_t {
  2.   struct {
  3.     char   dummy;
  4.     char   data[8];
  5.  } left;
  6.  struct {
  7.    char   dummy;
  8.    char   data[8];
  9.  } rihgt;
  10. } xxx  = SETUP_MESSAGES_CONTENT;

De ugyanez az inicializator jo lehet egy struktura tombhoz is:
  1. struct xxx_t {
  2.     char a;
  3.     char b[8];
  4. } valami[] = SETUP_MESSAGES_CONTENT;
A hozzászólás módosítva: Jan 3, 2015
(#) don_peter válasza killbill hozzászólására (») Jan 3, 2015 /
 
Köszönöm szépen, ebből már ki tudok indulni..
Annyit had kérdezzek meg, hogy az elnevezés végén mi az a "_t" jelzés?
(#) benjami válasza don_peter hozzászólására (») Jan 3, 2015 /
 
A példában az "xxx_t" a struktúra típusa, az "xxx" meg a "valami[]" tömb pedig a példányosítása. A típus megadást szokták T végződéssel megadni, hogy meg lehessen különböztetni a példányosítástól. Ha simán létrehozol egy karakter típusú változót,
  1. char c;
akkor a char a típus, a c pedig a belőle létrehozott példány aminek már értéket tudsz adni.
Megjegyzem a példában a második tömbnek csak 7 eleme volt, ezért killbill példájából csak a második húzható rá változtatás nélkül, de right.data tömb méretét 7-re kell cserélni.
(#) killbill válasza benjami hozzászólására (») Jan 3, 2015 /
 
Szerintem az "xxx" meg a "valami" a valtozo neve. Ez a peldanyositas honnan jon? Ilyen a C-ben regen nem volt. Ezt deklaracionak neveztek.
Az _t a UNIX-bol jon, ott szokas a tiposokat igy elnevezni.
Idézet:
„Megjegyzem a példában a második tömbnek csak 7 eleme volt, ezért killbill példájából csak a második húzható rá változtatás nélkül, de right.data tömb méretét 7-re kell cserélni.”
Ez nem igy van, mert egy tomb eseteben (de egy struktura eseteben is) a nem inicializalt elemek nullaval lesznek feltoltve.
A hozzászólás módosítva: Jan 3, 2015
(#) benjami válasza killbill hozzászólására (») Jan 3, 2015 /
 
Jogos, a példányosítás az objektumorientált részből jött. Maradjunk a deklarációnál.
(#) don_peter válasza killbill hozzászólására (») Jan 3, 2015 /
 
Köszönöm szépen a kifejtést.
Végül a 3. megoldást választottam a rugalmassága miatt.
  1. struct xxx_t {
  2.         char a;
  3.         char b[8];
  4.     } valami[] = SETUP_MESSAGES_CONTENT;


Összesen 9 sorozat van amelyek byte-onként 32 byte-os kódsort fognak tárolni.
A hozzászólás módosítva: Jan 3, 2015
(#) icserny válasza killbill hozzászólására (») Jan 3, 2015 /
 
A fix szélességű változótípusoknál a _t végződés állítólag a C99 szabványból jön (stdint.h definiál int8_t, uint8_t, int16_t, uint16_t ... stb. típusokat). Bővebben: Link

A _t végződés használata - szintén állítólag - saját típusdefiníciókban POSIX környezetben ellenjavallott, mert ott a _t végződés fenntartott. Bővebben: Link
(#) vicsys hozzászólása Jan 3, 2015 / 3
 
Elkészült egy újabb epizód az oktató videókból:
Bővebben: Link
Remélem tetszeni fog. (A folytatása következik...)
(#) killbill válasza icserny hozzászólására (») Jan 3, 2015 /
 
Idézet:
„A _t végződés használata - szintén állítólag - saját típusdefiníciókban POSIX környezetben ellenjavallott, mert ott a _t végződés fenntartott.”
Igen, ami azt erositi meg, hogy a UNIX-bol jon. Nyilvan azert ellenjavallott, mert time_t es sok tarsa definialva van a kulonbozo header-ekben. Szerencsere ez mikrokontroller programozasban nem okoz gondot.
(#) Bakman hozzászólása Jan 3, 2015 /
 
PIC18F2423
A Microchip oldalán csak egy kivonatos adatlapot találtam, ami a 12 bites ADC-n kívül szinte semmi érdemi információt nem tartalmaz. Igaz, éppen emiatt vetettem rá szemet, de azért érdekelne még pár dolog. Van valahol valamilyen közös adatlap, amiről nem tudok?
A hozzászólás módosítva: Jan 3, 2015
(#) Hp41C válasza Bakman hozzászólására (») Jan 3, 2015 /
 
Rögtön a 3. oldalon a keretben:
Idézet:
„This document is supplemented by the “PIC18F2420/2520/4420/4520 Data Sheet” (DS39631). See Section 1.0 “Device Overview”.”
A hozzászólás módosítva: Jan 3, 2015
(#) Bakman válasza Hp41C hozzászólására (») Jan 3, 2015 /
 
Kár, hogy nem szúrta ki a szemem. A végén kerestem ilyen megjegyzést... Köszi!
(#) nedudgi válasza Bakman hozzászólására (») Jan 3, 2015 /
 
(#) mark.budai válasza vicsys hozzászólására (») Jan 4, 2015 /
 
Tudom, hogy foglalkozol mással is, követem a "munkásságodat" itt az oldalon. Ezért írtam, hogy gondolom nincs idő a kurzust folytatni, vagy a videókat nyomni töménytelen mennyiségben. Én sem tanulok programozást (egy elektronikai középiskolában, végzős vagyok, de a négy év alatt szó sem esett a programozásról). Igazából nem egy bonyolult dolog, csak jópár dologgal tisztában kell lenni, anélkül nem megy. Mint írtam, már ezért a pár fejezetért is hálás vagyok, mert anélkül még most sem tudnám, mi fán terem a mikrovezérlő programozás.
Hp41C, köszönöm a könyvet, le is töltöm, majd olvasom.
(#) vicsys válasza mark.budai hozzászólására (») Jan 4, 2015 /
 
Az a könyv, tényleg jó. Érdemes lesz a kezed ügyében tartani, mert szerintem majd menet közben többször belelapozol. (Az új videót már láttad?)
Köszi a visszajelzést! Jó tudni, hogy nem csak a magam szórakoztatására dolgozok ennyit...
(#) edison14 hozzászólása Jan 4, 2015 /
 
Sziasztok!

PIC18-as mikrovezérlőn egy teljes LCD vezérlő rutint átraktam az 1-es lapra. Ahol a főprogramban használok valamit az LCD rutinból ott használtam a pagesel-t a lapváltáshoz, de amikor fordítottam a programot akkor olyan figyelmeztetést dobott ki hogy ennél a mikorvezérlőnél nem szükséges a lap vagy bankváltás így azokat a kódokat nem fordította bele a programba.

Miután kivettem az összes lapozást és az LCD rutint is visszatettem az eredeti helyére a program működött, de amikor megnéztem a program memóriát, az LCD rutin fele átlógott az 1. lapra. A főprogramban használok olyan rutinokat amik az 1. lapon vannak és működnek is. Akkor nem értem miért van ez a lapváltás ha egyszer használni sem kell?
(#) kapcsrajz válasza vicsys hozzászólására (») Jan 4, 2015 /
 
Szia !

Én is köszönöm a videókat, és az oldaladon lévő "C" kurzust. Szerintem nem csak a magad szórakoztatására készíted a videókat ! Aki most ismerkedik vele, az rengeteget tud így tanulni. Várom majd a folytatást.
(#) benjami válasza edison14 hozzászólására (») Jan 4, 2015 /
 
Láttál a chip adatlapján lapokat? Nem is láthattál, mert nincs (vagy felfoghatjuk úgy is, hogy a teljes programmemória egyetlen lapon van).
(#) killbill válasza mark.budai hozzászólására (») Jan 4, 2015 /
 
Idézet:
„Igazából nem egy bonyolult dolog, csak jópár dologgal tisztában kell lenni, anélkül nem megy.”
Ebbol a kijelentesedbol arra kovetkeztetek, hogy meg mindig nem tudod, hogy mi fan terem a programozoas. Az a jopar dolog, az azert nem keves. Bit, byte, memoria, stack, binaris szamok, aritmetika, stb... Es ez meg csak az alapok egy resze, hol van meg a programozas maga.
(#) don_peter válasza vicsys hozzászólására (») Jan 4, 2015 /
 
Ha előbb lettek volna ilyen videók, fenébe is
Nagyon jó...
Pár észrevétel, hogy ne legyen félrevezető a dolog..
Elkezdted felírnia lábak számait és a lábak jobb szó híján neveit.
Ez félreérthető is lehet hiszen a PIC típusát nem adtad meg.
Gondolom nem minden PIC-nek egyforma a lábkiosztása.
Ilyen eseteknél a PIC típusát is ad meg, hogy az adatlapból visszaellenőrizhető legyen az amit mondasz, így elősegítve a tanulást és az adatlap használatát..

Ezek már csak szőrszálhasogatások és csak nézőpont kérdése:
És még egy dolog, a CSS-ben sok esetben előre vannak definiálva a portok állapotának állításai, így egy-egy beállítás pofon egyszerű.
De ha valaki nem ezt a fordítót használja, akkor annak ezek gondot jelenthetnek. (nekem is probléma volt, persze hamar rájöttem, de akkor is)
pl.: ki és bemenetek beállításai, portok alacsony vagy magas szintre való állításai ...stb


Ez a kézzel rajzolós kapcsolás zseniális ötlet volt.. + pontot ér...
(#) Hp41C válasza edison14 hozzászólására (») Jan 4, 2015 /
 
A pagesel makro egészen másra készült. A 16F -eken a call és a goto utasítás kódja nem tartalmazza a cím felső 2 bitjét, az a PCLATH regiszterből veszi át az ugrás végrehajtásakor. A 18F goto és call utasítása 4 byte -os és tartalmazza a cím összes bitjét.

A kiszámíott ugráskor (movwf PCL) a címszámláló a PCLATU : PCLATH : WREG értéket veszi fel. (16F -en PCLATU nincs.) Mivel az olyan utasítás, aminek az eredménye a PCL regiszterben keletkezik (addwf PCL,f), nem kezeli az átviletl a PCLATH (PCLATU) felé, így csak egy 256 szavas területen (16F), 256 byte-os területen (18F) belül lehet egyszerűen "ugrani".

18F -en a movf PCL,w feltölti a PCLATU : PCLATH regiszter párost. ezután csak a PCL módosítását kell elvégezni. Amenniben a módosítás átvitelt okoz a PCLATH vagy a PCLATU regiszterekbe, azt a programban meg kell oldani a PLC írása előtt. Pl. PCLATH -ba törénő átvitel kezelése:
  1. rlncf   INDEX, f, ACCESS        // address is 2x value
  2. movf            PCL, w, ACCESS  // load PCLATH and PCLATU by reading PCL
  3. addwf   INDEX, w, ACCESS
  4. btfsc   STATUS, C, ACCESS               // If a carry occurred
  5. incf    PCLATH, f, ACCESS
  6. movwf   PCL, ACCESS
A hozzászólás módosítva: Jan 4, 2015
(#) vicsys válasza don_peter hozzászólására (») Jan 4, 2015 /
 
Húúú, nagyon köszi! Tényleg igazad van! A manóba! Ezért jó ez a közösség, mert olyan dolgokat szúrtok ki, ami nekem tök egyértelmű, de mégsem jó. Persze, keveregnek az infók a fejemben és próbálok mindent elmondani érthetően. Úgy, hogy egy nagyon kezdő is értse. Köszi a visszajelzést!
(#) edison14 válasza benjami hozzászólására (») Jan 4, 2015 /
 
Szia!

Nem láttam lapokat az adatlapban. Pár napja kértem segítséget egy másik prblémámmal kapcsolatban és ott írták hogy lehet hogy átlóg a program egy másik lapra ebből következtettem, hogy kéne lapozás.
Következő: »»   613 / 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