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   5 / 1209
(#) Smith válasza surda2000 hozzászólására (») Jún 29, 2008 /
 
PIC16F690

Ez a két sor pontosan mit is csinál?

MOVLW B'00000100'
MOVWF CMCON

Hogy lehet az hogy én akarom használi ezeket a kimeneteket, akkor hogyan használhatja ezt egy másik egység? És ha kapcsolgatom akkor miért csak mindig az utolsóként megadott port átbillentés érvényes?
(#) surda2000 válasza Smith hozzászólására (») Jún 29, 2008 /
 
Ennek a PIC-nek a komparátormodulja pont máshogy működik mint a többinél Pl.:16f877. Annál ezzel az utasítással kapcsolható ki a komparátormodul.
A te problémádat a következő orvosolja:

BCF STATUS,RP0 ;Bank 0
BCF STATUS,RP1 ;
CLRF PORTC ;Init PORTC
BSF STATUS,RP1 ;Bank 2
CLRF ANSEL ;digital I/O
BSF STATUS,RP0 ;Bank 1
BCF STATUS,RP1 ;
MOVLW 0Ch ;Set RC<3:2> as inputs
MOVWF TRISC ;and set RC<5:4,1:0>
;as outputs

Ha megnézed az adatlapot, találsz egy olyat, hogy: INITIALIZATION CONDITION FOR REGISTER
vagyis, hogy bekapcsolás után melyik regiszter mit fog tartalmazni. Ez szerint az ANSEL és az ANSELH regiszterek is 1-eseket, aminek a jelentése: Bemenetek lesznek az analóg-D konverternek.
És ezzel talán megadtam a választ utolsó kérdésedre: Sok periféria osztozik egy-egy lábon, a portok leírásánál az adatlapokon megtalálod az inicializáló részt is (ezt másoltam be). Sok sikert a folytatáshoz.

(#) Smith válasza surda2000 hozzászólására (») Jún 29, 2008 /
 
Sikerült felfogni. Már akár mind a 4 LED-et képes vagyok bekapcsolni

Ugye 4 bank van 0,1,2,3. Miért van az hogy több bankban is van ugyanolyan nevű regiszter?

Pl. a PORTA, PORTB, PORTC ugyanúgy megvan a 0-s és a 2-es bankban is. Most amikor bekapcsolom a LED-et valamelyik porton, akkor előtte kiválasztom a 0-s bankot, majd a bsf-fel bepöttyintem. Ez eddig egyértelmű. Miért van ugyanaz a regiszter másik bankban is?
(#) surda2000 válasza Smith hozzászólására (») Jún 29, 2008 /
 
Ezt tükrözésnek hívják.
Az IC kialakítása során ezt így oldották meg, gyakorlatilag ugyanahhoz a tartalomhoz férsz hozzá.
Gyakorlati szempontból ami megvan a 0. bank-ban azt ott egyszerűbb kezelni stb.
(#) telectro hozzászólása Júl 4, 2008 /
 
hali

szeretnék, egy olyan megoldást ami egyik helyen lévő 12 különböző kapcsolónak(érzékelőnek) az állapotát egy másik helyen ami kb. 20 méterre van az egyik helytől megjeleníteni.
ez önmagában nem lenne túl bonyolult feladat, ha sok-sok vezetékem lenne a két hely között, de csak 4szál drótom van.
ezért gondoltam arra, hogy valamilyen soros vonalon lehetne elküldeni az infót.

a kapcsolóknak az állapotát, le tudom tenni TTL szintre és a vevő oldalon meg ledeket szeretnék meghajtani a kapcsolók állapotának megfelelően.

probléma az is, hogy elektronikai szempontból meglehetősen zajos ez a környezet, tehát valami stabilan működő soros protokollra lenne szükség.
azt hiszem az rs485? jó lenne erre. (ha jól gondolom)

tud valaki erre esetleg egy már kész rajzot és programot vagy linket küldeni ?

köszi

zsolt
(#) potyo válasza telectro hozzászólására (») Júl 4, 2008 /
 
Az elgondolás jó, az RS485 pont ilyesmire van kitalálva, feltéve, hogy csavart abból a négy drót közül legalább kettő. Pl. UTP kábel nemis drága, pont jó lenne a 20m távolságra. Csavart érpár nélkül nemigazán érdemes nekiállni, még ha működik is, akkor is lesz szoftveres meló a rendesen, mire stabil kapcsolatot sikerül összehozni.

De azt, hogy valaki kész rajzot és programot mutat erre, azt azért te sem gondolhattad komolyan...
(#) telectro válasza potyo hozzászólására (») Júl 4, 2008 /
 
köszönöm válaszod.

én nem gondolok semmit, de hátha már valaki csinált ilyet vagy valahol a neten belebotlott egy pont ilyen vagy akár csak hasonló kapcsolásba.

mert egy házat mégiscsak könyebb átalakítani mint egy újat építeni.
időnként olyan komoly cuccokat lehet lelni a neten, hogy csodálkozok, hogy ezt miért is tette közszemlére...
(#) Smith hozzászólása Júl 5, 2008 /
 
Itt ez a kis program. Annyit csinálna hogy az A3 porton van egy gomb, ha azt lenyomnám akkor a C0 porton lévő LED elkezdene világítani. Az a baj hogy most igy állandóan világít és nem értem miért, mi az amit rosszul csináltam? Elméletileg beállítom az A3-at inputra, a C0-t outputra, és a ciklusban a BTFSS-sel figyelem az A3-at, és ha alacsony szintre kerül akkor a következő sorban bekapcsolja a LED-et. De mégsem jó valami...

#include
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
org 0

Start:

BCF STATUS,RP0 ;Bank 2
BSF STATUS,RP1 ;
CLRF ANSEL ;digital I/O

BSF STATUS,RP0 ;Bank 1
BCF STATUS,RP1 ;
BCF TRISC,0 ; C0 kimenet
BSF TRISA,3 ; A3 bemenet

bcf STATUS,RP0 ;Bank 0
bcf STATUS,RP1 ;

BCF PORTC,0

Loop

BTFSS PORTA,3
BSF PORTC,0
NOP

goto Loop

end
(#) Norberto válasza Smith hozzászólására (») Júl 5, 2008 /
 
Idézet:
„ha alacsony szintre kerül akkor a következő sorban bekapcsolja a LED-et.”


De ha egyszer bekapcsolod, akkor ki is kéne kapcsolni (méghozzá a cikluson belül), miután a feltétel már nem teljesül, nemdeugye?
(#) Smith válasza Norberto hozzászólására (») Júl 5, 2008 /
 
Nem értem mire gondolsz :help:

Alapból nem kellene világítania hiszen amíg nem nyomom le a gombot addig nem kap olyan utasítást amitől bekapcsolódna a led. Hisz a ciklus előtt a BCF-el lekapcsoltam. Elindul a ciklus, megnézi hogy lenyomtam-e a gombot, ha nem nyomtam le akkor kihagyja a következő sort, jön a NOP majd megint indul a ciklus. Ha egyszer lenyomtam akkor elkezd világítani és úgy is marad.

Vagy teljesen rossz a gondolkodásom?

(ez egy PIC16F690)
(#) Norberto válasza Smith hozzászólására (») Júl 5, 2008 /
 
A gondolatmenet ott akad el, amikor a programod belép a végtelen ciklusba.

Azt figyeled, hogy történt-e gombnyomás. Ha igen, okosan kiadod a BSF xx parancsot az adott portlábra. DE! A másik lehetőséget/állapotot is kezelni kéne, azaz amikor egyszer lenyomtad a billentyűt korábban, de már nem nyomod, elengedve van. Ezt az esetet is le kell kezelni a programban, mert saját magának nem adhat utasítást a uC, hogy: na a delikvens most nem nyomja, akkor ismét alaphelyzetbe kell állítani a kimeneti portot. Erről mind neked kell gondoskodnod, szoftverben!
(#) Smith válasza Norberto hozzászólására (») Júl 5, 2008 /
 
Értem, igazad van, de ez a program még egyelőre ott tart, hogy csak kapcsolja be a LED-et.

Azt nem birom felfogni hogy miért világít? Beletöltöm a PIC-be, nem kellene hogy világítson. Miért hajtja végre a BSF PORTC,0 parancsot??? Elvileg még hozzá se nyúltam a gombhoz, nem lehet alacsony szinten az A3 port. Márpedig ha nincs alacsony szinten akkor nem szabadna a BSF parancsnak végrehatódnia.
(#) Smith válasza Norberto hozzászólására (») Júl 5, 2008 /
 
MEGOLDÓDOTT !!!!!

A program végig jó volt

Az van ugyanis hogy ez a láb, egyben az MCLR is, és ez valahogy belekevert a dologba, ha MPLAP-ból működtettem a demo panelt. Most simán a pickit programozóval csináltam, és csak VDD-t pipáltam ki, az /MCLR-t nem piszkáltam. És igy most jó a program, bekapcsoláskor sötét a LED, aztán ha magnyomom a gombot akkor világít

Az MPLAB-ból hogyan lehet ezt az MCLR dolgot kiküszöbölni?
(#) potyo válasza Smith hozzászólására (») Júl 6, 2008 /
 
Idézet:
„Az MPLAB-ból hogyan lehet ezt az MCLR dolgot kiküszöbölni?”


Ha jól értem a problémát, akkor azt hiszem sehogy. Az MCLR lábat az mplab mindenféleképpen nullára húzza a felprogramozás után. Ha pedig a konfig biteknél az mclr le van tiltva, akkor a kontroller el fog indulni, és ráfut arra, hogy a láb nullán van.
(#) 5cmarzo hozzászólása Júl 6, 2008 /
 
Hello!

Van egy 16F84A-s kontrollerem. A SLEEP üzemmódot nem tudná valaki elmagyarázni, hogy hogyan tudom felébreszteni alvó módból?
Köszi
Hello
(#) MPi-c válasza 5cmarzo hozzászólására (») Júl 6, 2008 /
 
Idézet:
„A SLEEP üzemmódot nem tudná valaki elmagyarázni...”

Miért nem próbálsz használni valami keresőt.
Pl.: google "sleep üzemmód"...
(#) szab hozzászólása Júl 6, 2008 /
 
Sziasztok!

Olyan kérdésem lenne, hogy mondjuk egy PIC16F628A hány mA-ert fogyaszt?

(A kérdésem konkrétan amúgy az lenne: ha mondjuk szeretnék tervezni egy áramkört amit egy 9V-os hálózati transzformátorral táplálnék (természetesen stabilizálnám az áramot), meg mondjuk szeretnék mellé tenni egy LCD-t, egy 9V-os relét, ami 230VAC-t kapcsol és lenne még egy ds182x-es IC is, akkor hány VA-os transzformátorra van szükségem? (termosztátot akarok csinálni...) )
(#) surda2000 válasza szab hozzászólására (») Júl 6, 2008 /
 
Ezeket az adatokat az alkatrészek adatlapján megtalálod. A leírtak alapján, ha háttérvilágításos LCD-t használsz, akkor a háttérvilágítás és a relé árama lesz a jelentős. Azok mellet a PIC áramfelvétele eltörpül(néhány mA).
(#) PetAd válasza 5cmarzo hozzászólására (») Júl 7, 2008 /
 
Hello
Nézd meg ezt az oldalt: Bővebben: Link
A PIC16xxx Felhasználói Kézikönyv-ben nézd meg.
(#) djpman hozzászólása Júl 29, 2008 /
 
Üdv mindenkinek!
Nem rég elkezdtem tanulmányozni a PIC-eket az alapoktól ,de vannak dolgok amiket nem tudok hova tenni és nem értek, és sehol nem találtam rá választ.Először is valaki írja már le nagyon egyszerűen érthetően ,hogy mit értünk a PIC-ek világában "konstans" alatt. Valamint a következőket sem tudom hova tenni...Hogy képzeljem el? stb.

d - célkijelölő bit
f - 7 bites adatregiszter cím;
b - 3 bites bitcím az adatregiszteren belül;

A válaszokat előre is köszönöm!
pman
(#) surda2000 válasza djpman hozzászólására (») Júl 29, 2008 /
 
A konstans állandó. Ezt a programírás során megadod, és a program futása során nem változik az értéke.
pl.:
movlw .35
Itt a konstans a 35 decimális szám.
A d bit lehet F, vagy W. Ez dönti el,. hogy egy művelet eredménye a munkaregiszterbe vagy egy változóba kerüljön.
pl.:
addwf VALTOZO,f
Itt a w tartalma(amit előzőleg beletöltesz) és a VALTOZO keröl összeadásra, és az eredmény a VALTOZO-ba kerül.
Illetve az f adatregiszter cím ebben a példában a VALTOZO regiszter.
A b-re akkor van szükség, ha bitváltoztatásra irányul az utasítás. Megmondja, hohy az adott bájt melyik bitjét kell változtatni.
pl.:
bsf VALTOZO,4
Ez a VALTOZO nevű bájt 4-es számú bitjét(a számozás 0-tól 7ig tart) állítja 1-be.
(#) djpman hozzászólása Aug 2, 2008 /
 
Halihó!
Szépen lassan haladok a PIC tanulmányaimmal és eddig elég jól sikerült megértenem az alapokat. Közben vettem egy PIC Kit 2-t és gondoltam elkezdek vele ismerkedni.Feltelepítettem az MPLAB -ot és most ott bajlódom. Elolvastam (vagyis próbáltam ,mert nem vagyok annyira jó angolból) a kézikönyvet és azt vettem ki belőle ,hogy:először beállítom a használt PIC-et, majd létre hozok egy project-et és megnyitok egy forrás fájlt.Na most találtam is ilyet és azt nem értem muszály azt használni vagy csinálhatok én is egyet. Csak mert láttam hogy van hozzá egy ún. linker fájl is...Az mire jó?
Kell még valamit állítanom hogy elkezdhessem írni a programom?
(#) surda2000 válasza djpman hozzászólására (») Aug 2, 2008 /
 
Természetesen Te is létrehozhatsz forrásfájlt. (megcsinálod a pojectet project wizard-al) és létrehozol egy új fájlt .asm kiterjesztéssel. ( írj be egy karaktert és mentsd el, mert csak akkor tekinti a projecthez tartozónak)
A linker akkor kell, ha több forrásfájllal dolgozol. Tipikusan ilyen, ha pl.:C nyelven írod a programot. Assembly-ben is használható(mondjuk, mikor a gyakran használt rutinokat egy külön fájlban helyezed el) de erre az elején nincs szükség.
(#) djusee hozzászólása Aug 3, 2008 /
 
Hello. Vegig olvastam ezt a topicot es piszkalja a fantaziamat a PIC es dolog.Na marmost egyenlore az lenne a kerdesem hogy volt e mar valakinek tapasztalata a Willem egetovel.Nekem van egy regebbi valtozat PCB3 as.Es szeretnek ezzel kiserletezgetni. Vagy tobbet erne eggy masik egetovel probalkoznom? koszi
(#) potyo válasza djusee hozzászólására (») Aug 3, 2008 /
 
Többet érne, ha vennél egy Pickit2-t.
(#) djusee válasza potyo hozzászólására (») Aug 5, 2008 /
 
Ok.Koszi,csak az a problema hogy vajdasagi vagyok,igy nehezebb lenne beszereznem.Itt nem hallottam rola.Szuperul mukodik egyebkent,csak meg PIC hez nem hasznaltam.Udv
(#) potyo válasza djusee hozzászólására (») Aug 5, 2008 /
 
Végülis, ha működik megbízhatóan az égető, akkor használd. Ha viszont építeni kell, akkor egyszerű és megbízható az itt levő égető. De szerintem érdemes beszerezni vagy építeni egy Pickit2-t. Elvileg a Comet Electronics-től lehet rendelni: link. Apró probléma, hogy állítólag nem küldenek magánszemélynek utánvéttel, tehát vagy személyesen el kell menni érte, vagy céges ismerőssel megrendeltetni. De mindenesetre telefonon érdemes rákérdezni pontosan.

Amúgy én is vajdasági vagyok.
(#) djusee válasza potyo hozzászólására (») Aug 12, 2008 /
 
Koszonom a segitseget.Ha nem boldogulok vele akkor megprobalom majd az Oshon t. Udv Foldi
(#) frrrrr válasza szab hozzászólására (») Aug 12, 2008 /
 
Ne haragudj, de az az érzésem, hogy kezdő vagy "(természetesen stabilizálnám az áramot), ". Én is az voltam valamikor, sőt mindenki az volt. Aki kezdő sem volt , az nem is lehet soha profi.

Ne játssz 230 volttal, ahol a legfontosabb az érintésvédelmi előírások betartása, saját és barátaid élete érdekében.
(#) djpman hozzászólása Aug 15, 2008 /
 
Helló mindenkinek!
Nem rég jutottam a PIC –ek tanulmányozásánál az A/D converterhez. Átnéztem a PIC-em adatlapját amennyire tudtam és egy oktatóprogramot kezdtem el tanulmányozni ,de pár kérdés felvetődött…
Tehát beállítottam a szükséges regisztereket majd jön ez

MainLoop:
nop
nop
nop
nop
nop
bsf ADCON0,GO
btfss ADCON0,GO
goto $-1

movf ADRESH,w
movwf PORTC
goto MainLoop
end

Első kérdés miért kell várakozni a beállítások után és konvertálás előtt és mitől függ ez az idő(megtaláltam az adatlapban ,de nem bírtam értelmezni)?Aztán miután elindítom a konvertálást, utána jön egy bitteszt ,amennyiben jól értelmezem ha kész újra visszalép ez előző utasításra a bittesztre(ami nem lenne jó hisz beragadna egy végtelen ciklusba),ha nincs megy tovább… Mennyi időt vesz igénybe a konvertálás? És mikor van vége annak? A program látszólag működik kipróbáltam. Az analóg bemeneten egy potméter szolgálja az analóg jelet a kimeneten ledek világítanak.
Következő: »»   5 / 1209
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