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   213 / 1211
(#) brato válasza baloghvl hozzászólására (») Feb 21, 2012 /
 
Bocs a link lemaradt.
Bővebben: Link
(#) baloghvl válasza brato hozzászólására (») Feb 21, 2012 /
 
Köszi!
(#) Balagemann2031 hozzászólása Feb 21, 2012 /
 
Sziasztok!
Azt szeretném megkérdezni, hogy táblázatot hogyan kell elhelyezni bootloadert használó pic program memóriájában? (egyébként működnek a progik minden jó, de ha táblázatot elhelyezek különbözö címeken, akkor eltévejeg a progi..) Bootloader nélküli picen fut rendesen, de valamiért bootloaderesen nem akarja rendesen kezelni a táblázatot. (18F4550) Köszi
(#) locked hozzászólása Feb 21, 2012 /
 
Sziasztok!
Megint a Rumcájsz féle órával kapcsolatban kérek segítséget(http://www.hobbielektronika.hu/kapcsolasok/digitalis_ora_homerovel.html?pg=5).A gondom az,hogy a LED-display digitek közül a 2.(D2)és az utolsó(D0) fele fényerővel jelez a másik kettőhöz képest.Közös katódos.Mi lehet a gond, DS18B20 egyenlőre nincs benne......Most kezdek ismerkedni a programozással önerőből ill. a fórum segítségével(teljesen a 0-ról).Assembly lesz a kiszemelt programnyelv.Ez a kapcsolás lesz a próbapanelem.Hogyan műkdik a számláló kijelzése,a karaktereket értelem szerűen előre definiáljuk miszerint melyik port belyik bitje van magas ill.alacsony szinten?Kezdésnek szeretnék írni egy másodperckijelző progit 2 digit-en.
(#) icserny válasza Balagemann2031 hozzászólására (») Feb 21, 2012 / 1
 
Idézet:
„Azt szeretném megkérdezni, hogy táblázatot hogyan kell elhelyezni bootloadert használó pic program memóriájában?”

Például így:
  1. const rom unsigned char betwk[] = {
  2. 0x02,0x04,0x0E,0x01,0x0F,0x11,0x0F,0x00,    //á
  3. 0x02,0x04,0x0E,0x11,0x1F,0x10,0x0E,0x00,    //é
  4. 0x02,0x04,0x0C,0x04,0x04,0x04,0x0E,0x00,    //í
  5. 0x02,0x04,0x0E,0x11,0x11,0x11,0x0E,0x00,    //ó
  6. 0x02,0x04,0x11,0x11,0x11,0x13,0x0D,0x00,    //ú
  7. 0x0A,0x00,0x11,0x11,0x11,0x13,0x0D,0x00,    //ü
  8. 0x05,0x0A,0x11,0x11,0x11,0x13,0x0D,0x00,    //ű
  9. 0x05,0x0A,0x0E,0x11,0x11,0x11,0x0E,0x00};   //ő
(#) Hp41C válasza locked hozzászólására (») Feb 21, 2012 / 1
 
Szia!

A konfigurációs regiszterekben külön biten lehet megadni, hogy a TBLRD / TBLWR utasítás kezelheti-e a bootloader területét.
(#) Pepebá válasza icserny hozzászólására (») Feb 22, 2012 /
 
Az MCP23017 portbővítővel kiegészítettem a projektemet, kimenetként tudom kezelni, viszont a bemenetkénti programozással illetve lekérdezéssel nem boldogulok.
Odáig eljutottam hogy bemenetre állítom a portokat:
i2c_write2(MCP23017ADDR,IODIRA_CIME=1;
a piccolo_i2c.c állományban megtaláltam a beolvasásra írt függvényedet (ic2_read2...) de nem tudom értelmezni.
"*p1 az első beolvasott adat eltárolási helyének mutatója
*p2 a második beolvasott adat eltárolási helyének mutatója"
Szeretném ha sötét elmémet felvilágosítanád, milyen módon tudom a port (k) állapotát kiolvastatni.
Üdv.
(#) kiskata hozzászólása Feb 22, 2012 /
 
Kedves Hozzáértők!
Szeretném megkérdezni Tőletek hogy milyen módon lehet egyszerűen összekötni egy pc-s programot egy PIC-el...
Szeretnék egy két értéket megjelentetni a pc-n illetve egy változót visszaírni időnként...

Van-e valakinek tapasztalata ilyen témában?
(#) Hp41C válasza kiskata hozzászólására (») Feb 22, 2012 / 1
 
Szia!

- Pic uart egysége - RS232 szintillesztő - kábel - COMx: port. A PC -n futó program a COMx: portot kezelve kapja meg az adatot. A soros kapcsolat lehet kábeles, BlueTooth esetleg RS232 - USB átalakítós is. BlueTooth modul esetén nem RS232 szintillsztés kell, hanem a modulnak megfelelő (5V - 3.3V).
- Pic IrDa kompatibilis uart egysége - infra adóvevő - infra adóvevő - PC IrDa kompatibilis soros portja.
- Pic USB egysége - usb kábel - usb port. CDC (emulált soros vonal) vagy HID kommunikáció.
(#) pajti2 hozzászólása Feb 22, 2012 /
 
Kérdés: pickit 2 vs pickit 3

Ezúttal gyári kiszerelésű verziókra értem, nem külön készítés meg ilyesmik. Amikor legutóbb ezen filoztam, elég sok felháborodott objektív + hitvita only hírek szólt a pickit 3 ellen, de volt rá ígéret, hogy majd javítva lesznek a feature gondok idővel.

Azóta eltelt 2 év. Nem figyeltem közben a híreket. Így utólag visszatekintés jelleggel érdekelne, volt-e közben hardver revízió a pickit 3-ra, voltak-e érdemben firmware update-ek, illetve, hogy egykori idegesítő hiányosságokat sikerült-e mind lefaragni, vagy még mindig van belőlük?

Tapasztalt tippeket ez ügyben mindenkinek előre is köszönöm.
(#) kormika hozzászólása Feb 22, 2012 /
 
Sziasztok! Egy hőfok és üzemanyagszintjelzőt építek egy 16F818-as pic-el, és egy 2x16-os LCD-vel. Az elképzelés az, hogy az LCD-n ki van írva, hogy Temp: a felső sorban az alsóban meg, hogy Fuel: (kép) és ezek után az értékeknek megfelelő számú teli karakter jelenik meg. Az LCD kezeléssel nincs gondom, az A-D átalakítás is megy, ott akadtam el, hogy az ADRESH regiszterben levő "értékeből" hogyan tudok "az LCD-n változó hosszúságú csíkot" létrehozni mondjuk ha az A/D konverzió eredménye nagyobb mint 100 de kisebb mint 200 akkor mondjuk 3 telikarakter jelenik meg. Remélem érthető a problémám, a segítséget előre is köszönöm.

DSC_0017.JPG
    
(#) kiskata válasza Hp41C hozzászólására (») Feb 22, 2012 /
 
A soros megoldás az kézenfekvő...
Köszönöm...
...de tudnál javasolni valamit az exe elkészítésére, vagy maradjak a terminálnál?
(Hátha van valami egyszerű programozási felület...)
(#) Hp41C válasza kiskata hozzászólására (») Feb 22, 2012 /
 
Szia!

Egy fordító, mindegy milyen nyelv... Visual C, C++, C#, Basic, Delphi, Java...
(#) szitko válasza kiskata hozzászólására (») Feb 22, 2012 / 1
 
Ha beleszólhatok.
Ha soros kommunikációra kell, nézd meg a Processing-et. Viszonylag egyszerű, nyílt forráskódú, ingyenes, program. Rengeteg példával, köztük a soros kommunikáció, és a futtatható exe állomány készítését is támogatja.
(#) icserny válasza Pepebá hozzászólására (») Feb 22, 2012 / 1
 
Idézet:
„a piccolo_i2c.c állományban megtaláltam a beolvasásra írt függvényedet (ic2_read2...) de nem tudom értelmezni.”
Nem baj, ez úgy sem jó arra, amire használni szeretnéd.

Neked ugyanis nem két bájtot kell olvasni, hanem egyet, de előtte ki kell küldeni a regiszter címét. Sajnos, az adatlap nem túl informatív, és a PICCOLO projekt nem tartalmaz kész tranzakciós függvényt,
de az alábbi lépéseket követve az i2c elemi műveletekkel is meg tudod oldani:

i2c_start()
i2c_putc() - 1. bájt kiküldés (slave cím és R/W=0)
i2c_putc() 2. bájt kiküldés (a regiszter címe)
i2c_restart()
i2c_putc() - 3. bájt kiküldés (slave cím és R/W=1)
i2c_getc() - 4. bájt olvasás NAK-kal (ez a kiolvasni kívánt adat)
i2c_stop()
(#) Balagemann2031 válasza kormika hozzászólására (») Feb 22, 2012 / 1
 
Szia! Ha adhatok egy tanácsot nézd át a linkelt oldalon a 11.4.9(összehasonlítás) algoritmusokat...Bővebben: Link
(#) kormika válasza Balagemann2031 hozzászólására (») Feb 22, 2012 /
 
Köszi szépen, már megy is a progi
(#) pittosi hozzászólása Feb 22, 2012 /
 
Most kezdem az égtőmet a pic16f628 égetni de nem tudom biztosan melyik lábakra tegyem az égetőt panelt csinálok a foglalatnak kérnél egy kis segítséget .
Az égetőnek van 1 .MOSI: Mester Oput Slave Input
2.Reset:A cél processzor / RESET-lába
3. SCK: Seriál ClocK
4. MISO:: Master Input Slave Oput
5.TVCC Target VCC (tüske felhelyezésekor +5v)
6. GDN:Ground azaz föld(0)
Aki ismeri a láb kiosztást legyen szíves segíteni
Előre is kösznőm.
(#) potyo válasza pittosi hozzászólására (») Feb 22, 2012 /
 
Ez szerintem AVR-hez való égető, nem PIC-hez.
(#) kaqkk válasza pittosi hozzászólására (») Feb 22, 2012 /
 
Töltsd le a pic adatlapját azon rajta van .
(#) makait1 hozzászólása Feb 22, 2012 /
 
Sziasztok
Kezdő vagyok a témában, csak néhány napja foglalkozom PIC-el. Az alábbi programrészletben a CBLOCK -ban FO néven lefoglat cim pillanatnyi értékét szeretném kijelezni a C porton egy ledsorra. Az eredeti programban egy számlálás ugyan igy az INCF paranccsal lett megoldva és számol is, de nem látom éppen hol tart. Hogyan tudnám megjeleníteni hogy hol tart a számolás, mert ezzel a megoldással csak a 6. led világít?
[quote]LISTP=PIC18F14K22; lista megadása
INCLUDE; includde fájlok megadása
RADIXhex; alapértelmezet számrendszer megadása

CONFIGFOSC = IRC; belső oszcillátor
CONFIGWDTEN = OFF; watchdog kikapcsolása
CONFIGLVP = OFF; alacsony feszültségű programozás kikapcsolva

CBLOCK0x20
FO
ENDC

#defineLEDPORTB,5
org0x0000; program memória kezdő címe
nop; ICD miatt
GOTOSTART

org0x0028

START
CALLINICIALIZALAS
BSFLED;led engedélyezés
CLRFFO

KIJ
INCFFO
MOVLWFO
MOVWFLATC
GOTOKIJ


INICIALIZALAS
MOVLWB'00111010'; oszcillátor frekvenciája <4:6>
MOVWFOSCCON; 111 = 16 MHz, 001 = 250 kHz, 000 = 31 kHz (kb óra kvarc)

CLRFLATC; kimeneti portok törlése
CLRFLATA;
MOVLWB'00000000'; LATB = B'00000000'
MOVWFLATB; alapban egyik kijelző sincs bekapcsolva
MOVLWB'00000001'; analóg / digitális bemenetek
MOVWFANSEL;
MOVLWB'00011111'; A port
MOVWFTRISA
MOVLWB'00000000'; B port kimenet
MOVWFTRISB
MOVLWB'00000000'; C port kimenet
MOVWFTRISC

MOVLWB'11000000'; timer 0 beállítása, előosztó <2:0>
MOVWFT0CON

RETURN
;--------------------------------------------------------------------------
END
(#) makait1 válasza makait1 hozzászólására (») Feb 22, 2012 /
 
Bocs, sajnos a TAB-ok nem kerültek bele az idézetbe
(#) pittosi hozzászólása Feb 22, 2012 /
 
Ezen túl vagyok csak azért kérek segítséget mert elbizonytalaodtam és nem akarom tőnkre tenni
aki már csinált ilyet tudja melyik lábakra megy a proogramozó. Írja a sámokhoz a lábszámot.
Köszőnném nagyon fontos lene.
(#) El_Pinyo válasza pittosi hozzászólására (») Feb 22, 2012 /
 
Olvastad potyo válaszát? A kivezetések elnevezése alapján ez egy AVR programozó lehet. És az AVR nem egyenlő a PIC-kel!
(#) Pepebá válasza icserny hozzászólására (») Feb 22, 2012 /
 
Köszi a segítséget. Elsőre nem igazán működik a dolog, de próbálkozom. Gondolom az nem lehet probléma hogy a 'buszon' már van 4 hőszenzor 90-töl kezdődő címen.
Üdv.
(#) icserny válasza pittosi hozzászólására (») Feb 22, 2012 /
 
Idézet:
„Írja a számokhoz a lábszámot. Köszőnném nagyon fontos lene.”
A probléma ott kezdődik, hogy a PIC két vonalat használ a programozáshoz (egy órajelet, és a kétirányú adatvonalat). A programozód viszont külön kimenő és bemenő adatvonalakat feltételez. Nyilvánvalóan nem PIC-hez való!
(#) icserny válasza Pepebá hozzászólására (») Feb 22, 2012 / 1
 
Idézet:
„Elsőre nem igazán működik a dolog, de próbálkozom.”
Ezzel mit tudok kezdeni?

Átmeneti megoldás lehet, de kicsit tisztességtelen megoldás, ha két lépésre bontod a tranzakciót (ne mondd el, hogy tőlem hallottad!):
i2c_write1(MCP23017ADDR,REG_CIM);
i2c_read1(MCP23017ADDR,&mydata);

MCP23017ADDR és REG_CIM konstansok (a perifériabővítő címe és a kiolvasni kívánt regiszter címe.

mydata egy uint8 típusú változó, amibe a kiolvasott adat kerül. A '&' jel nem viccból van ott, így lesz a paraméter uint8* típusú mutató!

A dologban az a tisztességtelen, hogy a tranzakció közben elengedjük az I2C buszt (restart helyett stop és start lesz).
(#) Pepebá válasza icserny hozzászólására (») Feb 22, 2012 /
 
Ezzel a megoldással próbálkozom, de a kiolvasott adat mindíg 1

int mc23017_readAdat(uint8 addr2){
int8 mcp1adat;

i2c_start();
i2c_putc(addr2 & 0xFE); // addr2=(0x40)
i2c_putc(0x12); // A port regisztere
i2c_rstart();
i2c_putc(addr2 | 0x01);
mcp1adat=i2c_getc(I2C_NAK);
i2c_stop();
return ((int8)mcp1adat);
}
(#) Skip hozzászólása Feb 22, 2012 /
 
Sziasztok. Egy kis segítséget szeretnék kérni.
Hi-Tech fordítót használok és C-ben szeretnék RB0-as lábra megszakítást írni(16f877A pichez). A mellékelt kódig eljutottam. Ez most jelen esetben annyit csinál, hogy elindul a PIC és a PORTD-n kiküldi ezt: 10110001. ha megnyomom a gombicot akkor be lép az interrupt-ba és beírja azt a kódot amit ott adok meg neki. Eddig ez szép és jó de én, hogy tudom megszakítani az interrupt kérést?(pl ha megnyomom még egyszer akkor újra a main-ben megadott kódot írja ki, vagy eltelik egy kis idő és magától visszalép) egy délutánt végig szerencsétlenkedtem vele már ha valaki tudna adni valami tippet akkor azt megköszönném


  1. #include <htc.h>
  2.  
  3. //config: ext reset, no code protect, no watchdog, 4MHz int clock
  4.  
  5. #ifndef _XTAL_FREQ
  6.  // Unless already defined assume 4MHz system frequency
  7.  // This definition is required to calibrate __delay_us() and
  8.  #define _XTAL_FREQ 4000000
  9. #endif
  10.  
  11.  
  12. __CONFIG(BOREN_ON & CP_OFF & WDTE_OFF & LVP_OFF & FOSC_XT);
  13.  
  14. void main(){
  15.  
  16.         GIE = 1;
  17.         INTE = 1;
  18.         INTEDG = 0;
  19.  
  20.         TRISD = 0b00000000;       //PORTD kimenet
  21.         PORTD = 0b10110001;      //LED bekapcs
  22.         TRISB = 0b00000001;        //PORTB.0 bemenet
  23.  
  24.  static void interrupt EXT_isr(void){
  25.    if(INTF){
  26.  PORTD = 0b11111110;
  27.         return;
  28.      }
  29.  
  30. }
(#) Skip hozzászólása Feb 22, 2012 /
 
ha azt csinálom, hogy az interruptba ezt írom:
PORTD ^= 0xFF;
akkor kiküldi az FF-et a PORTD-re és onnantól semmire nem reagál a cucc
Következő: »»   213 / 1211
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