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   977 / 1203
(#) Bakman válasza slimcolt hozzászólására (») Szept 8, 2017 /
 
Idézet:
„A +-Vref tulajdonképpen miért kell? ezek a tartományok között végez méréseket a konverter?”
Igen.
Idézet:
„Ha nem kell a teljes tápfesz tartomány, akkor pontosabb lesz a felbontás?”
Igen. Pl. 0 - 2 V-ig akarod mérni a feszültséget de a Vref+ 5 V-on van. Ilyenkor az ADC több, mint fele felbontását elbukod.
(#) slimcolt válasza Bakman hozzászólására (») Szept 9, 2017 /
 
Köszi!

Még egy kérdésem lenne:

Mi szerint kell megválasztani a mintavételezési frekvenciát?
Én DC jelszintet szeretnék digitalizálni, ezért a sávszélesség nem kritikus.
(#) kriszrap hozzászólása Szept 9, 2017 /
 
Szaisztok olyan problémába ütköztem hogy a pwmem lassan íllitja be az értéket.
Azt érzékelem szakatottan állitja a pwm ent a potmétertekerése képest.
PIC18f46k22 röl van szó.
MikroC be programozom .
És idömultiplexes kijelzés alkalmazok.
  1. //alap beálltás
  2. PWM2_Init(5000);
  3.     PWM3_Init(5000);
  4.     PWM4_Init(5000);
  5.    
  6.     PWM2_Start();
  7.     PWM3_Start();
  8.     PWM4_Start();
  9.    
  10.     PWM2_Set_Duty(0);//zöld
  11.     PWM3_Set_Duty(0);//kék
  12.     PWM4_Set_Duty(0);// piros
  13.  
  14. while(1)
  15.   {
  16.     PWM2_Set_Duty(ADC_Read(5)/4);//itt állítom a pwmet
  17.     szinkeveres(2,2,2,2,2,2,2,2,5);
  18.     szinkeveres(2,2,2,2,2,2,2,2,4);
  19.     szinkeveres(2,2,2,2,2,2,2,2,3);
  20.     szinkeveres(2,2,2,2,2,2,2,2,2);
  21.     szinkeveres(2,2,2,2,2,2,2,2,1);
  22.     kirajzol(500);//itt pedig a tömbök értékét idömultiplexelve jelzem ki.
  23.   }

Ha szükséges kirajzol alprogramot is megmutatom .
Nem értem miért szaggatotta pwm beállítás ötlet valakinek??

Egy másik kérdésem is lenne ennek a pic nek an4 e csak kb 500 érték ig add értéket ezt hol lehet egváltoztatni???
A hozzászólás módosítva: Szept 9, 2017
(#) kriszrap hozzászólása Szept 10, 2017 /
 
Valaki?
(#) kriszrap hozzászólása Szept 10, 2017 /
 
Gondolom azért nem kapok választ mert érthetettlen elnézést megprobálom újból.

PIC18f46k22-töt használom.
Olyan problémám van amikor kirajzolom az effektet akkor potencióméterrel szeretném a szint kalibrálni.
A probléma az hogy levan maradva a potméterhez képest pwm kitöltés vagy is tekerem a potmétert kb 1 seces után beállítja a fényerőt. Shiftregiszter blanklábát pwmezem (74hc595).

MikroC be programozom .
És idömultiplexes kijelzés alkalmazok.
  1. //alap beálltás
  2. PWM2_Init(5000);
  3.     PWM3_Init(5000);
  4.     PWM4_Init(5000);
  5.    
  6.     PWM2_Start();
  7.     PWM3_Start();
  8.     PWM4_Start();
  9.    
  10.     PWM2_Set_Duty(0);//zöld
  11.     PWM3_Set_Duty(0);//kék
  12.     PWM4_Set_Duty(0);// piros
  13.  
  14. while(1)
  15.   {
  16.     PWM2_Set_Duty(ADC_Read(5)/4);//itt állítom a pwmet
  17.     szinkeveres(2,2,2,2,2,2,2,2,5);
  18.     szinkeveres(2,2,2,2,2,2,2,2,4);
  19.     szinkeveres(2,2,2,2,2,2,2,2,3);
  20.     szinkeveres(2,2,2,2,2,2,2,2,2);
  21.     szinkeveres(2,2,2,2,2,2,2,2,1);
  22.     kirajzol(500);//itt pedig a tömbök értékét idömultiplexelve jelzem ki.
  23.   }


A másik kérdésem AN4 láb csak 500 értékig tud értéket felvenni ennek mi az oka??

Segítséget elöre köszönöm remélem érthetöbb
(#) silent15 válasza kriszrap hozzászólására (») Szept 11, 2017 /
 
A szinkeveres és a kirajzol függvények mennyire időigényesek ? Előbb mind a 5 színkeverésnek és a kirajzolnak is le kell futnia mire életbe lép az ADC érték megváltozása.

Javaslom tedd az ADC-t egy interruptba.
(#) ativagyok hozzászólása Szept 13, 2017 /
 
Sziasztok!
Egy elég könnyűnek tűnő kérdésem lenne:
Hogyan tudnék egy 8 bites változó értékét egy kimenetre sorosan kiküldeni?
Például a 170-es decimális értéknél a kimeneten mondjuk 1ms-os "bitidővel" (?) jelenjen meg ez: 10101010.
(#) Hp41C válasza ativagyok hozzászólására (») Szept 13, 2017 / 1
 
bits = 8;
do
{
// Bit vizsgálat szerint be kell állítani a kimeneti bitet:
if (data & 1) Kimenet = 1; else Kimenet = 0;
// Léptetni kell az adatot
data >>= 1;
waitms(1);
// Mindezt egy 8 -as ciklusban végezni
} while (--data);
A hozzászólás módosítva: Szept 13, 2017
(#) ativagyok válasza Hp41C hozzászólására (») Szept 13, 2017 /
 
Köszi, úgy tűnik sikerült.
(#) benjami válasza kriszrap hozzászólására (») Szept 13, 2017 /
 
Mivel a végtelen ciklusodban csupa olyan függvényhívás van amiről semmit sem tudunk....
Mit vártál, gondolatolvasók a fórumtagok?
Más téma: én nem használnék egy nyolcbites mikrovezérlőnél 9 paraméterrel meghívandó függvényt, inkább egy (globális) struktúrába raknám az értékeket és úgy hívnám meg azt a szinkeverest.
(#) killbill válasza Hp41C hozzászólására (») Szept 13, 2017 /
 
while(--bits);
A hozzászólás módosítva: Szept 13, 2017
(#) kriszrap válasza benjami hozzászólására (») Szept 13, 2017 /
 
Basszus ugy emlékeztem hogy válaszoltam "silent15" elnézést amugy sikerült megoldásával.
Többször kellet lekérdezni az adc-t...

Idézet:
„inkább egy (globális) struktúrába raknám az értékeket és úgy hívnám meg azt a szinkeverest.”

Nem értem mire gondolsz.
A hozzászólás módosítva: Szept 13, 2017
(#) pajti2 válasza kriszrap hozzászólására (») Szept 15, 2017 /
 
Arra gondol, hogy a fordító a függvények paramétereit a verembe teszi le, és egy 8 bites pic-nek nem szokott nagy méretű verem memóriája lenni. Neked kell figyelned rá, hogy ne verem túlcsordulással szálljon el a programod.
(#) silent15 válasza pajti2 hozzászólására (») Szept 16, 2017 /
 
Arra kell figyelned kriszap hogy 31-nél több függvényhívásod ne legyen, ilyen mély a verem az adott PIC-nek. (Bár kétlem hogy megközelítenéd ezt az értéket).
(#) pajti2 válasza silent15 hozzászólására (») Szept 16, 2017 /
 
Ha a jövőben elkezdi egymásba ágyazni azokat a függvényeket, amik 9 paramétert pakolnak le a verembe (például rájuk fut egy interrupt, amibe beledrótoz egy újabb függvényhívást), akkor egyetlen pillanat alatt el is fogyott a verem.

Túl sok az a 9 paraméter függvényhívásonként átadni. Elhiszem, hogy kényelmes, de 8 biten olyasminek nincsen helye. Bad practice. Megnézed az mla-s kódmintákat 8 bitre, sehol egy deka függvényparaméter sincsen, minden globális változókban van, és nem véletlenül.
(#) Hp41C válasza pajti2 hozzászólására (») Szept 16, 2017 /
 
PIC16Fxxx : Nincs lehetőség adatot a stack- re írni, a paraméter átadás memória területen történik. Nem a paraméterek száma, hanem a függvények hívási mélységére van korlát - a HW stack 8 szintű. Ezt a 8 szintet értinti a megszakítás és a belőle hívott eljárások "mélysége".
PIC16F1xxx : Elvileg hozzáférhető a HW stack...
PIC18: A paraméter átadás a (C18) FSR2 regiszter segítségével történik, a stack méretét a fordítás során megadhatjuk.
...
(#) Fortitude hozzászólása Szept 16, 2017 /
 
Hello! Lenne pár kérdésem pic programozással kapcsolatban, elszeretném kezdeni tanulni mert megtetszett.

Milyen eszközök kellenek ahhoz, hogy tudjak itthon programozni mikrovezérlőt?

(Ha jóltudom csak egy pickit adapter és maga a mikrovezérlő.)

Milyen szoftverrel lehet programozni?

Milyen típusú mikrovezérlővel lenne jó elkezdeni programozni tanulni / van-e valami jó starter kit,amit ajánlanál, mert neked bejött, stb.?

Esetleg Győr környékén valaki tud áruházat, ahol ezeket belehetne szerezni?

Válaszotokat előre is köszi!
(#) bbb válasza Fortitude hozzászólására (») Szept 16, 2017 /
 
Szia!

Én a pic12f629 mikrovezérlővel kezdtem a barátkozást. Sok jó tutorial van hozzá assembly nyelven, de az xc8-cal vígan tudod C-ben is programozni. Van sajátossága, amire oda kell figyelni (OSCCAL értéke kiütődhet belőle és ilyenkor újra kell írni bele), de ezzel együtt nagyon egyszerű használni. 8 lába van, kapható SMD és DIP tokozásban is. Testvére a pic12f675, annyi különbség van köztük, hogy ez utóbbin már van analóg láb is. PICKit2 könnyedén programozza.

Ha utána tovább akarsz lépni és nem csak barátkozni ezzel a világgal, akkor már jöhet a microchip pic keresője, ahol a paramétereket meghatározva tudsz választani az adott projekthez illő vezérlőt.

Én most a pic18f25j50 lehetőségeit kezdem használni, azért esett rá a választásom, mert van benne két MSSP modul is, s míg egyiken SPI-t akartam, a másikon I2C-t. Azóta persze a projekt átalakult (mivel elérhetőbbek lettek a kijelzők), s már elég lesz az I2C is, de attól még ez megmaradt az USB támogatásával és a tágas memóriájával (s nem mellesleg relatíve olcsó is)

A pic18f25j50-hez ha nem is fejlesztőpanelt, de hasonlót készítettem magamnak. Ezt dugdosós próbapanelbe lehet bedugni (élére állítva), az összes lába ki van vezetve, van rajta egy táprész, meg az USB-hez szükséges minimum alkatrészek egy külső oszcival. Tervezem, hogy legyártatom a panelt a kínaiakkal, de az általam levasalt és kimart panel egyelőre remekül működik, azon játszom vele mielőtt "kész projekt lenne belőle".
A hozzászólás módosítva: Szept 16, 2017
(#) pajti2 válasza Fortitude hozzászólására (») Szept 17, 2017 /
 
(#) Firefighter1 hozzászólása Szept 17, 2017 /
 
Sziasztok!

Tudnátok javasolni egy a PIC18F14K22 höz hasonló jó tulajdonságokkal bíró PIC-et csak magasabb lábszámmal?

Főképpen saját magam szorakoztatására elkezdtem "tervezgetni " egy demoboard-ot, és biza rá kellett jöjjek hogy a 20láb elég kevés egy kompakt board-hoz!

Köszönöm!
(#) nedudgi válasza Firefighter1 hozzászólására (») Szept 17, 2017 /
 
A PIC18F14K22 a "K22" család tagja. Az adatlapban benne van, milyen típusok tartoznak bele. Létezik 28, 40, 44, meg 6x lábú.
(#) Firefighter1 válasza nedudgi hozzászólására (») Szept 17, 2017 /
 
Mennyivel jobb lenne ha a kezem járna a szám előtt....
Jogos, Köszönöm!
(#) aroxol hozzászólása Szept 17, 2017 /
 
Sziasztok!

Tudna valaki segíteni hogy lehet beállítani PIC18F26k22?: 2400 baud 8E1. A 2400 megy, de hogy mi az a 8E1 nem találom az adatlapban.
  1. MOVLW B'10010000'
  2.         movwf RCSTA1
  3.         movlw b'00100000'
  4.         movwf TXSTA1
  5.         movlw .77                                       ; 2400 baudrate
  6.         movwf SPBRG1
  7.         movlw b'00000000'
  8.         movwf BAUDCON1
  9.         clrf SPBRGH1
  10.         clrf RCREG1
  11.         CLRF TXREG1
  12.         BCF PIR1,5
  13.         BCF PIR1,4
  14.         clrf RCREG1
A hozzászólás módosítva: Szept 17, 2017
(#) Bakman válasza aroxol hozzászólására (») Szept 17, 2017 /
 
8 bit, Even parity, 1 Stop bit. Ha minden igaz.
(#) aroxol válasza Bakman hozzászólására (») Szept 17, 2017 /
 
Ez nekem így nem sokat mond.
(#) Hp41C válasza aroxol hozzászólására (») Szept 17, 2017 /
 
A 2400 a sebesség, a 8 az adatbitek száma, az E a páratlan paritás, az 1 a stopbitek száma.

1. Eldönteni, hogy BRGH bit értékét.
2. Az órajel és a BRGH függvényében a SPBRGH, SPBRG és a BAUDCON regiszterek beállítása.
3. TXSTA beállítása. Mivel a formátumban van paritásbit, a TX9 -et 1 -re kell állítani.
4. RCSTA beállítása, SPEN maradjon 0. Mivel a formátumban van paritásbit, a RX9 -et 1 -re kell állítani.
A modul mindig 1 stopbittel dolgozik.
5. Megszakítás beállítása.
6. Az SPEN bit 1 -re állítása.

Írni kell egy paritás számoló rutint.
Vételnél ki kell olvasni a RCSTA -t, értékét elmenteni, a mentett értéket vizsgálni. A RX9D bit tartalmazza a vett paritás bitet. RCREG kiolvasása, paritás számítás, összevetés a mentett RX9D bittel, hibajelzés paritáshibánál.
Adásnál az adni kívánt adat paritásának kiszámolása, beírása a TX9D bitre, az adat beírása a TXREG -ne.
A hozzászólás módosítva: Szept 17, 2017
(#) aroxol válasza Hp41C hozzászólására (») Szept 17, 2017 /
 
Köszönöm.
Mivel a 2400 már megy, így gondolom az első kettő jó megvan?
A paritás rutinra írnál bővebben?
(#) kissi válasza aroxol hozzászólására (») Szept 17, 2017 /
 
Szia!

Például:
(#) Hp41C válasza aroxol hozzászólására (») Szept 17, 2017 /
 
Paritás:
1. Megszámolod az adat bitjei közül hány darab 1 van.
2. 256 elemű táblázatba letárolod a paritást, az adattal címezve máris kiolvasható.
3. A byte -ot 4 bites részekre szeded és csak 16 elemű táblázatot használsz. Az adat paritását a két fél paritásának kizáró vagy kapcsolatával kaphatod meg.
4. Miért nem kérdezed a Gooooogle -t
(#) aroxol válasza Hp41C hozzászólására (») Szept 17, 2017 /
 
Köszönöm, úgy látom ez már nem kezdő kategória.
Következő: »»   977 / 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