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   754 / 1216
(#) hapci hozzászólása Feb 19, 2016 /
 
Szervusztok!
Külső RC oszcillátorral bűvölgettem egy PIC16F628A-t, és véletlenül kitöröltem az MCLR_ON-t, de az LVP_OFF maradt. (Azt hiszem, más bajt nem csináltam...) Lehet ebbe még életet lehelni?
(#) Bakman válasza hapci hozzászólására (») Feb 20, 2016 /
 
Valószínűleg ez kell neked: Bővebben: Link.
(#) nagym6 válasza Bakman hozzászólására (») Feb 20, 2016 /
 
Nem tudom, de szerintem egy "erase" után mindent újra lehet, vagy csak a config is újraírható.
Vagy tévedek, de mintha így megoldható lenne.
(#) Bakman válasza nagym6 hozzászólására (») Feb 20, 2016 /
 
Szerintem az alap probléma az, hogy nem tudja a kontrollert programozási módba kapcsolni.
(#) hapci válasza Bakman hozzászólására (») Feb 20, 2016 /
 
Igen, sőt az a gyanúm, hogy a programozási próbálkozással a már portként működő láb Vpp-t kapott, ami végleg begyógyította. Még szerencse, hogy a lába is elgörbült ...
(#) eSDi válasza hapci hozzászólására (») Feb 20, 2016 /
 
Üdv!

Nem hinném, hogy bármi baja is lenne (van rajta védelem). Használd a Vpp first programozási módot és szedd le róla az RC oszcit, hogy véletlenül se induljon el a benne lévő program.
(#) PLaci hozzászólása Feb 20, 2016 /
 
Sziasztok!
Légyszi írjátok meg, hogy az MPLAB 8.86-ban hogy lehet a szimulátorban egy adott pillanatban
beinjektálni egy byet-ot az RCREG regiszterbe?
Hogy érthető legyen: egyenként lépegetek a program utasításain, majd elérek a:
  1. RX_OK:          btfss   PIR1,RCIF               ; ha a bit H
  2.                         goto    RX_OK
  3.                         return                                  ; kész a 8 bit vétele

részig, de innen végtelen hurok, mert a PIR1RCIF csak akkor lesz 1 ha az RCREG értéket kapott.
Ennél a huroknál szeretnék egy értéket beírni RCREG-be.
Segítsetek hogy kell?
A hozzászólás módosítva: Feb 20, 2016
(#) Pali79 válasza PLaci hozzászólására (») Feb 20, 2016 /
 
A stilulusban kell egy workbook-ot csinálni és ott be tudod állítani, hogy kattintásra állapotot váltson a bit.
A hozzászólás módosítva: Feb 20, 2016
(#) PLaci válasza Pali79 hozzászólására (») Feb 20, 2016 /
 
Köszi a gyors választ! Részleteznéd? Eddig én is eljutottam, hogy ott kell valamit csinálni de tovább nem megy
A PIR1 regisztert fel sem ajánlja
Úgy kezdődik, hogy ott van 6 fül. Melyikkel kell csinálni és mit?
Bocsi a Lámaságomért de ez a PIC kezdő talán megbocsájtható
A hozzászólás módosítva: Feb 20, 2016
(#) Hp41C válasza PLaci hozzászólására (») Feb 20, 2016 /
 
Készíts egy adatállományt:
  1. wait 2 sec
  2. 7F 30 30 30 30 30 30 30 30

Debugger / Stimulus -> New stimumus. Register Injection: RCREG, adatállományból és add meg az adatállomány nevét. Apply.
fordítds újra a programot. tegyél töréspontot a RCIF kiszolgáló rutinra. Indítsd a programod...
(#) PLaci válasza Hp41C hozzászólására (») Feb 20, 2016 /
 
Ok. Köszi mindkettőtöknek! Ki fogom próbálni amit írtál. Remélem sikerül. ?ajd beszámolok. Addig is köszi!
(#) PLaci válasza PLaci hozzászólására (») Feb 20, 2016 /
 
Egy hibát már megtaláltam (olyan pici volt a szimulátor ablaka, hogy az alsó sor nem látszott ahol a mentés is van) Most mentettem, de még mindig nem megy Az adatállományba pontosan azt kopyztam be amit írtál. A sorszámok nem kellenek ugye? A wait 2 sec azt jelentené, hogy 2 másodperc múlva aktiválódik? Ha igen akkor ezt a szimulátor az utasítás végrehajtási időből számítja ki?
(#) Hp41C válasza PLaci hozzászólására (») Feb 20, 2016 /
 
A Debugger / Settings / "Osc / Trace" lapon be kell állítani az órajel frekvenciáját.
A "wait 2s" pontosan 2 másodperc várakozást ír elő. A stimulus maga a reset -tel egyszerre aktivizálódik.
A 1. és 2. számokat a fórum motorja teszi be, nem kell az adatállományba.
A hozzászólás módosítva: Feb 20, 2016
(#) brato válasza PLaci hozzászólására (») Feb 20, 2016 /
 
Itt egy leírás a stimulusról.

stimulus.pdf
    
(#) PLaci válasza Hp41C hozzászólására (») Feb 20, 2016 /
 
Nagyon szépen köszi mindenkinek a segítséget! Megoldódott a dolog. Szépen működik, és amikor az RCREG megkapja az értéket akkor az RCIF flag is szépen bebillen
Legyen jó hétvégétek! Nekem már az lett
(#) hapci válasza eSDi hozzászólására (») Feb 20, 2016 /
 
Köszönöm a tanácsot, de PK3-al nem tudok ilyet csinálni, és most már egyébként sem ismeri fel a kontrollert.
A JDM többször kisegített, mert a+5V-ja egy 1k, 20u párossal valamit késleltet, de most becsődölt: configra vad dolgokat mutat, a memória meg egy darabig 0x0, utána 0x3fff.
Összerakok majd egy LPT kapcsolást, hátha látom majd a csodát, de ha a PIC azt csinálja, amit az adatlap ír, akkor - szerintem - itt nincs tovább programozás.
(#) kissi válasza hapci hozzászólására (») Feb 20, 2016 /
 
Idézet:
„Köszönöm a tanácsot, de PK3-al nem tudok ilyet csinálni”

Hogyne tudna !
Használd a PK3 saját programozóját --> Tools --> Use VPP First Program Entry-t !
(#) Hp41C válasza hapci hozzászólására (») Feb 20, 2016 /
 
A RA5 fel van készítve a Vpp feszültség fogadására, így az ott megjelenő Vpp nem károsítja. Sőt, a "Vpp first programming entry" módban ez a láb kap feszültséget előbb.
Az RB4 lábat ellenállással húzd le a Vss -re, rontsd el a külső RC oszcillátort. Próbáld meg programozni.
(#) PLaci válasza PLaci hozzászólására (») Feb 21, 2016 /
 
Sziasztok!
Még egy utolsó észrevétel: Ha a txt-ben 8-nál több bytot adok meg akkor is csak az első 8-t tölti be a szimulátor az RCREG-be. Ezután megint nem lép tovább mert az RCIF soha nem billen H-ba.
Ennek így kell lenni, vagy megint én rontok el valamit?
(#) Zsora válasza PLaci hozzászólására (») Feb 21, 2016 /
 
Véletlenül nem 8 Byte mélységű az RX buffer, és a 9. írás után túlcsordulás történik?
(#) Hp41C válasza PLaci hozzászólására (») Feb 21, 2016 /
 
Az egy sorba írt adatokat közvetlenül egymás után "küldi" a szimulátor. Ha nem veszed ki elég gyorsan, ráfutási hiba keletkezhet. Az USART csak tiltés és újraengedélyezés után lesz képes fogadni adatokat.
(#) PLaci válasza Hp41C hozzászólására (») Feb 21, 2016 /
 
Köszi a leírtakat! A programom egyesével veszi ki a bytokat. Ezután összehasonlítja egy-egy konstanssal. Ha egyezik akkor kéri a következőt, ha nem akkor elágazik a program hibára.
Először 7 bytot kérek be (eddig jó) Itt a PIC pár utasítást csinál. (portbiteket ír) ezután megint vár a soros porton 6 bytot. ebből az első bejön hiba nélkül, és a másodikra már hiába vár.
Maga a program jó, mert ha nem szimulátorban futtatom hanem élesben a beégetett PIC-el (a PC USB portjáról kapja az adatokat egy CP2102-n keresztül) akkor minden működik hibátlanul.
Végül is már így a 8 byte-al is használható, csak nem tudom miért nem fogad el többet
(#) Hp41C válasza PLaci hozzászólására (») Feb 21, 2016 /
 
Abban az input.txt -ben, amit feltöltöttem, van 9 karakteres sor is, mégis működik. Igaz a programom egy 16 byte -os körbe forgó buffert használ az adatok vételére. Az RCIF megszakítás csak a bufferbe ír, a főprogram onnan szedi ki a karaktereket feldolgozásra. A választ is egy ilyen bufferbe írja. A TXIF kiszolgáló onnan veszi ki az elküldendő adatot, ha van benne, ha nincs letiltja a TXIF -et.
(#) hapci válasza Hp41C hozzászólására (») Feb 21, 2016 /
 
Köszönöm a segítséget! A módosítással a PK3 gond nélkül felismerte a PIC-et és az első hibás utasítás kivételével a jó programot olvasta (majd utána helyesen programozta):
000 0000 3FFF 3FFF 3FFF 2805 00A0 0E03 00A1
008 108C 03A5 1D03 280F 3004 0686 xxxx xxxx
048 xxxx xxxx 1010 1112 2848 3FFF 3FFF 3FFF
Az RC oszcillátor miatt próbáltam a PWRT késleltetést. Esetleg ez tette a NOP-ot a kezdőcímre vagy a sikertelen törlési próbálkozás?
A hozzászólás módosítva: Feb 21, 2016
(#) Hp41C válasza hapci hozzászólására (») Feb 21, 2016 /
 
Ha nyomkövetést szeretnél végezni, a legelső utasításnak nop -nak kell lennie. Szerintem egy nyomkövetési próba tette a nop -ot a 0 címre.
(#) Tomi111 hozzászólása Feb 24, 2016 /
 
Üdv Mindenkinek!

A következő a gondom: MPLab-ban változókat kellene beállítani PIC16F819-ben. Nem akar összejönni. Ezt próbáltam:
_I1 EQU 0x30
_I2 EQU 0x31
_I3 EQU 0x32
_I4 EQU 0x33
_B1 SET B'11111111'
_B2 SET B'11111111'
_B3 SET B'11111111'
_B4 SET B'11111111'


...

_B1 SET B'01001100' Így működik, a kiírja a _B1 tartalmát PORTB-re
MOVLW _B1
MOVWF PORTB

...

_B1 SET B'11111111' Ha így megadom egymás után a _B-t, akkor nem írja ki
_B2 SET B'11111111' helyesen.
_B3 SET B'11111111'
_B4 SET B'01001100'
CALL kiiras



...
kiiras: MOVLW _B1 ;első digit
MOVWF PORTB ;_B1 PORTB-re
MOVLW B'11111101'
MOVWF PORTA ;PORTA első
CALL ido2 ;vár
MOVLW B'11111111' ;PORTB töröl
MOVWF PORTB
MOVLW B'11111111' ;PORTA töröl
MOVWF PORTA ;PORTA töröl
MOVLW _B2 ;második digit
MOVWF PORTB
MOVLW B'11101111'
MOVWF PORTA
CALL ido2
MOVLW B'11111111'
MOVWF PORTB
MOVLW B'11111111'
MOVWF PORTA

Először a _B változókat is EQU 0x34, 0x35, ... módon adtam meg, így sem jó.
(#) Hp41C válasza Tomi111 hozzászólására (») Feb 24, 2016 /
 
Abszolut vagy relokálható forrást fordítasz?
(#) c27 hozzászólása Feb 24, 2016 /
 
Sziasztok!

Egy 18f4431-es pickel foglalkozok, most kezdtem el a C-t és olyan kérdésem lenne, hogy ha az An0 és An1-re egy-egy poti van kötve és annak a helyzetét szeretném beolvastatni az adc-vel, akkor azt hogy tehetem meg?
Nagyjából megcsináltam a beállításokat (C18 fordító van most telepítve), ha jól értelmezem akkor az ADCHS regiszterben kéne beállítani a csatornát pl. ADCHS = 0b11111100 //AN0 és ezután mehet az adcon0bits.Go = 1 ... majd ha lement az átalakítás csatornát váltok és újra elindítom az adc-t?
(#) Tomi111 válasza Hp41C hozzászólására (») Feb 24, 2016 /
 
Üdv! Hát jó kérdés. Ez mit jelent? Én egyszerűen megírtam MPLab-ban, majd a project/quickbuild menüben lefordítom. A _B1,2,3,4 változók értéke a program során többször változna, ezt kellene kiirni a PORTB-re. Mind a 8 bitet. Eddig amit írtam, abban a #DEFINE utasítással bitenként elneveztem a kimeneteket és egyenként állítottam, az működött. Most a 8 kimenetet egyszerre szeretném(PORTB-t). Egyszerű program, konkrétan 4 db hétszegmenses kijelzőn szeretnék szöveget kiírni. Semmi megszakítás, Eprom használat, csak a programból. A PORTA 1,2,3,4 bitje a négy szegmens anódjai( közös anódos), a PORTB nyolc bitje a 7szegmens és a tizedes pont(ezt nem használnám)katódjai. Ez nem jön össze.
A hozzászólás módosítva: Feb 24, 2016
(#) kissi válasza Tomi111 hozzászólására (») Feb 24, 2016 /
 
Szia!
Idézet:
„A _B1,2,3,4 változók értéke a program során többször változna, ezt kellene kiirni a PORTB-re.”

Változókat létre tudsz hozni a SET-el, pl.
  1. VALT_1   set  0x20
  2. VALT_2   set  0x21
  3. VALT_3   set  0x22


Én a következőképpen szoktam ezt:
CBLOCK 0x20
VALT_1
VALT_2
VALT_3
ENDC


Így a 0x20 memóriahelytől kezdődően a cellák el lettek nevezve VALT_1, VALT_2 és VALT_3 néven ( azért 0x20, mert ott kezdődnek a szabad cellák a te PIC-edben! )!

Ezután, ha értéket akarok nekik adni, akkor:
  1. MOVLW  10110010B
  2. MOVWF  VALT_1
  3. MOVLW  0x18
  4. MOVWF  VALT_2
  5. ...


Ha az adott változók értékét ki akarom rakni a PORTB-re és a PORTA-ra, akkor pl.
  1. MOVF  VALT_1,W
  2. MOVWF  PORTB
  3.  
  4. MOVF  VALT_2,W
  5. MOVWF  PORTA
  6. ...


Remélem érthető volt ( a szimulátor azért sokat segítene, ha használnád, mert akkor látnád, hogy mi történik !) !?
Következő: »»   754 / 1216
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