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   858 / 1210
(#) Pali79 válasza attika hozzászólására (») Okt 5, 2016 /
 
A TRISA-val a PORTA adott lábai lesznek állítva.
(#) Hp41C válasza attika hozzászólására (») Okt 5, 2016 / 1
 
Nem!

A TRISB =0b1 azaz TRISB = 1 azaz TRISB = 0x01 az RB0 -t fogja bemenetnek állítani, a többit kimenetnek.
A TRISB =0b10000000 azaz TRISB = 128 azaz TRISB = 0x80 az RB7 -t fogja bemenetnek állítani, a többit kimenetnek.

A TRISB =0b11 azaz TRISB = 3 azaz TRISB = 0x03 az RB0 -t és az RB1 -et fogja bemenetnek állítani, a többit kimenetnek.
A TRISB =0b11000000 azaz TRISB = 192 azaz TRISB = 0xC0 az RB7 -et és az RB6 -ot fogja bemenetnek állítani, a többit kimenetnek.
A hozzászólás módosítva: Okt 5, 2016
(#) usane válasza attika hozzászólására (») Okt 5, 2016 / 1
 
Nem működhet helyesen mindkét esetben.
Mint előttem írták a TRISB = 0b00000001 az RB0-t állítja bemenetnek, 0-val kimenetnek.
Ha kimenet akkor a start/stop gomb nem működhet. Illetve rövid ideig akár működhet, mert adatlap szerint a PORTB regiszter beállhat magasra is resetkor, de ha megnyomod a start/stop gombot azaz földre húzod a magasra állított kimenetet azt hosszú távon (ami lehet, hogy elég rövid lesz) nem fogja megköszönni a kimenet.
Ha pedig az RB-7-et akarod váltogatni, azaz TRISB = 0b10000000 vagy 0 akkor az meg az LCD-nek egy adatvonala tehát az nem működne rendesen.
(#) kriszrap válasza eSDi hozzászólására (») Okt 5, 2016 /
 
OOooooo... Köszönöm
Egy utolsót )) Analog bemenet kell egy nyomogomb ellenörzéshez??
(#) morfi007 válasza kriszrap hozzászólására (») Okt 5, 2016 /
 
Nem. Igy vagy ellenőrzöd állandóan BTFSS vagy BTFSC-el,,,vagy állitasz neki INTERRUPT-ot változás esetére.
(#) attika válasza usane hozzászólására (») Okt 5, 2016 /
 
Na most akkor teljes a káosz
  1. TRISA = 0b00111100;                                                              TRISB = 0b00000000;


Ezzel a beállítással.
RA0,RA1:Kimenet
RA2-RA5:Bemenet
RA6,RA7:Kimenet


RB0-RB7-ig:Kimenet.?
(#) benjami válasza attika hozzászólására (») Okt 5, 2016 /
 
Igen, úgy lesz ahogy írtad.
(#) f2f2 hozzászólása Okt 6, 2016 /
 
Dobok mindjárt egy hátast
18F46K22

Soros kimenetre tesztet írtam de közben mérem a baudrate ot
és nem annyi mint ahogy matekozok
16MHz belső; SYNC:0 ; BRGH:0 ; BRG16:1 lejjebb p16=16
SPBRG1 : 99 nél mérek 2400BPS t
BPS= hz / (16 * ( SPBRG + 1 ) )

16000000 / (p16 * ( 99 + 1 ) ) ezzel 10000 lenne

16000000 / (p16 * ( 415 + 1 ) ) ezzel 2403 lenne

Mi szivathat meg ?
Kössz

==================== PIC MCU MHz: 4000000 ====================
SYNC:0 BRG16:1 BRGH:0 p16: 16 SPBRG: 49999 BPS : 5
SYNC:0 BRG16:1 BRGH:0 p16: 16 SPBRG: 23 BPS : 10416.6666666667
SYNC:0 BRG16:1 BRGH:0 p16: 16 SPBRG: 65535 BPS : 3.814697265625
SYNC:0 BRG16:1 BRGH:0 p16: 16 SPBRG: 0 BPS : 250000
SYNC:0 BRG16:1 BRGH:1 p16: 4 SPBRG: 65535 BPS : 15.2587890625
SYNC:0 BRG16:1 BRGH:1 p16: 4 SPBRG: 0 BPS : 1000000
SYNC:1 BRG16:1 BRGH:0 p16: 4 SPBRG: 65535 BPS : 15.2587890625
SYNC:1 BRG16:1 BRGH:0 p16: 4 SPBRG: 0 BPS : 1000000
SYNC:1 BRG16:1 BRGH:1 p16: 4 SPBRG: 65535 BPS : 15.2587890625
SYNC:1 BRG16:1 BRGH:1 p16: 4 SPBRG: 0 BPS : 1000000
==================== PIC MCU MHz: 16000000 ====================
SYNC:0 BRG16:1 BRGH:0 p16: 16 SPBRG: 415 BPS : 2403.84615384615
SYNC:0 BRG16:1 BRGH:0 p16: 16 SPBRG: 99 BPS : 10000
SYNC:0 BRG16:1 BRGH:0 p16: 16 SPBRG: 49999 BPS : 20
SYNC:0 BRG16:1 BRGH:0 p16: 16 SPBRG: 23 BPS : 41666.6666666667
SYNC:0 BRG16:1 BRGH:0 p16: 16 SPBRG: 65535 BPS : 15.2587890625
SYNC:0 BRG16:1 BRGH:0 p16: 16 SPBRG: 0 BPS : 1000000
SYNC:0 BRG16:1 BRGH:1 p16: 4 SPBRG: 65535 BPS : 61.03515625
SYNC:0 BRG16:1 BRGH:1 p16: 4 SPBRG: 0 BPS : 4000000
SYNC:1 BRG16:1 BRGH:0 p16: 4 SPBRG: 65535 BPS : 61.03515625
SYNC:1 BRG16:1 BRGH:0 p16: 4 SPBRG: 0 BPS : 4000000
SYNC:1 BRG16:1 BRGH:1 p16: 4 SPBRG: 65535 BPS : 61.03515625
SYNC:1 BRG16:1 BRGH:1 p16: 4 SPBRG: 0 BPS : 4000000
(#) Tasznka válasza f2f2 hozzászólására (») Okt 6, 2016 /
 
Ezzel a beállítással a Fosc/(16*(Baud+1)) -->16000000/(16*(9600+1)) kellene lennie,ez kb.103-104-re jön ki.De amúgy az adatlapon pont van leírás sok beállításról,pont ez is benne van, 274.oldal.
(#) usane válasza attika hozzászólására (») Okt 6, 2016 /
 
Így van, viszont RB0-t bemenetnek kell állítanod a kapcsolás szerint.
(#) attika válasza usane hozzászólására (») Okt 6, 2016 /
 
Igen az már világos csak amit írtam az pont nem szemlélteti azt, hogy most melyik az RA0 és melyik az RA7. Szóval ha így van, hogy TRISA = 0b01001011 akkor az RA0 bemenet és az RA7 meg kimenet?
Mert ha TRISA = 0b01111110 akkor ebből nem derül ki, hogy melyik a RA0 és RA7.
(#) Pali79 válasza attika hozzászólására (») Okt 6, 2016 / 1
 
Dehogynem. Így jönnek sorba, ezért jó ilyen esetekben bináris számokkal dolgozni. Ahol 1 van az beneten, ahol 0 az kimenet.
  1. RA7RA6RA5RA4RA3RA2RA1RA0
  2. 01111110
(#) attika válasza Pali79 hozzászólására (») Okt 6, 2016 /
 
Igen így jobban átlátható, köszönöm.
Én is így gondoltam csak másképp vezettem fel.
(#) f2f2 válasza Tasznka hozzászólására (») Okt 6, 2016 /
 
Ohhh malőr
megvan egyik tesztnél levettem 4MHz re és úgymaradt
ajjj 2500 el küld így de 2400 al is jól veszi
(#) Beles hozzászólása Okt 6, 2016 /
 
Sziasztok!
PIC18F családnál C18 fordítóval hogyan működik a linker script file? Definiálva van a bootloadernek a memória rész, meg a saját kódomnak is. De nekem valamiért a saját kód is a bootloaderbe kerül. Hogyan tudom megadni a fordítónak hogy melyik cím után kezdődjön a programom?
(#) kristof9511 hozzászólása Okt 6, 2016 /
 
Sziasztok!
Nem régen kezdtem az ismerkedést a pic-ek világával! Assembly-ben programoztam már pic-et. Szeretnék készíteni egy sweep generatort. Nos a próblémám igazából az hogy nem tudom hogyan vagy mi alapján növeljem a frekvenciát. Illetve ti hogyan állnátok neki ennek a kis projektnek?
(#) Beles válasza kristof9511 hozzászólására (») Okt 6, 2016 /
 
Szia!
Ez attól függ, milyen PIC-et használsz?
(#) bbalazs_ válasza kristof9511 hozzászólására (») Okt 6, 2016 /
 
Tablazattal. A tablaban leteve az ido.
(#) Pali79 válasza kristof9511 hozzászólására (») Okt 6, 2016 /
 
Szia! Bevallom őszintén fogalmam sincs a sweep generátorokról, de PIC-kel csak négyszög jelet tudsz rendesen, könnyen előállítani. Azt volna jó tudni, hogy mekkora freki a cél, könnyebben lehet valami okosat mondani.
(#) patrik81 hozzászólása Okt 6, 2016 /
 
Sziasztok!

Átírtam egy pic16f877 pwm vezérlő programját,de nem működik.Valaki meg tudná nézni?
Előre is köszönöm.

pwm.txt
    
(#) Pali79 válasza patrik81 hozzászólására (») Okt 6, 2016 /
 
Mondjuk az első hiba, hogy az elején 16F690-van beleírva...A többihez nem tudok hozzászólni, én assemblyzek.
(#) kissi válasza kristof9511 hozzászólására (») Okt 6, 2016 /
 
Szia!
Az egyes frekikhez szükséges beállításokat le kell tárolnod egy táblázatba, majd a táblázat adatai között a sweep időnek megfelelően lépkedni a határfrekiknek megfelelő értékek között.
Nem biztos, hogy LED villogtatás után ez a következő feladat, először külön-külön próbálgasd ki a TIMER-ek működtetését, a táblázat kezelését, a sweephez szükséges menük kialakítását ( ha pl. potikkal akarod beállítani az értékeket, akkor az AD átalakítást !) és a megszakítással is tisztában kell lenned ! Ezek után ki kell választanod a megfelelő PIC-et ( pl. lábszám, perifériák, memóriaméret, AD átalkítók száma szerint!), elkészítened a kapcsolási rajzot és kezdheted a programozást egy deszkapanelen. Ha kész és végleges, akkor NYÁK, dobozolás !
szerk.: Ez egy lehetséges út !
A hozzászólás módosítva: Okt 6, 2016
(#) pompidu hozzászólása Okt 7, 2016 /
 
Sziasztok
Abban kérném a segítségeteket, hogy egy 32bites pic el szeretnék egy rfid modullal és egy gsm/gps modullal kommunikálni I2C buszon keresztül, a problémám az, hogy nem tudom hogy lehet rávenni a pic et hogy a 2db slave-től fogadjon adatot.
Bonyolult ennek a megvalósítása vagy egyszerűen kivitelezhető?
Uarton keresztül tudom könyebb lenne, de szeretném kipróbálni ezt a protokolt is.
Esetleg ha valaki tudna linkelni egy részletesebb leírást hogyan is néz ki ez a szabvány nagyon megköszönném mivel a neten nem nagyon találtam infót (lehet én voltam a vak)
Előre is köszönöm nektek.
(#) Tasznka válasza pompidu hozzászólására (») Okt 7, 2016 /
 
Ha nem azonos a slave-ek címe,akkor mehet 1db I2C-n.Csak a sebességre figyelj,hogy mind a kettő tudja.Amúgy nem vészes a kezelése,csak nézd meg,hogy melyiknél milyen az adatküldés,fogadás menete.Az adatlapokon általában(mindig) van idő-diagram ,amiből látható a menet.
Itt van leírás,amiből kiindulhatsz.
(#) Pali79 hozzászólása Okt 7, 2016 /
 
Sziasztok!
Tanácstalan vagyok, ezért segítséget kérnék. Adott az alábbi nyák és programrészlet. Két gondom van vele. Az egyik, hogy a Timer1 hol elindul, hol nem, de inkább nem. A másik, hogy az LCD inicializálása nem hajtódik végre rendesen. Ha fel van programozva a PIC és bekapcsolom a tápot nem inicializál rendesen. Ha már van táp és mondjuk újraprogramozom a PIC-et akkor működik rendesen. Próbáltam már több várakozást beiktatni, de nem igazán segített.
  1. Start
  2.         clrf    count1                  ;számlálók törlése
  3.         clrf    counta
  4.         clrf    countb
  5.         clrf    count
  6.         clrf    mperc
  7.         clrf    perc
  8.         clrf    ora
  9.         clrf    szamlalo
  10.         banksel ANSEL
  11.         clrf    ANSEL
  12.         clrf    ANSELH
  13.         banksel TRISA
  14.         clrf    TRISA
  15.         clrf    TRISB
  16.         movlw   b'00001011'
  17.         movwf   TRISC
  18.         bsf             PIE1,TMR1IE
  19.         banksel T1CON
  20.         movlw   b'00001111'
  21.         movwf   T1CON
  22.         bsf             INTCON,PEIE             ; Megszakítások engedélyezése
  23.         bsf             INTCON,GIE              ; Globális megszakítás engedélyezés
  24.                
  25.         banksel PORTA
  26.  
  27. LCD_init
  28.         call    Delay255
  29.         movlw   0x2C                    ;4 bites mód beállítása
  30.         call    LCD_Cmd
  31.         movlw   0x06                    ;karaktermód beállítása
  32.         call    LCD_Cmd
  33.         movlw   0x0c                    ;kurzor beállítása
  34.         call    LCD_Cmd
  35.         call    LCD_Clr                 ;kijelző törlése

NYÁK.JPG
    
(#) sonajkniz válasza Pali79 hozzászólására (») Okt 7, 2016 /
 
Az LCD-vel csináltatsz a bekapcsolás után melegreszetet?
(#) Pali79 válasza sonajkniz hozzászólására (») Okt 7, 2016 /
 
Az micsoda? Lehet csinálok, de nem tudom pontosan mire gondolsz.
(#) sonajkniz válasza Pali79 hozzászólására (») Okt 7, 2016 /
 
Bekapcsolás után vársz egy ideig, majd 4x egymás után elküldöd ezt a parancsot:
MOVLW B'00110000'
Ez reszeteli a kijelzőt. Ezután még egy kis kivárás, majd inicializálhatod.
Ugyanis, ha a tápfesz nem elég gyorsan épül fel, a kijelző beborulhat.
(#) Pali79 válasza sonajkniz hozzászólására (») Okt 7, 2016 /
 
Ezt nem igazán értem, Ez a paracs elméletileg a 4 bites mód beállítása, semmi más. Egyébként a fura az, hogy másik áramkörben, másik PIC-kel tökéletesen működik.
(#) sonajkniz válasza Pali79 hozzászólására (») Okt 7, 2016 /
 
Nem igazán.
a 4 bites mód átkapcsolása ez:B'00100000'
Következő: »»   858 / 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