Fórum témák
» Több friss téma |
Fórum » PIC programozás
Ez nem a nyelvtől függ. Azt el tudom képzelni, hogy a fordító megoldja a helyes beállítást, de ha nem, akkor lehet ilyen összevisszaság. A PIC-et nem érdekli, milyen nyelven állítod be azt amit be kell, csak legyen beállítva. Tehát járj utána, hogy a fordító miként kezeli ezt a kérdést(helpben pl.)
A parsic egy graikus fejlesztő és a helpjében sem teláltam semmit erről , én arra gondolok hogy amíg csak az első két AD bemenet van használva addíg kéri a referenciát ha már 3-vagy 4 AD - használok akkor már automatikusan átállítja (de erre rákérdezek a progi topikjában )
Nem kell kétségbeesni! A PARSIC által generált assembly forráskódban megnézed, hogy mit ír az ADCON1 regiszterbe (0x9F a címe), s összehasonlítod az értéket az adatlap 112. oldalán levő táblázattal.
Az alsó 4 bitbe (PCFG3:0 bitek) írt bitkombináció olyan legyen, hogy a hozzá tartozó sorban azoknál a lábaknál legyen A, ahol analóg bemenetet akarsz, a VREF+ és VREF- oszlopban pedig VDD és VSS álljon, akkor nem kell külső referencia.
Szevasztok!
kezdő vagyok és kellene egy segítség. Kézhez kaptam egy "házi" basic stamp 1et. 3 pinre egy kijelző csatlakozik. ezt tudom kezelni, de a pin3 és pin4 re i2c lenne vezetve. Ezt persze úgy képzeljétek el hogy vezetékkel két soros (rs25... az egér csatlakozó ) csatalakozóra van kötve, így lehet csatlakoztatni és cserélni az i2c-s dolgokat. Na most van egy real-time órám nevezetesen a rs5c372a. a problémám pedig az hogy a programom mindig lefut még akor is ha nincs csatlakoztatva az óra. persze kiolvasni sem tudok semmilyen adatot. A nyugta vizsgálatánál lehet a probléma mert mikor megvizsgálom hogy if ora_sda=1 then Ack_var továbmegy, és ahogy néztem azé mert a lábamon mindig 0 van, üres állapotban is. valószínűleg az ismeret hiányom okozza a problémát de bármilyen segítséget, kész programot vagy teljesen más megoldást elfogadok
Szia!
Idézet: „a lábamon mindig 0 van, üres állapotban is” Ez arra enged következtetni, hogy elfelejtettél felhúzó ellenállásokat kötni az SDA és SCL vonalakra. Felhúzó ellenállásnak pl. 10 kOhm- t szokás használni. Üdv.
Szia!
A kijelző és az óra is ugyanarra a portra van kötve a 16C54-en. Kereszthatás jöhet létre a két funkció között. - Ha a kijelzőbe ír a program ( bsf, bcf pic assembly utasítással és még mások is, ha az a port a cél), az I2C-n a két bit ekkor bemenet. Ekkor az említett utasítások beolvassák a portot, elvégzik a műveletet, az eredményt vissza írják a porrtra. Ez így renben is lenne, de mialatt a kijelzőhöz tartozó bitet átállítja - az I2C-hez tartozót elrontja. Az ok a következő. Az I2C-n a bit éppen nem hajtja a vonbalat, a felhúzó ellenállás miatt a beolvasáskor magas szintet érez, és ezt a magas szintet vissza is írja a kimeneti regiszterbe. Ha az I2C majd meg akarja hajtani a vonalat, akkor neki az alacsony szint kellene, ami az utasítás végrehajtása elott ott volt. A megoldás : A közvetlen port írás helyett az adatokat egy memóriában készítsd elő (bármilyen utasításokkal) és onnan másold a portra. (Csak másolás legyen - ne végezzen más műveletet.)
Helló!
Van egy P16pro programozóm, amivel régebben simán programoztam 16F628-as pic-et. Most, mivel szükségem lett volna egy programozásra, elővettem és az egyszer már vele programozott pic-et akartam újraprogramozni, de a verify résznél mindig hibát ír. A pic eddig egy karakteres lcd tesztelőben volt használva és egy óra program volt benne. Mielőtt programozni akartam, azelőtt is használtam és ment. Most viszont nem tudtam sehogy sem felprogramozni. Minden beállítás ugyanaz volt mint régen. Megtaláltam egy másik ilyen pic-et is, de azt sem akarta felprogramozni. Ezért arra gondolok, hogy a pic jó, de valami nem stimmel a programozóval, ami kizárt, mert a polcon volt mostanáig és senki sem nyúlt hozzá. Eddig mindig a Winpic-el programoztam, mert ezzel hiba nélkül ment mindig. A többi programmal nem akart menni. valaki tudna segíteni, hogy hol keressem a hibát? Üdv: Ricsi
Sziasztok!
Hol találok magyar nyelvű application note-okat a PIC mikrokontrollerekhez? Előre is köszi!
A gyári application note-ok fordítására gondolsz? Szerintem ilyen nem létezik...
szia!
Hát igazából nem tudom mert Topi egyik írásában olvastam hogy létezik magyar app note a PIC-ekhez és nagyon jól jönne mert az angolokból nehezebb megérteni egy kezdő számára(mint én).
Tessék egy régebbi pic fordítása:
Szia.A hobbi elektronika oldalon talaltalak meg, ott utalsz egy PARSIC nevü progira, sehonnan nemtudom letolteni tudnál ebben segiteni??
Elore is kosz
köszönöm szépen, ilyenre gondoltam. esetleg ha lenne még az nagyon jól jönne. előre is köszi.
Hali Mindenki.
Kezdő PIC-es vagyok. A TMR0-on sikeressen tuljutottam .Kerdesem a kovetkezo :, hogy lehet a TMR1-et engedelyezni es idözitönek hasznalni, megszakitast eloidezni vele ?valojabann en azt szeretnem ,hogy a pic16f628-as 30percenkent kapcsoljon ki-be egy kimenetet. Mellekelem az edig elert asm-et. elore is koszonom a valaszt LIST P=16F628 ; Device number (PIC16F628) #INCLUDE ;ERRORLEVEL -224 ; suppress annoying message because of tris ;ERRORLEVEL -302 ; suppress message because of page change ;--------------------- Configuration ------------- ;_BODEN_OFF equ H'3FBF' ; Brown out detection off ;_CP_OFF equ H'3FFF' ; Kodvédelem kikapcsolva ;_PWRTE_ON equ H'3FF7' ; Power-on reset enabled ;_WDT_OFF equ H'3FFB' ; Watch dog timer off ;_LVP_OFF equ H'3F7F' ; Alacsony szintü programozas ki ;_INTRC_OSC_NOCLKOUT equ H'3FFC' ; belső RC Oscillator ;_MCLRE_OFF equ H'3FDF' ; RA5_funkcio input __CONFIG _CP_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _PWRTE_ON & _LVP_OFF & _BODEN_OFF & _MCLRE_OFF ;------------------------------------------------------ cblock 0x20 STATUS_TEMP W_TEMP ismetles_ido ismetles_int ;-------------------------------------------- endc org 0 goto start org 4 ;megszakitas vektor btfsc INTCON,T0IF ;tmr0 megszakitas? goto isr ;igen start bcf STATUS,RP1 ;bank1 bsf STATUS,RP0 movlw b'01111111' movwf TRISA movlw b'00000000' movwf TRISB bcf STATUS,RP0 ;bank0 movlw 0x07 movwf CMCON bsf STATUS,RP0 ;bank1 movlw b'00000111' ;elooszto tmr0-hoz movwf OPTION_REG bcf STATUS,RP0 ;bank0 bsf INTCON,GIE bsf INTCON,T0IE ;----------------------------------------- O BTFSS 0X5,0 GOTO O isr movwf W_TEMP ;a W másolása a W_TEMP-be swapf STATUS,W ;a STATUS bitcserés másolása a W-be movwf STATUS_TEMP ;a W (STATUS) másolása a STATUS_TEMP-be clrf STATUS ;a 0. memórialap kiválasztása btfsc INTCON,T0IF ;Timer0 túlcsordulás vizsgálata goto t0i ;ugrás, ha a Timer0 túlcsordult t0i ;a túlcsordulási esemény lekezelése ... bcf INTCON,T0IF ;a jelzőbit nullázása bsf 0x5,7 ;it fut goto ende ;ugrás a szubrutin végére ende swapf STATUS_TEMP,W ;a STATUS_TEMP bitcserés másolása a W-be movwf STATUS ;a STATUS_TEMP másolása a STATUS-ba swapf W_TEMP,F ;a W_TEMP bitcseréje swapf W_TEMP,W ;a W_TEMP másolása a W-be retfie ;visszatérés a megszakításból ... ;------------------------------------------------------- end
Sziasztok
kezdö PIC-es vagyok.Van egy JDM programozom.és WinPic800.3.64 ver.programom hozzá.Beteszem az uj pic16f628-at. felismeri dev ID 0x07C0 minden ok .Tudtam is programozni mármint led villogtatas stb.Egy idő óta nem ismeri fel a 16f628-at és dev .Id-nek meg azt mondja ,hogy 0x3FFF.vagy 0x0000 stb.Már vagy 6db ujjat elcsesztem igy!!! Mi lehet a hiba oka? lehet-e a dev iD irni vagy az gyarilag rogzitett a pic-be. valaszt eloer is kosz sunyo1
Ezt olvastad?
A DEV ID(eszköz azonosító) nem módosítható, be van vésve a PIC-be. Minden típusnak más.
Szia watt
Eloszor is kosz a gyors valaszt Most ketsegbeestem ,miért ?azert hogy milyen egeteo lenne a szamomra jo.Mellekelem ,hog nekem mlyen van.Sajnos a laptoppomon nics lpt port csak soros.Ezert tetszet meg a JDM.mit tudsz javasolni nekem?egeto ugyileg ami kivitelezhető házilag is.
A soros port elég kényes felület. Oda nehéz jó égetőt építeni. Egy van az oldalamon, de a cikkben írom, hogy nem minden PIC-el gondmentes. Most próbálok egy egyszerűt is, de még nincs kész, mert tele van bonyodalommal!
A legjobb választás egy PICKit2 klón lenne (USB-s). Ha neked elég az 5V-os PIC-ek égetése, akkor a szilva féle jó. Ha nem, akkor az oldalamon és az itteni cikk alapján tudsz építeni fullost.
Sziasztok kérdésem lenne.
Van egy alap program PIC-re asm-be ami ugy van megszerkesztve hogy van benne 4 efekt (sima 6 kimenet I/O) namost ez azt a megoldást használja hogy ha az 1 gombot nyomom meg akkor az 1 efekt fusson ha a 2 gombot akkor a 2 efekt hogy tudom ugy átirni a kodot hogy csak az egyes gomb nyomkodására váltson az efektek között?? CSak itt: ======================================= ; Variable Definition ;====================================== ;INPUTS SW1 EQU H'00' ;SW1 is triggering RA0 SW2 EQU H'01' ;SW2 is triggering RA1 SW3 EQU H'02' ;SW3 is triggering RA2 SW4 EQU H'03' ;SW4 is triggering RA3 TIMER1 EQU H'20' ;Used in delay routine TIMER2 EQU H'21' ; " " " PATERN EQU H'22' ;Pattern data for effect's ORG 0 ;Reset vector address GOTO RESET ;goto RESET routine when boot. ; ********************************************* ; * Example of a delay routine * ; ********************************************* DELAY_ROUTINE MOVLW D'60' ;54 Generate approx 10mS delay at 4Mhz CLK MOVWF TIMER2 DEL_LOOP1 MOVLW D'60 ;60 MOVWF TIMER1 DEL_LOOP2 BTFSC PORTA,SW1 GOTO MENU BTFSC PORTA,SW2 GOTO MENU BTFSC PORTA,SW3 GOTO MENU BTFSC PORTA,SW4 GOTO MENU DECFSZ TIMER1,F GOTO DEL_LOOP2 DECFSZ TIMER2,F GOTO DEL_LOOP1 RETLW 0 ; ********************************** ; ** RESET : main boot routine ** ; ********************************** RESET MOVLW B'00000111' ;Disable Comparator module's MOVWF CMCON ; BSF STATUS,RP0 ;Switch to register bank 1 ;Disable pull-ups ;INT on rising edge ;TMR0 to CLKOUT ;TMR0 Incr low2high trans. ;Prescaler assign to Timer0 ;Prescaler rate is 1:256 MOVLW B'11010111' ;Set PIC options (See datasheet). MOVWF OPTION_REG ;Write the OPTION register. ; CLRF INTCON ;Disable interrupts MOVLW B'11000000' MOVWF TRISB ;RB7 & RB6 are inputs. ;RB5...RB0 are outputs. MOVLW B'11111111' ;all RA ports are inputs MOVWF TRISA BCF STATUS,RP0 ;Switch Back to reg. Bank 0 CLRF PORTB GOTO EFFECT_4 ; MENU CLRF PORTB ; BTFSC PORTA,SW1 GOTO EFFECT_1 BTFSC PORTA,SW2 GOTO EFFECT_2 BTFSC PORTA,SW3 GOTO EFFECT_3 BTFSC PORTA,SW4 GOTO EFFECT_4 GOTO MENU találtama bemenetekre illetve a gombokra emlitést meg az efektek előtt EFFECT_1 BTFSC PORTA,SW1 GOTO EFFECT_1 E1 MOVLW B'00100000' ; MOVWF PORTB CALL DELAY_ROUTINE . . . . . . EFFECT_2 BTFSC PORTA,SW2 GOTO EFFECT_2 E2 MOVLW B'00000001' ;. . . Vagy ez nem ilyen egyszerü. . . Őszinte leszek nem nagyon értem ezt a programmenetet. . helyesebben az elejét a felépítést. . itt a villogásiminták már mennek. .
sajna igazad van ettől még nem müködik.
Kell egy változó, aminek az értéke változik a NY1 nyomásánál és a változót kell kiértékelni az effekt működtetésénél ( temészetesen a változót a maximális érték után nullázni kell, ill. változtatás késleltetés kell, hogy legyen időd elengedni a gombot!) !
Steve
Szia.
És azt hogy illesztem be a progiba. . Tudom beleirom. . de hogy néz ki az a változó?
A "PATERN EQU H'22' " mintájára pl. :
VALTOZO EQU H'23' ! De ha ez még nem volt világos, akkor ne ezzel kezdd a programozást ! Nem akarlak megsérteni, de ne gondoljátok, hogy a program csak annyi, hogy könnyedén lehet módosítgatni! A módosításhoz a teljes programot ismerni kell ( különben hülyeséget csinálhat, ha valaki csak egy részletet ragad ki belőle!), illetve a szoftverrel együtt a hardvert is jó ismerni! A fórumon a segítség abból áll, hogy megkérdezed amelyik sort nem tudod mit csinál és annak ismeretében megpróbálod megoldani a problémát. Ha elakadsz, akkor újból kérdés... Az, hogy írjuk le mit kell beleírni már bérmunka kérdés... Steve
Én kérek elnézést bár ittis és a fórum több topicján is irtam hogy fogalmam sincs a program elejéről hogy ott mit és hogyan és különben is.
Szerintem ahhoz senkinek sincs türelme hogyha én egyenként bemásolom a sorokat és rákérdezek hogy mi mit jelent és arra valaki válaszoljon. Mert olvasok én rengeteget meg külön külön hogy mi mit jelent, de nem tudom összerakni pedig elvileg nem vagyok hülye hozzá. . na mindegy. DE ha már említetted a bérmunka verziót. azt is többször felvetettem. hogy nem ragaszkodok én ahhoz hogy hú most rögtön megértsem ezt a programozást és én írjam meg a programot hanem nekem az is jó hogy megmutatom az áramkört (lábkiosztás végett) valaki megírja rá azt a két programot én meg megfizetem az árát. és amikor meg lesz időm meg lesz valaki aki leül mellém és beleveri a fejembe hogy te hülye ez azért van így mert így kell lennie akkor meg megtanulom. De erre se jelentkezett senki, de akkor most feldobom megint a lehetőséget és várom a jelentkezőket
sziasztok!
most kezdtem el ismerkedni a microchip c18 as fordítójával, de már rögtön az elején megakadtam. írtam egy programot ami a C -port minden bitjét egybe állítja de a program nem fordítja le. mellékeltem a képet és a hibaüzenetet. előre is köszi a segítséget. teammosella
Nincsenek rendesen beállítva az elérési utak.
MPLAB IDE-ben a Project/Set Language Tool Locations menüpontban a Microchip C18 Toolsuite/Default Search Paths & Directories pontban állítsd be az elérési útvonalakat! Nálam ezek vannak: Include: C:\Program Files\Microchip\MCC18\h Library: C:\Program Files\Microchip\MCC18\lib Linker: C:\Program Files\Microchip\MCC18\lkr ha máshová telepítetted, akkor találd ki, hogy Nálad mi kell! Az új projektekre ez automatikusan működni fog, de a meglévőnél (amit nem tudtál lefordítani) a fentiek után kell még egy lépés: Project/Project options/Project menüpontban választ ki a Deirectories lapot/fület és kattints a "Suite Defaults" gombra.
sikerült megoldanom csat át kellett olvasni a user guide-ot, azért nagyon szépen köszönöm
Üdv mindenkinek!
PIC 16F877-et használok. A kódjaimat CCS compilerrel fórdítom. A problémám a const char típusu tömbökkel van, ugyanis const char pontert ahogy a súgoban mutatja: const char *cptr nem engedi, viszont ha sima char pointert próbálok ráálítani azt valahogy nem sikerül. Remélem tud valaki segíteni....... |
Bejelentkezés
Hirdetés |