Fórum témák
» Több friss téma |
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?
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.
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?
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.
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
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...
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...
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 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?
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)
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!
É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.
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? 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.
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 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"...
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...) )
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).
Ü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
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.
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?
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.
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
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
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.
Koszonom a segitseget.Ha nem boldogulok vele akkor megprobalom majd az Oshon t. Udv Foldi
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.
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. |
Bejelentkezés
Hirdetés |