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   690 / 1210
(#) Pali79 válasza proline hozzászólására (») Júl 13, 2015 /
 
Hibás a linked!

Egyébként ott van a kész hex is. Mit görcsölsz a fordítással? Csak azt kell beprogramozni és kész.
A hozzászólás módosítva: Júl 13, 2015
(#) proline válasza Pali79 hozzászólására (») Júl 13, 2015 /
 
Valóban rossz a link, bocs. Helyesen Bővebben: Link, majd bal oldalt PIC menü és a legfelső projekt. Szóval mint írtam a az égető programom hibaüzenettel be sem olvassa a HEX-et. Érdekes módon sem a régebbi 350-es és a javított 360-as verziót sem. Pedig más PIC-et gond nélkül tudok programozni.

k150_hiba.jpg
    
(#) kissi válasza proline hozzászólására (») Júl 13, 2015 / 1
 
Mi a hibaüzenet ?
A PK2 azt jelzi, hogy nincsenek a hex fájlban a konfigurációs bitek , biztos ezért berzenkedik a te égetőd is !
(#) eSDi válasza proline hozzászólására (») Júl 13, 2015 /
 
Üdv!

Sajnos ezzel a K150-es progrmozóval sok probléma van (kicsit butácska szegény). Ebben az esetben, valószínűleg az lesz a probléma, amit kissi írt.
(#) proline válasza kissi hozzászólására (») Júl 13, 2015 /
 
A hozzászólásod felett van a hibaüzenet (képfile). Már kb. 5 alklommal futottam neki ennek a projektnek, emlékeim szerint a konfigurációs bitek pótlásával is próbálkoztam, viszont akkor a fordító jelzett több tucat hibát.
(#) proline válasza eSDi hozzászólására (») Júl 13, 2015 /
 
Ma rendeltem egy PICKIT3-ast.
(#) kissi válasza proline hozzászólására (») Júl 13, 2015 /
 
Bocs, a képet meg se néztem, valami linket kerestem !
Importáld be a hex-et MPLAB alá, állítsd be alatta a konfigurációs biteket és exportáld a hex fájlt a konfigurációs bitekkel !

Most néztem eszerint az MPLAB-al és az is korrupt CheckSum-ot jelez !
A hozzászólás módosítva: Júl 13, 2015
(#) Hp41C válasza proline hozzászólására (») Júl 13, 2015 /
 
Ha csak a CheckSumm a hiba, a gscope350.hex -ben a 91. sor végén a 74 -et kell átjavítani DF -re.
A hozzászólás módosítva: Júl 13, 2015
(#) proline válasza Hp41C hozzászólására (») Júl 13, 2015 /
 
Köszönöm! Ezt már elfogadja a programozó, be is írtam, ugyan a kapcsolás nem működik. Este rámérek szkóppal.
A hozzászólás módosítva: Júl 13, 2015
(#) patrik81 hozzászólása Júl 17, 2015 /
 
Mit kell módosítanom,hogy ne peregjenek a LED-ek?Csak szoftveres mód lehetséges.Ha delay-t teszek a while sor után,akkor meg se szólalnak a LED-ek.Ha egy gomb van,akkor tökéletesen működik.
  1. while(1)
  2.         {
  3.             while(RC0 && RC2);
  4.             if(!RC0 && paritas1)
  5.             {
  6.                 paritas1=0;
  7.                 RC1=1;
  8.             }
  9.             if(!RC0 && !paritas1)
  10.             {
  11.                 paritas1=1;
  12.                 RC1=0;
  13.             }
  14.             if(!RC2 && paritas2)
  15.             {
  16.                 paritas2=0;
  17.                 RC3=1;
  18.             }
  19.             if(!RC2 && !paritas2)
  20.             {
  21.                 paritas2=1;
  22.                 RC3=0;
  23.             }
  24.             while(!RC0 && !RC2);
  25.         }
(#) Zsolt2 válasza patrik81 hozzászólására (») Júl 17, 2015 /
 
Az utolso while ciklusban az es (&&) operatort csereld ki vagy-ra (||)
  1. while(!(RC0) || (!RC2));
(#) Pali79 hozzászólása Júl 17, 2015 /
 
Sziasztok!
Infra távkapcs jelét szerétném feldolgozni egy PIC16F877A van, assembly-ben. Találtam pár mintapéldát, de nem nagyon lettem okosabb. Egy vevő és a hozzá tartozó távkapcs jelét próbáltam PK2 logic analizerrel megfejteni. Ezt mutatja a mellékelt kép. Találtam róla videót is, ott azt mondják, hogy az idő amíg a jel vonalat lehúzva tartja a vevő abból lehet látni, hogy az most logikai 1 vagy 0. Viszont a kép nem ezt mutatja. Ott inkább azt lehet látni hogy mennyi időre engedi vissza magas szintre a jelet. Akkor most hogy kell ezt értelmezni?

távkapcs.jpg
    
(#) nedudgi válasza Pali79 hozzászólására (») Júl 17, 2015 /
 
Én nem sokat rágódtam, amikor egyszerűbb infra kódokat fogadtam egy PIC10F222-vel. A jelek/ szünetek váltakoznak, az időtartamuk egy bizonyos tűrésen belül állandó. A dekódolás egyszerűen a jel/szünet időtartamának mérése, összehasonlítása a tárolt értékkel. Ez még belefért a programmemóriába.
Az infra jeleket úgy dekódoljuk, hogy ha eltérés van a várttól, akkor a csomagot eldobjuk, és várjuk a következő elejét. Addig csak szemét.
Több fajta kódolás létezik. A legjobb, ha az ONsemi weboldalát tanulmányozod, nagyon jó leírásokat lehet ott találni.
A hozzászólás módosítva: Júl 17, 2015
(#) patrik81 válasza Zsolt2 hozzászólására (») Júl 17, 2015 /
 
Semmi.Meg sem szólal.while nélkül meg össze-vissza villognak.
(#) nagzso hozzászólása Júl 18, 2015 /
 
Sziasztok!
Miért nem tudok változóból értéket átadni az "extern __nonreentrant void _delay(unsigned long)"-nak (pic18.h-ban található)? XC8-at használok.
  1. #include <xc.h>
  2. ...
  3. unsigned long value = 10;
  4. _delay(value);

Ezt a hibaüzenetet kapom:
main.c:9072: error: (800) undefined symbol "__delay$0"
main.c:9076: error: (800) undefined symbol "__delay"
(#) icserny válasza nagzso hozzászólására (») Júl 19, 2015 /
 
Nem tudom, hogy XC8-ban mi a helyzet, de általában a késleltető függvényeknek a fordításkor kiértékelhető értéket, azaz konstans paramétert kell megadni.

Ha futás közben változtatható késleltetés kell, akkor írj egy olyan függvényt, amelyben ciklikusan (pl. for vagy while ciklus) hívogatsz egy egységnyi időtartamú késleltetést!

Például C18 esetén, 20 MHz-es kvarccal ellátott PIC18-hoz:

  1. /** Késleltető eljárás
  2.  *  A belső ciklus kb. 1 ms késleltetést végez.
  3.  * \param d az előírt várakozási idő, 1 ms egységekben
  4.  */
  5. void delay_ms(uint16 d) {
  6. uint16 i;
  7.         for(i=0; i<d; i++) {
  8.                 Delay1KTCYx(5);
  9.         }
  10. }


Más frekvencia esetén a Delay1KTCYx() paraméterét kell módosítani...

Azt ne felejtsük el, hogy a szoftveres késleltetés csak azt garantálja, hogy legalább az adott idő eltelt, de a tényleges késleltetés lehet több is (pl. a megszakítások kiszolgálása miatt).
A hozzászólás módosítva: Júl 19, 2015
(#) nagzso válasza icserny hozzászólására (») Júl 19, 2015 /
 
Köszi szépen a segítséget. Univerzális delay library szerűséget szerettem volna írni és pont amit mondtál, hogy a Delay1KTCYx() értéket változtattam volna változóból a különböző frekvenciákhoz. A változó értékét egy DelayInit függvényben definiáltam volna.
(#) morzsa15 hozzászólása Júl 19, 2015 /
 
Üdv!

Megépítettem ezt és olyan problémám lenne vele hogy ez egy butább verzióra van a ds1820-ra viszont nekem ds18b20-am van hogyan kellene módosítani a programot hogy rendesen működjön?
Mert jelenleg 217C-ot ír ki.

Válaszotokat előre is köszönöm!
(#) Saggitarius válasza morzsa15 hozzászólására (») Júl 22, 2015 /
 
En se vagyok meg jo programozasban, de a ket adatlapot osszevetve, en ugy latom egy 3 bitnyi left shift megoldana a gondot. (hasonlitsd ossze a digital output binary oszlopokat) A legszembeotlobb a -0.5 homersekletnel. Ezek utan latni fogod a tobbi egyezo erteknel is, pl +85, +0.5 stb
(#) kriszrap hozzászólása Júl 23, 2015 /
 
Sziasztok !
Lenne egy olyan kérdésem hogy elkezdtem egy ledkocka 3x3x3 méretet de sokaknál láttam ezt a tranyos megoldást a - elvezetésére . Elhanyagolható ez a dolog vagy inkább rakjam bele??
Ha nem rakom be akkor mit von maga után???
Segítséget előre köszönöm
(#) Pali79 válasza kriszrap hozzászólására (») Júl 24, 2015 /
 
Az attól függ milyen PIC-et és ledet használsz. Meg kell nézni az áramfelvételt, összevetni a PIC terhelhetőségével. Ha a PIC többet tud mint a ledek összes áramfelvétele akkor nem kell a tranyó. Ha kevesebbet akkor kell. Ha kellene és elhagyod jobb esetben csak nem fog működni, rosszabb esetben tönkremegy a PIC a túlterheléstől.
(#) usane válasza morzsa15 hozzászólására (») Júl 24, 2015 /
 
Saggitariusnak igaza van a B20-as 3 bittel nagyobb felbontású szenzor, ami 0.0625 fokot jelent az s20 csak 0.5 fokos felbontású. Megnéztem a programot, nem kell shiftelgetned, mert a programban már benne van, annyi az egész, hogy a TEMP_RES változót átírod 9 helyett 12-re.
Tehát az a sor így néz ki:
const unsigned short TEMP_RES = 12;
(#) usane válasza kriszrap hozzászólására (») Júl 24, 2015 /
 
Ahogy Pali is mondta függ a az alkatrészektől, főleg a LED-től, mert a mikrovezérlők nagy része nem nagyon visel el 1-2x 10mA-nél többet, itt pedig a minimum a 3 LED meghajtása ha jól emlékszem ami 60mA, feltéve hogy teljesen kihajtod a LED-eket. Persze világítanak 10mA-el is meg némelyik még 4-5mA-el is, csak az effektek szempontjából nem mindegy a fényerő.
Én beletenném, hosszabb élettartamú lesz a uC.
(#) kriszrap válasza Pali79 hozzászólására (») Júl 28, 2015 /
 
Pic16f628 és zöld led 3x3x3 led kockához
(#) Pali79 válasza kriszrap hozzászólására (») Júl 28, 2015 /
 
Nem volna rossz egy kapcsolási rajz, hogy biztos legyek, hogy egyről beszélünk, de gondolom mátrixba vannak a ledek valamilyen módon. Én a 8×8-as márixot is tranyókkal hajtottam meg, és nem csak az egyik oldalon, hanem a másikon is. De egyik oldalra mindenképp kell, mert megöli a PIC-et. Nem kell túlpörögni a dolgot a legolcsóbb BC337 már nagyon jó ide.
(#) nagzso hozzászólása Júl 28, 2015 /
 
Sziasztok!
A következő lenne a problémám és már a hajamat tépem egy ideje (XC8 a compiler):
  1. const unsigned int lastDeviceEEPROMAddress   = (deviceNumber << 5);
  2. const unsigned int penultDeviceEEPROMAddress =
  3.   lastDeviceEEPROMAddress - EEPROM_ADDRESS_PAGE_DIFFERENCE;

main.c:104: error: (188) constant expression required
PIC16F1716-be írom a programot, PIC18F2550-be írva ugyanezt, se error és rendesen működött.
Ennek így mennie kell, de mégse.
A hozzászólás módosítva: Júl 28, 2015
(#) kt hozzászólása Júl 28, 2015 /
 
Sziasztok.
Pic18f2550 el olvastam be potméter állását és küldtem el usb-n keresztül egy PC programba.
Ez tökéletesen működött amíg az USB HID programot nem Interruposan használtam.
Mióta átállítottam hogy USB Interrupt legyen, a Pic megfagy mikor elkezdem az ADC konverziót.
Valaki tapasztalt már hasonlót, mi lehet az oka ? (adc.h használom és c18 as fordítót )
(#) kriszrap válasza Pali79 hozzászólására (») Júl 29, 2015 /
 
Egyre gondolunk mert nagyon mást pic es led kockát nem láttam 3x3x3 (egyszerű a kapcs)
bc182 raktam be
(#) usane válasza nagzso hozzászólására (») Júl 29, 2015 /
 
Ha const-nak definiálod a fordítónak ismerni kell az értékét fordítási időben (konstans).
Vagy leveszed a const típusazonosítót, vagy a kivonást futási időben adod meg értékadásként.
pl. így:
  1. const unsigned int penultDeviceEEPROMAddress
  2.  
  3. penultDeviceEEPROMAddress = lastDeviceEEPROMAddress - EEPROM_ADDRESS_PAGE_DIFFERENCE;

Az, hogy miért működik a pic18 esetében annak 2 oka lehet, de ezt majd az okosabbak megmondják.Amire én tippelek:
- A PIC18 utasításkészlete jóval nagyobb. a standard is szinte duplája a PIC16-osnak, a bővítettről nem is beszélve, így a fordítónak könyebb dolga van.
- Az XC8 előtt a PIC18-ra külön fordító volt mint az elődeire, és az XC8 tapasztalatom szerint valami összegyúrt hibrid.
A hozzászólás módosítva: Júl 29, 2015
(#) Pali79 hozzászólása Júl 30, 2015 /
 
Sziasztok!
I2C-t próbálok beüzemelni 16F877A-n. Régebben ktamás66 tett közzé egy RTC rutint, az alapján idultam el, de néztem több példát is, többek közt EZT a Micrichip bemutatót is, amiben a közölt példaprogram nagy vonalakban megegyezik az említett RTC rutinnal. Szóval a gondom azzal, van, hogy nem akar működni a dolog. A szimulátor szerint a várakozó rutinnal van a gond.
  1. WaitS
  2.         banksel PIR1
  3.         btfss   PIR1,SSPIF      ; SSPIF megszakítás flagre vár
  4.         goto    WaitS
  5.         bcf             PIR1,SSPIF      ; SSPIF flag törlése
  6.     return

A gond az, hogy hiába adom ki a
  1. bsf             SSPCON2,SEN
utasítást, a flag bit nem áll egybe valamiért.
Van valakinek ötlete?
Következő: »»   690 / 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