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   312 / 1210
(#) bbalazs_ válasza andru95 hozzászólására (») Okt 2, 2012 /
 
low - fogalmam sincs, talan kisfesz programozasnal a PGM labra kell kotni
pgc - programozo orajel
pgd - programozo soros adat
gnd - negativ testpont, minusz polus, 'fold' pont
vcc - tapfeszultseg
vpp - programozo feszultseg

Ezeket a PIC megfelelo labaira kell kotni. Adatlapjaban megtalalod, hogy mely labak ezek.
A hozzászólás módosítva: Okt 2, 2012
(#) n_yálastrubadúr hozzászólása Okt 2, 2012 /
 
Jó napot!

Eljutotam addig, hogy a vevő pic az lcd- n kívül kommunikál egy másik piccel is ugyanazokon a lábakon és hasonló módon mint az lcd vel. Cserélgeti a felső és alsó biteket. Így teljesen függetlenítettem (egyelőre) a szervót. Azt vettem észre, hogy a szervó is belezavar a vételbe, 2 féleképpen is. Először is ránt a tápon, és szerintem ezzel még zajokat is kelt. Ez még akkor is észrevehető ha teljesen függetlenítem a 2 egységet. De a legfontosabb, a vétel, szerintem pont az elfogadhatóság küszöbén áll, azaz pont elfogadhatatlan a reagálási sebbessége. Elvárom, hogy ugyanúgy funkcionáljon mintha közvetlen rákötött a/d potival. Na most ez a rádió miatt van szerintem, ha lassan húzom akkor jó de ha gyorsan változtatok akkor azért észreveszem a darabosságát, ami egyáltalán nem tetszik. Ez így nem lesz összerakva. Utána néztem a foxi63 által ajánlott rádiónak. Tetszetős, de elég komolynak látszik még bekapcsolni is. De ez lehet az út, ahogy nézem 115kbps. Ha utána számolok akkor a jelenlegi csodám az 1kbps-el operál.
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Okt 2, 2012 /
 
Szia!
csak követni kell az adatlap szerinti utasításokat, eleve van példaprogram PIC re is, de tettem fel oda működő progit adásra és vételre is. Ha a PIC 5V-os akkor is megoldható könnyen a szintillesztés...
(#) beigli767 hozzászólása Okt 3, 2012 /
 
Hello!

Az lenne a kérdésem, hogy van egy pic18f6722-es picem, és az RE lábakra, pontosabban az RE0-RE7-ig nyomógombokat szeretnék bekötni. Ezek a nyomógombok idézhetnek elő különböző megszakításokat, (menürendszert kezelnének a gombok) mert ahogy olvasgattam, úgy az RB0, RB4:7 lábak vannak csak erre alkalmasak. Azt tudom hogy az idézi elő a megszakítást, hogy lehúzzuk a lábat, (tehát egy láb állapotának a változása váltja ki a megszakítást) de hogy ez pl az RE lábakon is működik, azt nem tudom, és nagyon nem is derül ki sehonnan.
(#) vilmosd válasza beigli767 hozzászólására (») Okt 3, 2012 /
 
Idézet:
„az RE lábakon is működik, azt nem tudom, és nagyon nem is derül ki sehonnan.”
Azert az adatlapbol az elso par oldalon kiderul. Az 1-3 tabla peldaul roviden leirja a labak fo funkcioit, es onnan rogvest kiderul melyik lab mire hasznalhato (DS39646c.pdf 15. oldal).
(#) diablo hozzászólása Okt 3, 2012 /
 
Sziasztok!

Lenne egy kérdésem. Ha van egy Timer1-es megszakításom és egy RB Port Change megszakításom, akkor a Timer1 megszakításban futó algoritmus futása megtud szakadni ha az RB porton megváltozik az állapot, vagy mindenképpen lefut a Timer1-es rész?
(#) icserny válasza diablo hozzászólására (») Okt 3, 2012 /
 
PIC18-nál lehet kétszintű megszakítást használni, ahol a magasabb prioritású megszakítás félbe tudja szakítani az alacsonyabb szintű megszakítás kiszolgálását. PIC16-nál vagy a PIC18 "kompatibilis" módjában nincs félbeszakítás.
(#) diablo válasza icserny hozzászólására (») Okt 3, 2012 /
 
Sejtettem.
Akkor az lesz, hogy az alacsonyabb szintű, de hosszabb futási idejű Timer1 megszakítást kiveszem az interrupt eljárásból és beteszem a főprogram végtelen ciklus magjába.
Köszöntem a választ.
(#) foxi63 válasza beigli767 hozzászólására (») Okt 3, 2012 /
 
Szia!
Ha nyomógombokat akarsz figyelni, bőven elég, ha időközönként beolvasod az adott portot(1/20 sec), ehhez igazán nem kell megszakítás.
(#) n_yálastrubadúr hozzászólása Okt 3, 2012 /
 
Sziasztok!

Ha a Portb-re írok és nekem csak a felső bitek kellenek letakarom az alsókat. pl
  1. movfw   Position.reg
  2.         iorlw   2
  3.         andlw   0xf0
  4.         movwf   PORTB


és mondjuk előtte kapcsolgatom, a Portb,1-et az hogyan lehet hatással az előbbi műveletre? Elírtam a Portb,2-őt! kapcsolgatom

Ja és a CCP1 is ?
A hozzászólás módosítva: Okt 3, 2012
(#) rammeradrian hozzászólása Okt 3, 2012 /
 
Üdv! Most kezdem tanulni a PIC programozást, építettem egy PICKit2 égetőt és MPLAB-ba írtam egy programot, a fordítás sikeresen megtörténik ám nem tudom beleégetni a PIC-be. Ezt a hibát kapom:
  1. Found PICkit 2 - Operating System Version 2.32.0
  2. PICkit 2 Unit ID = OlHoss
  3. Target power detected ( 4.96V)
  4. PIC16F887 found (Rev 0x2)
  5. PICkit 2 Ready
  6.  
  7. Programming Target (2012.10.03.  19:58:35)
  8. PKWarn0003: Unexpected device ID:  Please verify that a PIC16F887 is correctly installed in the application.  (Expected ID = 0x2080, ID Read = 0x0)
  9. Erasing Target
  10. Programming Program Memory (0x0 - 0x17)
  11. Verifying Program Memory (0x0 - 0x17)
  12. PK2Error0027:  Failed verify (Address = 0x0 - Expected Value 0x2804 - Value Read 0x0)
  13. PICkit 2 Ready

Mit csinálok rosszul, vagy mi lehet a gond?
(#) icserny válasza n_yálastrubadúr hozzászólására (») Okt 3, 2012 /
 
Ha "letakarod" az alsó biteket és movwf utasítással kiírod a PORTB regiszterbe, akkor gyakorlatilag kinullázod az alsó biteket. Biztos, hogy ezt akarod?

Ha nem ezt akarod, akkor a reg ^= ((reg^val) & mask) művelet assembly megfelelőjét kellene kitalálni.
A hozzászólás módosítva: Okt 3, 2012
(#) n_yálastrubadúr válasza icserny hozzászólására (») Okt 3, 2012 /
 
A Probléma érdekes. A szervónak küldöm a 8 bitet úgy hogy az rb0-rb3- ra a másik pic rb4-rb7-el cserélgetve. a szervó stabilan megy, de ha rángatom a gázkart ami 8 bit-tel tölti a CCPR1L regiszter akkor nagyon kicsit inog. Biztos nem az adás hibája , mert ha kikapcsolom a pwm modult nemcsinálja. Ugyanakkor ha a Küldő pic Rb,2-es lábát kapcsolgatom a távirányítóval szintén belejátszik, de épphogy. A jelenség az, hogy ha lenyomom kb egy fél millimétert balra majd ha felengedem visszamozdul? Ez hogyan lehetságes? Az alsó bitek nincsenek használva a küldéshez.
(#) icserny válasza n_yálastrubadúr hozzászólására (») Okt 3, 2012 /
 
Ne haragudj, de én ezt nem tudom követni, meg nem is akarok belemenni a kérdés szempontjából lényegtelen részletekbe. A kérdésem arra vonatkozott, hogy mi legyen a B port alsó 4 bitjével? Van rákötve valami? Gondolom, valami célod csak volt a maszkolással...
(#) n_yálastrubadúr válasza icserny hozzászólására (») Okt 3, 2012 /
 
Megpróbálom. van a küldő pic az Rb 4-7 lábait használja az adatküldéshez. az Rb0-án megszakítás van, az Rb1-en egy led, az Rb2 pwm módban van használva, az Rb3 meg a motor meghajtó ic-t engedélyezi. Ezért van takarva az alsó rész, ami amúgy felesleges is mert semmilyen kapcsolatban nincsen az adaküldés szempontjából az felső bitekkel, ennek ellenére biztosan közrejátszik mert ha bekapcsolom a ledet az alsó porton akkor félmillimétert kimozdul, ugyanez pwm modul kitöltésének változtatásával is jelentkezik. Tehát mintha az alsó bitek befolyásolnák a felsőket...
A hozzászólás módosítva: Okt 3, 2012
(#) icserny válasza n_yálastrubadúr hozzászólására (») Okt 3, 2012 /
 
Ha csak a felső bitekre akarsz adatot kiírni, akkor szerintem nem úgy kellene csinálni, ahogy írtad, hanem úgy, ahogy mutattam. Az assembly változat talán ez lehet:
  1. XORWF PORTB,W
  2. ANDLW 0xF0
  3. XORWF PORTB,F


Előre is bocs, ha elrontottam valamit (nem használok PIC16-ot)!

Valószínűleg meg kellen nézni az alsó biteket matató kódodat is, mert abban is lehet gixer.
(#) n_yálastrubadúr válasza icserny hozzászólására (») Okt 3, 2012 /
 
Próbálkozom, gyakorlatilag ez a bajom már csak. Áldoztam a hatótávból, felgyorsítottam az átvitelt, így hűen követi az analog kar mozgását. Erre meg alszom egyet. ami érdekelne megint teljesen általános. 10f200 ban használtam sleep módot. Ott akármelyik láb változás felébresztette. Pl egy 16f887-es miért csak megszakításra ébred fel. Nem lehet bármelyik lábára állítani a változásra ébredést?
(#) szaffo555 hozzászólása Okt 3, 2012 /
 
PIC18F en szeretnék Remappable lábakat használni. Ehhez a PPSCON, IOLOCK bitet kell először feloldani.
Első kérdésem az, hogy a IOLOCK bit reset után 0 értékű, ebben az állapotban I/O lock not active, pin configurations can be changed. Tehát hol a védelem?
Második kérdés, hogy doksi javaslata szerint az alábbi kódban is elhelyezett seqvencia kell az IOLOCK bit biztonsági okokból történő oldásához. (Láthatóan itt is BCF el nullázza először IOLOCK bitet (7. sor), mintha eleve nem ott lenne...)
Az EECON2 access elérésű, és movwf EECON2 sorokban alapban oda is címzünk, így ez rendben. De a PPSCON regiszter a Bank 14 ben van, a bcf PPSCON, IOLOCK esetén hol látszik, hogy oda címezünk? Én így csinálnám: bcf PPSCON, IOLOCK,1. Most akkor hol az igazság?

íme a doksi egy példakódja:

  1. movlb 0x0E ;Select bank 14
  2. bcf INTCON, GIE
  3. movlw 0x55
  4. movwf EECON2
  5. movlw 0xAA
  6. movwf EECON2
  7. bcf PPSCON, IOLOCK
  8.  
  9. bsf INTCON, GIE
  10. movlw 0x03
  11. movwf RPINR21    ;SPI Bus -os példa
  12. movlw 0x0A
  13. movwf RPOR4
  14. movlw 0x04
  15. movwf RPINR22
  16. movlw 0x09
  17. movwf RPOR5
  18.  
  19. bsf PPSCON, IOLOCK
  20. movlb 0x0F ;


A kódot futtatva simulátoron nem látszik EECON2 regiszterben W értéke. Miért?
Ráadásul úgy lockolja IOLOCK -ot (19. sor), hogy nem futtatja újra a kód seqvenciát. Megteheti? Más példából és a szöveg alapján úgy értettem nem.
És még egy kérdés: Config Word ben lévő IOL1WAY bit arra való, hogy az IOLOCK -ot egyszer vagy bármennyiszer lehessen módosítani?
A hozzászólás módosítva: Okt 3, 2012
(#) beigli767 hozzászólása Okt 3, 2012 /
 
Hello!

Timer1 modullal szeretnék megszakítást órához. Valamiért nem szakít meg a program, és nem tudom hol a hiba. 32kHz-s kristályt használok.
A két mellékelt file a main.c és a configurációs beállításokat tartalmazó header.
(#) Izeg. hozzászólása Okt 4, 2012 /
 
Tiszteletem!
Most kóstolgatom a pic programozást, és az lenne a kérdésem hogyha meghívom a CALL utasítással egy programrészt,(jelen esetben ez a késleltetés) akkor ha én megnyomok egy gombot, hogyan tudom az időt ebben a programrészben módosítani.
például: megnyomok egy gombot és csökkenti a kapcsolás idejét(léptetőmotor vezérlőt építek)
egyébként négy port a kimenet, eddig három a bemenet de ez majd nő ötre mert a balra,jobbra,stop gombok mellé még kell így majd a sebesség növelés, és a sebesség csökkentés.
a programot pic simulator ide-evű programmal írom, eddig megfelelően működik a program, viszont most elakadtam
A mikrovezérlő PIC16F84
Ha valaki tudna segíteni, azt nagyon megköszönném!

STEPPER.asm
    
(#) foxi63 válasza Izeg. hozzászólására (») Okt 4, 2012 /
 
Szia!
Meglehetősen kesze-kusza a programod, de ha a késleltetés idejét letárolod egy változóban (legyen xy), akkor amikor meghívod a késleltető szubrutint beolvassa a tárolt számot, és az szerint számol. Ha változtatod xy-t akkor annak megfelelő ideig számol majd.
A segédprogramot nevezd át : delay16.exe -re
A hozzászólás módosítva: Okt 4, 2012

delay16.ex
    
(#) Izeg. válasza foxi63 hozzászólására (») Okt 4, 2012 /
 
Nagyon szépen köszönöm!
keszekusza,de örülök hogy működik Tekintve hogy ez az első programom.
(#) foxi63 válasza n_yálastrubadúr hozzászólására (») Okt 4, 2012 /
 
Szia!
Programrészlet?
A szervonak küldött 8 bit hogyan áll fel ? nyilván kiküldöd a felső 4 bitet, ezután az alsót vagy fordítva.... Biztosan benne marad valahogy a b port alsó 4 bitje. Különben tényleg nem szólhat bele.
(#) tmka27 hozzászólása Okt 5, 2012 /
 
Sziasztok!
Nemrég kezdtem el PIC-ekkel foglalkozni, szóval még igencsak új vagyok a témában.
Építettem egy tesztkályha-vezérlésre szolgáló panelt, amit majd egyszer, ha valaha is eljutok arra a szintre, akkor jó volna felprogramozni, de most első nekifutásra csak a kijelzőjébe szeretnék életet lehelni (Raystar1602b 2x16 LCD).
Fejlesztői környezetként MikroC-t használok a kifinomult helpje miatt. Az itt található LCD példaprogram legelejét az én lábkiosztásom szerint átírtam. Buildelés után nem volt hiba.
Az első akadályba akkor ütköztem, amikor a MikroC égetőjénél nem tudtam kipipálni, hogy a programozón keresztül kapja a PIC a 3.3V-ot. Hibaüzenetként mindig azt írta ki, hogy: "Connected developmet tool does not support this option."
Ezután lementettem a HEX file-t, PICkit2-vel importáltam, majd sikeresen fel is töltöttem a programot a PIC-re. Bekapcsolás után viszont a kijelzőn csak a kis fekete téglalapocskák voltak, semmi más..
Az első kérdésem arra vonatkozna, hogy a mikroC-ben miért jelent meg a hibaüzenet, illetve, hogy hogyan lehet ott beállítani a 3.3V-os feszt.
A másik és igazából fő kérdésem pedig magával a kudarccal kapcsolatos, hogy volna-e valakinek ötlete, hogy miért nem jelenített meg semmit sem a kijelző.
(Amiről tudok, azt próbáltam előzetesen beállítani: MikroC projectwizard- jában a PIC fajtáját, az osc.-t, default gombocskára rányomtam, WDT-disable, OSC-HS, az új verzióban LVP-t nem találtam;
A pickit 2-ben kiválasztottam hogy PIC18fxxj60-as család, VDD-t pedig 3.3V-ra állítottam. )
Mellékelem a használt kódot, és a kapcsolási rajzot. Maga a kód nem túl bonyolult, de lehet, hogy valami triviális dolgot nem állítottam be, vagy nem jól állítottam be, nem tudom.. de elég tanácstalan vagyok, mivel a program példaprogram, amiben nem volt hiba, maga az égetés is sikerült.. nem tudom, lehet hogy hardwares a probléma, és a bekötéssel van a baj?
Ennek a kiderítésében szeretnék egy kis segítséget kérni, amit előre is köszönök szépen!
(#) Mikro válasza tmka27 hozzászólására (») Okt 5, 2012 / 1
 
Szia!
Az első kérdésedre a válsz az hogy, a mikroC nem kezeli a PICkit2 programozót. Ezért a mikroC -ben megírt és lefordított programot csak a PICkit2 programjával tudod beprogramozni a PIC-be.
A második válasz az hogy az LCD "R/W" vonalát nem a példa kapcsolás és program szerint kötötted be ( R/W --> GND). Te össze kötötted a PIC RB3 lábával. Így két lehetőséged van:
- elvágod az összekötést és az R/W lábat GND-re kötöd.
- a programodba az RB3 lábat kimenetnek és 0 -nak állítod be.
(#) tmka27 válasza Mikro hozzászólására (») Okt 5, 2012 /
 
Köszönöm szépen a gyors választ!
Való igaz, most már látom a hibát, amit írtál. A kapcsolást nem eszerint a példa szerint csináltam, ezt csak később találtam, és valahogyan elkerülte a figyelmemet ez az eltérés. Köszönöm, hogy felhívtad rá a figyelmem!
Sajnos most nincs lehetőségem forrasztani, szóval marad a 2. javaslatod.
Viszont pont azért ebbe a fórumba írtam, mert kezdőként még ilyen alap dolgokban is bizonytalan vagyok. Próbáltam utánanézni, hogy mit és hova kellene írnom, de sajnos nem igazán tudok még kiigazodni az olvasottakon.
(• TRISx: Adatáramlási irány regiszter
• PORTx: I/O Port regiszter
• LATx: I/O Latch (adat retesz) regiszter
Ezek közül kell esetleg valamelyiket használnom majd?)

Ezért szeretnék ebben is egy kis segítséget kérni, hogy konkrétan a javaslatodat hogyan kell megvalósítani, mit és hova kell beírnom?

A segítséget utólag, és előre is köszönöm szépen!
A hozzászólás módosítva: Okt 5, 2012
(#) vilmosd válasza tmka27 hozzászólására (») Okt 5, 2012 /
 
Eloszor is a LCD nem hasznalt labait le kell kotni GND-re. Utana meg kell nezni, hogy lehet-e a kontrasztot allitani. Ezek utan talan meg kellene nezni szimulatorban, a labak mukodeset, es az idoziteseket. Sajnos a MikroC nem fut MPLAB alatt (es ez csak az egyik hibaja) igy nem tudod a MPSIM szimulatort hasznalni. Sajnos a fordito libjei nem mindig allnak a helyzet magaslatan. Vannak azert mas C nyelvjarasok is amiknek jo a helpje, es fut MPLAB alatt. Pl a CCS C.
(#) tmka27 válasza vilmosd hozzászólására (») Okt 5, 2012 /
 
Igen, igazad van, ne haragudj kérlek! Az én figyelmetlenségi hibám, hogy a kapcsolásban elfelejtettem berajzolni a nem használt lábak földre kötését. A panelen viszont ez megtörtént.
A problémát valószínűleg az okozta, amire Mikro felhívta a figyelmem, hogy a helpben, a rajzon amihez a program készült az R/W láb földre van kötve, nekem pedig a PIC RB3-as lábához. Erre írta Ő megoldásként, hogy ezt a lábat kimenetnek és nullának kell állítanom.
De sajnos nem tudom, hogy ezt hogyan kell megtenni. Ezért ha még ebben tudnál segíteni, akkor azt nagyon szépen megköszönném!
(A kontrasztot már beállítottam)
(#) Mikro válasza tmka27 hozzászólására (») Okt 5, 2012 /
 
TRISB.B3 = 0;
LATB.B3 = 0;
Ezek az adott láb beállítasai, de 18f67j60 adatlapján meg kell nézni hogy az RB3 láb lehet e adc vagy egyéb periféria mert akkor azt előbb le kel tiltani a megfelelő regiszter beállításával.
A hozzászólás módosítva: Okt 5, 2012
(#) n_yálastrubadúr hozzászólása Okt 6, 2012 /
 
Jó reggelt!
A kérdésem már feltettem, hogy egy 18f2550 usb része tönkre mehet e egy d+ d+ cserétől? A gépem eládásra itéltetett, ezért jó lenne életet lehelni belé. Már találtam egy remek cél ic-t Usb to Parell port-ra a Hq-ban kapható ft245rq. Visszatérve, a múltkori óta kipróbáltam a Trisc4,5 bementeként konfigurálható és működik is egy egyszerű programmal. De ha feltöltöm a Pickit2 könyvtárában a Pickit2 hex file-t nem ismeri fel, hogy lenne ott valami. Először anno mikor próbálgattam úgyemlékszem, hogy ezzel a kóddal azonnal felismerte és egyéb egyszerű voltmérő stb, amik ugyan 4Mhz-en mentek jó volt. Nemtudom mi mehetett használaton kívűl tönkre, vagy milyen belső beállítást lehetett kitörölni véletlen, vagy a Vusb lábbal lehet valami. Azt kipróbálni nemtudom.Szóval gőzöm sincsen.
Következő: »»   312 / 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