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   417 / 1210
(#) icserny válasza Balagemann2031 hozzászólására (») Máj 28, 2013 / 1
 
Az MPLAB telepítési könyvtárában. Nálam a c:\Program Files (x86)\Microchip\MPASM Suite\LKR\16f628a_g.lkr címen található.
(#) Doky586 válasza icserny hozzászólására (») Máj 28, 2013 /
 
Furcsa hogy ez az érték nem szerepel az adatlapon. Ha nem használok MPLAB-ot (3rd parity compiler..) akkor nincs is rá szükség ezt tudni?? (se a programozáskor se égetéskor?)
(#) cross51 hozzászólása Máj 28, 2013 /
 
Sziasztok!
Egy kis segítséget szeretnék kérni a btfsc/btfss parancsban.
  1. #include    <p10f220.inc>
  2.     __CONFIG _IOSCFS_4MHZ & _MCLRE_OFF & _WDTE_OFF
  3.  
  4.     ORG 0x00
  5.     cblock  0x10
  6.         D1
  7.         D2
  8.         D3
  9.         endc
  10.  
  11.     CLRF    ADCON0
  12.     CLRF    OSCCAL
  13.     MOVLW   0x0
  14.     OPTION
  15.     MOVLW   B'1001'
  16.     TRIS    GPIO
  17.  
  18.  
  19. FLASH:
  20.     MOVLW   B'0100'
  21.     MOVWF   GPIO
  22.     CALL    Delay
  23.     CLRF    GPIO
  24.     CALL    Delay
  25.  
  26.  
  27.     MOVLW   B'0100'
  28.     MOVWF   GPIO
  29.     CALL    Delay
  30.     CLRF    GPIO
  31.     CALL    Delay1
  32.  
  33.     MOVLW   B'0010'
  34.     MOVWF   GPIO
  35.     CALL    Delay
  36.  
  37.     CLRF    GPIO
  38.     CALL    Delay
  39.  
  40.     MOVLW   B'0010'
  41.     MOVWF   GPIO
  42.     CALL    Delay
  43.  
  44.     CLRF    GPIO
  45.     CALL    Delay1
  46.  
  47.     GOTO    FLASH
  48. MODE:
  49.     CLRF    GPIO
  50.     CALL    IDO
  51.     BSF     GPIO,2
  52.     CALL    IDO
  53.     GOTO    MODE
  54.  
  55.  
  56.    
  57. Delay:
  58.  
  59.     MOVLW   0xB9
  60.     MOVWF   D1
  61.     MOVLW   0x4
  62.     MOVWF   D2
  63.     MOVLW   0x2
  64.     MOVWF   D3
  65.  
  66.     DECFSZ  D1,F
  67.     GOTO    $-1
  68.     DECFSZ  D2,F
  69.     GOTO    $-3
  70.     DECFSZ  D3,F
  71.     GOTO    $-5
  72.     RETLW   $-1
  73.  
  74. Delay1:
  75.     MOVLW   0xA9
  76.     MOVWF   D1
  77.     MOVLW   0x45
  78.     MOVWF   D2
  79.     MOVLW   0x2
  80.     MOVWF   D3
  81.  
  82.     DECFSZ  D1,F
  83.     GOTO    $-1
  84.     DECFSZ  D2,F
  85.     GOTO    $-3
  86.     DECFSZ  D3,F
  87.     GOTO    $-5
  88.     RETLW   $-1
  89.  
  90. IDO:
  91.     MOVLW   0x1F
  92.     MOVWF   D1
  93.     MOVLW   0x4F
  94.     MOVWF   D2
  95.  
  96.     DECFSZ  D1,F
  97.     GOTO    $-1
  98.     DECFSZ  D2,F
  99.     GOTO    $-3
  100.     RETLW   $-1
  101.  
  102.     END

A mode és a flash között szeretnék váltani úgy hogy a GP0-át figyeli a PIC, de eddig csak úgy bírtam megírni ha pont jókor találom el az időt akkor vált át az egyikből a másikba.
Most nem írtam bele a programba a btfsc/btfss-t és én úgy szeretnék váltani, hogy megnyomom egyszer a gombot a program odaér vált és tök mindegy meddig nyomom nem vált vissza az egyik módból a másikba míg nem engedem el a gobot.
Köszi!
(#) kissi válasza cross51 hozzászólására (») Máj 28, 2013 /
 
Idézet:
„e eddig csak úgy bírtam megírni ha pont jókor találom el az időt akkor vált át az egyikből a másikba”
Ezt csak úgy lehet elkerülni, ha megszakítást ( ill. hardveres figyelést !) alkalmazol! Ha azt a részt még nem érted ( el kell párszor olvasni a doksik megfelelő fejezeteit ), akkor az általad leírt módon kell megoldani, csak a gomb lekérdezését "sűrűn" kell megtenni ( a késleltetés belsejében például! ) és így "tuti" eltalálod a lekérdezést a nagy gyakoriság miatt!
Szerintem a váltást meg tudtad oldani, még valószínűleg az elengedés figyelését is, csak addig a processzort "lefagyasztottad" és nem tudtál érdemi munkát végezni !
(#) cross51 válasza kissi hozzászólására (») Máj 28, 2013 /
 
http://www.youtube.com/watch?v=G38p_HEsPVA valami ilyesfélére gondolok csak nem ennyire összetettre. Igen ez a hardveres megszakítás új esetleg egy linket tudsz küldeni ahol tudnék róla olvasni vagy itt valahol a fórumon ?
(#) Hp41C válasza kissi hozzászólására (») Máj 28, 2013 /
 
Csak annyi a baj, hogy a 10F2xx -ben nincs megszakítás lehetőség.
Az ötlet annyi lenne.hogy az elágazás egy belső állapottól függne, a nyomógomb érzékelése a belső állapotot billegtetné (pergésmentesítés elvégzése után).
(#) kissi válasza cross51 hozzászólására (») Máj 28, 2013 /
 
Ha a fórumnak elolvasod ezt a topic-ját, akkor nagyon sok mindent megtudsz ( vannak benne hasznos linkek is! ), de most nem érek rá keresgélni !
(#) Llajti válasza bokrosh hozzászólására (») Máj 29, 2013 /
 
Szia!

Ahogy azt jól látod, az RB3 csatlakozása az ICD-hez a program futása közben könnyen okozhatja a fenti jelenséget. Próbáld ki azt, hogy Release-t fordítasz, beprogramozod és utána lehúzod az ICD-t, valószínűleg működni fog.
(#) proba válasza cross51 hozzászólására (») Máj 29, 2013 /
 
Ha ez volt a bajom, úgy szerveztem a programot hogy a gombfigyelést olyan részbe tettem, ahol kb másodpercenkét 2* 3* megfordult a program (itt nem időz sokat, csak a gomb állapotát az előzővel összehasonlítja,vagy egyszerűen csak eltárolja. Így a prell mentesítés megoldva. Ha a két előfordulás között állapotváltozás történt az gombnyomás/elengedés esete. Az iránya pedig az aktuális értékből látszik.Ezzel egy/két jelzőbitet beállítva már tetszőleges helyen tudod a gombnyomást, illetve annak a változását ellenőrizni. Nem kell a programot lefagyasztani.
A hozzászólás módosítva: Máj 29, 2013
(#) univerzum hozzászólása Máj 30, 2013 1 /
 
Üdvözletem, pár nap múlva lesz technikusi vizsgám és kellene nekem segítség azzal kapcsolatban, hogy pic-re C programozási nyelvben hogyan tudok feltételes elágazást tenni. Pld: Akkor villanyon fel a d port ledjei ha bport 1es bemenetét megnyomom. A B port ellenállással pozitív tápra van kötve.
Első körben, egy ciklust hajtson végre, második kérdésem, hogy folyamatosan ismételje a ciklust amit írtam ezt hogyan tudom megvalósítani? Harmadik kérdésem, ha a futó ciklus közben nyomom meg a gombot akkor szakítsa meg a ciklust és nullázza le mondjuk a led sort.
Portok be és ki kapcsolása, időzítés, különböző számolások stb azok mennek, példázás ként azért szeretném ha az kérésem konkrétan le lenne írva.
(#) tom75 hozzászólása Máj 30, 2013 /
 
Sziasztok!

Kis segítséget szeretnék kérni, az alábbi linken található programozó alkalmas lehet eeprom-ok programozására?

http://www.sprut.de/electronic/pic/projekte/brenner8/
(#) pjg válasza tom75 hozzászólására (») Máj 30, 2013 /
 
Elképzelhető
A hozzászólás módosítva: Máj 30, 2013
(#) tom75 válasza pjg hozzászólására (») Máj 30, 2013 /
 
Tudtok ajánlani olyan programozót ami alkalmas eeprom programozásra?
(#) Hp41C válasza tom75 hozzászólására (») Máj 30, 2013 /
 
Soros (I2C, SPI, UnIO felületű) EEProm -okhoz a PICKit2.
(#) tom75 válasza Hp41C hozzászólására (») Máj 30, 2013 /
 
winbond ic-hez is jó?
pl 25x16avig
25xx sorozathoz?
Mert ilyen ic-k nincsenek benne a pickit 2 programban.
A hozzászólás módosítva: Máj 30, 2013
(#) univerzum válasza univerzum hozzászólására (») Máj 31, 2013 1 /
 
Valaki tudna-e segíteni?
(#) Hp41C válasza univerzum hozzászólására (») Máj 31, 2013 1 /
 
Szia!
Idézet:
„pic-re C programozási nyelvben hogyan tudok feltételes elágazást tenni.”

if (feltétel) {utasítás; utasítás; ... };
C18 -on
if (!PORTBbits.RB1) { PORTDbits.RD0 = 1;}
Idézet:
„Első körben, egy ciklust hajtson végre”

Nem érthető a kérés. Milyen ciklust hajtson végre?
while(kilépési feltétel) {ciklikusan végrehajtandó utasítások;};
do {ciklikusan végrehajtandó utasítások;} while(kilépési feltétel);
(#) univerzum válasza Hp41C hozzászólására (») Máj 31, 2013 1 /
 
tehát a program magja megvan, lénegében:
  1. void main (void){
  2.       PORTD=0b00000001;
  3.        __delay_ms(5);
  4.       PORTD=0b00000010;
  5.       __delay_ms(5);
  6. }

tehát akkor beleírom az
  1. if (RB=1) {
  2. main
  3. }

vagy hogy csináljam?
Mert ez lenne az egyik lényeges dolog hogy a mian-on belül szereplő dolgot hajtsa végre.
Utánna meg menet közben ugyanúgy válaszoljon a gomb lenyomásra, akkor nullázza az egészet és megint megnyomom a gombot akkor indul előröl az adott ciklus.
A hozzászólás módosítva: Máj 31, 2013
(#) Hp41C válasza univerzum hozzászólására (») Máj 31, 2013 /
 
A main() függvény a C program belépési pontja.
  1. if (RB=1) {
  2.     main
  3.     }
  4. Ez a kód hibás... Ha ilyet szeretnél, a main -be kell tenni és más nevű függvényt kell hívni. Persze azt a függvényt is meg kell előbb írni.
  5.  
  6. Ha a RB1 bemeneten a gomb nincs megnyomva, felváltva villog az RD0 és RD1, ha le van nyomva, az RD0 és RD1 kimeneteken alacsony szint lesz. A villogás akkor kedződik újra, ha a gombot felengedik.
  1. void main (void){
  2.     do
  3.     {
  4.        if (PORTBbits.RB1)
  5.        {
  6.              PORTD=0b00000001;
  7.              __delay_ms(5);
  8.              PORTD=0b00000010;
  9.              __delay_ms(5);
  10.        }
  11.        else
  12.        {
  13.              PORTD=0b00000000;
  14.        };
  15.     } while (TRUE);
  16. }

Kötelező olvasmány
A hozzászólás módosítva: Máj 31, 2013
(#) univerzum válasza Hp41C hozzászólására (») Máj 31, 2013 /
 
Így érthető, és ha kiszedem az else parancsot és a PORTD=0-t akkor folyamatosan fog futni utána?
csak ennyi.
Kösz. Az írást meg elolvasom.
(#) Hp41C válasza univerzum hozzászólására (») Máj 31, 2013 /
 
Minden módosítás nélkül is fut folyamatosan a do {..} while (TRUE); miatt.
(#) Szamy hozzászólása Máj 31, 2013 /
 
Üdv!
18f4620 (tqfp44) "alapjáraton" 5mA -t fogyaszt. Értem ez alatt, hogy minden kimenet 0-ban van (és minden kimeneten soros 10KOhm van), 1 Adc csatornán mérek, kijelző vagy led nincs rajta, 4MHz -en ketyeg, nincs sleep-ben. Ez a fogyasztás normálisnak tekinthető? A stabic fogyasztása természetesen ebben nincs benne, az +ban még hozzájön.
(#) univerzum válasza Hp41C hozzászólására (») Máj 31, 2013 /
 
Óriási nagy köszönöm szépen, ezzel most megmentettél
(#) icserny válasza Szamy hozzászólására (») Jún 1, 2013 /
 
Adatlap szerint 4 MHz-en max. 3.5 mA, de az nyilván kikapcsolt ADC-vel értendő.
(#) roozsa hozzászólása Jún 1, 2013 /
 
Sziasztok!
Lehetséges 16f877-est 1Mhz-en "járatni" ?
Kezdő vagyok a témában és az időzítés megnyújtása miatt kellene "hosszú" ciklusidő.
(#) Hp41C válasza roozsa hozzászólására (») Jún 1, 2013 /
 
Lehet. Adatlap szerint a 16F877.. -04 DC - 4 MHz, 16F877.. -10 DC - 10 MHz, a 16F877.. -20 DC - 20 MHz között járatható. Azaz akár 1Hz -vel is működőképes...
(#) Doky586 válasza roozsa hozzászólására (») Jún 1, 2013 /
 
Adatlap LP kavics pl. 32kHz (0.032768 MHz)
A hozzászólás módosítva: Jún 1, 2013

877osc.png
    
(#) roozsa válasza Hp41C hozzászólására (») Jún 1, 2013 /
 
Kösz.
(#) roozsa válasza Doky586 hozzászólására (») Jún 1, 2013 /
 
Kösz.
(#) roozsa hozzászólása Jún 1, 2013 /
 
Nekem terepasztalra kellene házak világításának "össze-vissza" kapcsolgatására.
30-90 sec időzítéssel.
Következő: »»   417 / 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