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   993 / 1203
(#) f2f2 válasza f2f2 hozzászólására (») Nov 18, 2017 /
 
Idézet:
„18LF8490”

Létezhet hogy a 2KOhm a PIC Mclr lábán felhúzónak
és a Pickit2 Vpp esetleg nem éri el a megfelelő feszültséget a 2k miatt
mert ha a Vpp több mint +5V, akkor a 2k a Vdd-t emelgeti magasabbra,
amit esetleg a pk leszabályoz közben a Vpp nem éri el a kellő feszültséget ?
Ha lenne erre esély ideiglenesen kikötném a felhúzót.
A hozzászólás módosítva: Nov 18, 2017
(#) Bakman válasza f2f2 hozzászólására (») Nov 18, 2017 /
 
Könnyen lehet, hogy ez a baj. Felhúzónak 10 kΩ-ot illik használni, azt le tudja győzni a programozó.
(#) kriszrap hozzászólása Nov 18, 2017 /
 
2 amperrt enne a taprol az egesz.Pic18f46k22 picet hasznalok
A hozzászólás módosítva: Nov 18, 2017
(#) kriszrap hozzászólása Nov 19, 2017 /
 
Vagy ha ilyen rossz a PC táp, akkor meg van ez a lehetőség, van ilyen tápegység még itthon, erről mi a vélemény?
Bővebben: Link
A hozzászólás módosítva: Nov 19, 2017
Moderátor által szerkesztve
(#) Bell hozzászólása Nov 19, 2017 /
 
Sziasztok!
MPLAB X v4.05, XC8 v1.44 környezetben, PIC18F25K40-el van gondom.
A globálisan definiált változók értékét nullának értelmezi.
De amelyiknek a főprogramban adok értéket, az rendben van.
A szimulátorban természetesen minden működik.
Az alábbi kis program csak 4 felvillanást eredményez.
Mit rontok el?
  1. #include "cfg.h"
  2. #include <xc.h>
  3. #define _XTAL_FREQ  8000000
  4. #define LED LATAbits.LATA0
  5.  
  6. const unsigned char x1 = 2;
  7. unsigned int x2 = 3;
  8. unsigned char x3;
  9. unsigned char i;
  10.  
  11. void main(void)
  12. {
  13.     x3 = 4;
  14.     OSCFRQ = 0b0000011;  // 8MHz
  15.     TRISA = 0xF0;
  16.     LATA = 0x00;
  17.   for(i = 0; i < x1; i++)
  18.   {
  19.       LED = 1;
  20.       __delay_ms(200);
  21.       LED = 0;
  22.       __delay_ms(200);
  23.   }
  24.   __delay_ms(2000);
  25.  
  26.   for(i = 0; i < x2; i++)
  27.   {
  28.       LED = 1;
  29.       __delay_ms(200);
  30.       LED = 0;
  31.       __delay_ms(200);
  32.   }
  33.   __delay_ms(2000);
  34.  
  35.   for(i = 0; i < x3; i++)
  36.   {
  37.       LED = 1;
  38.       __delay_ms(200);
  39.       LED = 0;
  40.       __delay_ms(200);
  41.   }
  42.  
  43.     while(1);
  44.    
  45. }
A hozzászólás módosítva: Nov 19, 2017
(#) f2f2 válasza Bell hozzászólására (») Nov 19, 2017 /
 
A starthoz képest 4sec múlva kezdi a 4 villogást ?
Ha igen akkor az x1 és x2 értektelenül van a main kezdetekor.
Nyílván akkor ha main ban beírnál x2 = x3; akkor lenne 8 villanás is.
Illetve ha x3= x1 vagy x2; akkor 1 se.
Mindenesetre érdekes, akkor a mainon belül kellene értékeket adni
vagy onnan meghívni értékadónak megírt rutint.
Persze én nem értek ehhez, hátha más ír valami magyarázatot.
(#) benjami válasza Bell hozzászólására (») Nov 19, 2017 /
 
Nem állítottad át az alapértelmezetten analóg bemenetet digitálisra.
(#) Bell válasza f2f2 hozzászólására (») Nov 19, 2017 /
 
Igen, 4 másodperc múlva kezd villogni.
Egy méretes konstans tömb miatt lenne erre szükség.

benjamin: A TRISA kimenetként beállított bitjeinél mindegy az ANSEL bit. A LED villog.
(#) pajti2 válasza kriszrap hozzászólására (») Nov 19, 2017 /
 
Nem rossz a pc táp, csak durva terhelés van rajta. Ha ráadásul valami audio cuccot csináltál (pic nem eszik 2 ampert), jobb a független táp.
(#) f2f2 válasza Bell hozzászólására (») Nov 19, 2017 /
 
Esetleg így milyen ?

  1. #include "cfg.h"
  2.     #include <xc.h>
  3.     #define _XTAL_FREQ  8000000
  4.     #define LED LATAbits.LATA0
  5.      
  6.      
  7.     void main(void)
  8.     {
  9.  
  10.         pre();
  11.  
  12.         OSCFRQ = 0b0000011;  // 8MHz
  13.         TRISA = 0xF0;
  14.         LATA = 0x00;
  15.  
  16.  
  17.  
  18.       for(i = 0; i < x1; i++)
  19.       {
  20.           LED = 1;
  21.           __delay_ms(200);
  22.           LED = 0;
  23.           __delay_ms(200);
  24.       }
  25.       __delay_ms(2000);
  26.      
  27.       for(i = 0; i < x2; i++)
  28.       {
  29.           LED = 1;
  30.           __delay_ms(200);
  31.           LED = 0;
  32.           __delay_ms(200);
  33.       }
  34.       __delay_ms(2000);
  35.      
  36.       for(i = 0; i < x3; i++)
  37.       {
  38.           LED = 1;
  39.           __delay_ms(200);
  40.           LED = 0;
  41.           __delay_ms(200);
  42.       }
  43.      
  44.         while(1);
  45.        
  46.     }
  47.  
  48.  
  49.     void pre(void)
  50.     {
  51.  
  52.        const unsigned char x1 = 2;
  53.        const unsigned int x2 = 3;
  54.        const unsigned char x3 = 4;
  55.        unsigned char i;
  56.  
  57.     }
A hozzászólás módosítva: Nov 19, 2017
(#) pajti2 válasza kriszrap hozzászólására (») Nov 19, 2017 /
 
Hmm, most jövök rá, hogy lehetségesen egy hatalmas nagy félreértésről is lehet szó az én részemről.

Miközben a pic-et a pc tápon tartod, rajta lesz azon a tápon a pc is?
A hozzászólás módosítva: Nov 19, 2017
(#) kriszrap válasza pajti2 hozzászólására (») Nov 19, 2017 /
 
Nem nem...
Elkeztem egy 8x8x8,5x5x5,3x3x3 as ledkockát
Lassan kész is aztán combos tápot kerestem és pc táp jutott eszembe.
Ahogy néztem 5db 5v os tápja van igy nem kell stab ic stb.
Csak sajnos pc tápot nem használtam ilyen célra és igy megkérdeztem mire kellene ügyelni.

Montátok a 10uf os kondit szűrésnek és egy biztositékot.
(#) Bell válasza f2f2 hozzászólására (») Nov 19, 2017 /
 
A pre-ben deklarált változók lokálisak csak ott érvényesek.
(#) rolandgw válasza Bell hozzászólására (») Nov 20, 2017 /
 
Nem ismerem a PIC fordítókat, de ez a hiba azért van, mert a bss szegmensbe tesz minden globális változót, amit a startup kód lenulláz. Nem használja a data részt. Lehet, hogy van valami beállítási lehetőség ezekkel kapcsolatban. Ha a ciklusváltozót lokálisba teszed?
(#) f2f2 válasza Bell hozzászólására (») Nov 20, 2017 /
 
Anno amikor C ben programoztam

Több C file egybefordításakor mindegyik elejébe tettem ezt kivéve a var.c file :

  1. #ifndef _TPvar_
  2.  #include "extern.h"
  3. #endif


A c fileok fordítása majd linker ezek .o-jaiból ból ELF



extern.h file példa:
  1. #ifndef _extern_
  2.  #define _extern_
  3.    extern unsigned char sorv4[ 4 ];
  4.    extern unsigned int buf_RS232_Len;
  5.  
  6.  
  7. #endif


És egy külön c file ahol ugyanezeknek az értékadásai voltak
var.c file:
  1. #ifndef _TPvar_
  2.    #define _TPvar_
  3.    unsigned char sorv4[ 4 ]={0x41, 0x42, 0x43,  0x44};
  4.    unsigned int buf_RS232_Len=1;
  5. #endif


Ekkor minden C fájl külön külön hibamentesen fordíthatóvá vált
és minden ismerte ezeket a tömböket változókat
nem volt lokális
persze a függvényekről is gondoskodni kellett "Extern"-ileg
Hogy ez segít-e passz
Azt se tudom a PIC nél több c fájlból lehet e egy programot készíteni
(már linkerileg).
A hozzászólás módosítva: Nov 20, 2017
(#) kissi válasza f2f2 hozzászólására (») Nov 20, 2017 /
 
Szia!

Persze, működik a PIC-eknél is!
(#) dani555 hozzászólása Nov 20, 2017 /
 
Sziasztok! Tapasztalt már valaki olyat, hogy a pickit3 programozó helyesen felprogramozza ugyan az eszközt, de aztán mikrokontrollert elindítani már nem lehet vele? Tehát ha az on négyzetet kipipálom, elkezd pl. egy egyszerű ledvillogtatásnál halványan világítani a led. Ha azonban leszedem róla a pickit3-at, és 5v os szabályozott táppal próbálom meg, működik helyesen, tehát beégette....

Megköszönném, ha adnátok tippeket mi lelhette a programozómat, eddig működött helyesen.
(#) Hp41C válasza Bell hozzászólására (») Nov 20, 2017 /
 
A __delay_ms() eljárás használata előtt be kell állítani az órajel frekvenciáját:
  1. #define  _XTAL_FREQ      8000000
(#) Hp41C válasza dani555 hozzászólására (») Nov 20, 2017 /
 
Mekkora az áramfelvétel?
(#) pajti2 válasza kriszrap hozzászólására (») Nov 20, 2017 / 1
 
Oké, akkor csak félreértés volt. A plussz dióda és kondi valószínűleg elhagyható. A biztosíték akkor is fontos. A pic lábaira közvetlenül a 100 nano minden mástól függetlenül is kötelező jellegű. A többi a szokásos. A pc táp abszolút okés lesz.
(#) Bell válasza f2f2 hozzászólására (») Nov 20, 2017 /
 
Köszönöm!
Lefordul, de ezzel a linker-el nem boldogulok, nem tudom hogyan hozzam létre. Sejtem, hogy a több darabból álló object kódból varázsol futtatható tárgykódot, de nem találtam még rá az MPLABX-ben követhető példát.
(#) kriszrap hozzászólása Nov 20, 2017 /
 
Sziasztok.
Kiválasztottam ezt az eepromot
Bővebben: Link

Az a kérdésem hogy tudom elméletileg egy más között a komunikációt össze hozni??
Hogy tudok értéket kiolvastatni?
Hogy van címezve az adattáblája ?

Jól forditottam hogy SDA lábat 2k val kell felhuzni 1mhzes sebbességért?
Segítségeteket előre köszönöm
A hozzászólás módosítva: Nov 20, 2017
(#) freeridre hozzászólása Nov 21, 2017 /
 
Sziasztok!
Villamosmernok MSc-n PIC-et programozunk (16F18857). Sajnos nem igazán vagyok otthon a témában. Van itt köztetek olyan, aki tudna velem foglalkozni? Jelenleg: megszakítások, A/D konverter, ami nem tiszta.
Koszonom a elore is!
(#) Pali79 válasza freeridre hozzászólására (») Nov 21, 2017 /
 
Milyen nyelven programozók?
(#) Hp41C válasza kriszrap hozzászólására (») Nov 21, 2017 /
 
Hogy tudok értéket kiolvastatni?
I2C üzenetet kell küldeni:
<Start><írási_eszközcím><cím_felső_byte><cím_alsó_byte><Restart><Olvasási_eszközcím>
Ezután lehet kiolvasni a megadott címen tárolt értéket. A kiolvasást egy <Ack> -kal kell lezárni. Az olvasás egyben növeli a beírt címet. További olvasásokra a soron következő címen tárolt értéket olvashatjuk ki. Az utolsó kiolvasást egy <NAck> -kal kell lezárni, majd egy <Stop> -ot kell küldeni.
<írási_eszközcím>: Az A2, A1, A0 lábakra kapcsolt szintekkel beállítható: 0xA0, 0xA2, 0xA4, 0xA6, 0xA8, 0xAA, 0xAC, 0xAE értékere.
<Olvasási_eszközcím>: A beállított <írási_eszközcím> +1: 0xA1, 0xA3, 0xA5, 0xA7, 0xA9, 0xAB, 0xAD, 0xAF
Idézet:
„Jól fordítottam, hogy SDA lábat 2k -val kell felhúzni 1mhzes sebességért?”

Mind az SDA, mind az SCL vonalat kel kell húzni. Mind a két vonal nyitott kollektoros és mindket5tőt a master és a slave is meghajthatja.

Melyik lábakon kezeled?
- MSSIx SDAx, SCLx:Az SSPxADD beállítása a kívánt sebességnek megfelelően, MSSIx modult I2C master -nek kell beállítani.
- Bármeny más lábak: Szoftver I2C master rutinokkal. A vonalaket csak alacsony szinten szabad meghajtani, a magas szintet a kikapcsolt meghajtó (TRISx.y=1) és a felhúzó ellenállás biztosítja.
A hozzászólás módosítva: Nov 21, 2017
(#) pajti2 válasza freeridre hozzászólására (») Nov 21, 2017 /
 
A pic-et első sorban megtanulni szoktuk (van angol adatlap), megérteni csak utána. Ha betéve tudod az adatlapot, az máris ki fog szűrni csilliónyi kérdést, amit egyébként senki emberfiának/lányának nem lesz türelme mind megválaszolni. Azért van az adatlap.

Van könyv is ( Bővebben: Link ), ami magyarul van (az adatlap mind angol), de csak óvatosan vele. A technika mindig fejlődik, amit a magyar művek kb 20 éves lemaradással követnek. A jelenben gyors segítség lehet, de ha elkezdesz a későbbiekben is arra hagyatkozni az adatlapok helyett, jó nagy tévedésekbe sodrod majd magad. Csak akkor javasolnám azt a könyvet, ha gyors segítség kell a főiskolai beadandóhoz, és utána a mikrovezérlőknek a közelébe menni sem szándékoztál, amiben egészen biztos vagy.
(#) usane válasza pajti2 hozzászólására (») Nov 21, 2017 /
 
Nem értek egyet. Vagy nem jól fogalmaztál. Én sem tudom az összes PIC adatlapját fejből amit használok. Tudom hogy működik, az egyes perifériál hogy működnek általában, és amit éppen használok azt átnézem, hogy van-e valami speciális ami eltér az általánostól. Vagyis jobb érteni mint bemagolni.
(#) Norberto válasza pajti2 hozzászólására (») Nov 21, 2017 /
 
Én ezzel a 20 éves lemaradással vitatkoznék csak, igenis van magyar jó minőségű leírás a működésekről, csak épp nincs kellő mennyiségben reklámozva:

Egy példa a nagyvilágból a minőségi tudás megszerzéséhez vezető úton. Jó olvasgatást mindenkinek, icserny HE-n korábban is aktívan tevékenykedő kolléga oldalához.
A hozzászólás módosítva: Nov 21, 2017
(#) Bell válasza f2f2 hozzászólására (») Nov 21, 2017 /
 
A "A c fileok fordítása majd linker ezek .o-jaiból ból ELF" - el nem tudom mit tegyek.
var.c-t, extern.h-t és main.c-t a képeken láthatóan módosítottam.
A szimulátorban jól látható, hogy x2 értéke 3, de a hardverben nulla az értéke.
Továbbra is 4 villogás 4 másodperc szünet után.
Nem tudom hol van elrontva.
(#) Pali79 válasza pajti2 hozzászólására (») Nov 21, 2017 /
 
Egy ilyen PIC adatlapja majdnem 700 oldal... Szólj ha megtanultad, kikérdezem!
Következő: »»   993 / 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