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   580 / 1210
(#) ktamas66 válasza don_peter hozzászólására (») Okt 18, 2014 /
 
Igen, jól gondolod. Ha belső órajelet használsz, a programból kell beállítani a PLL-t. (Persze előbb az órajelet kell átállítani mivel alapból 1MHz-n indul, a PLL-nek minimum 4MHz kell.)
(#) Hp41C válasza don_peter hozzászólására (») Okt 18, 2014 /
 
A 18F2550 a külsó órajelet előbb 4 MHz -re leosztja, aztán jön a PLL... De miért is nem nézed meg magad az adatlapokban. Olyan szép ábrák vannak benne. A 18F2550 esetében még az is olvasható rajta: "(4MHz input only)".
(#) don_peter válasza Hp41C hozzászólására (») Okt 18, 2014 /
 
Már mint 18F4550 nem?
A kérdésemben legalább is ez példa...
Nézem az adatlapot természetesen, de azért csak kérdezek, ha bizonytalan vagyok és nem értem a miérteket.

ktamas66: Köszi. Tehát akkor nem elég, ha egy külső 16MHz-t csatolok a PIC-hez és a PLL-et beállítom?
Be kell állítanom még az OSCCON regisztert is, hogy mekkora kristályt tettem rá?
(#) cross51 válasza don_peter hozzászólására (») Okt 18, 2014 /
 
De a 18f4550 és a 2550 ugyanabba a pdfbe található meg (nem biztos, de azt hiszem ugyanaz a processzor benne csak más lábszám). Összegezve ugyanazt az oszcillátort kapták.
(#) ktamas66 válasza don_peter hozzászólására (») Okt 18, 2014 /
 
Külső órajelnél elég csak beállítani, belsőnél kell csak programból.
(#) don_peter válasza cross51 hozzászólására (») Okt 18, 2014 /
 
Tényleg, ez eddig fel sem tűnt
Megkevert előzőleg kicsit a számozása...
(#) Pali79 hozzászólása Okt 18, 2014 /
 
Urak!

Még mindig szimulátor lenne kérdés. A Timer1 megszakítás nem akar menni sehogy sem. A jelenség, hogy van két szegszakítás, a Timer1 túlcsordulása és a CCP-ről jövő impulzus. A Timer1 megszakításának növelnie kellene egy változót minden túlcsorduláskor. Viszont a szimulátor a Timer1 túlcsordulására nem megy a megszakításra. Ha a CCP impulzust adom neki és a Timer már túlcsordult, tehát a flag bit 1 értéken van, akkor növeli a változót, de csak eggyel, közben a túlcsordulás akár 50 is lehet már.

Tudna valaki segíteni, hogy miként tudnám rendes működésre bírni a Timer1 megszakítását?
(#) Hp41C válasza Pali79 hozzászólására (») Okt 18, 2014 /
 
  1. banksel PIE1
  2. bsf PIE1, TMR1IE
(#) nagym6 válasza don_peter hozzászólására (») Okt 18, 2014 /
 
Idézet:
„Ez teljesen összezavar, mert én úgy gondolkodom, hogy ha a 18F46K22-re rá kötök egy 16MHz kristályt és a 4xPLL-t beállítom akkor érem el a 64MHz-t.”

Jól gondolod, de a belső osszillátor is tud 16MHz frekit "osccon" regiszter, négyszerező PLL bekapcsolás "osctune" regiszter, és lesz 64MHz.
A hozzászólás módosítva: Okt 18, 2014
(#) Pali79 válasza Hp41C hozzászólására (») Okt 18, 2014 /
 
Köszi! A bank váltás nem volt a helyén!
(#) patrik81 válasza Hp41C hozzászólására (») Okt 19, 2014 /
 
Találtam youtube-on egy PIC-es UART-os videót,azt lemásolván sikerült kiíratnom az RCREG-et.Hogy állítom be a baud sebességet?Mármint mi az,hogy vágyott baud sebesség?Az mindig 9600?Vagy azt is számolni kell,hogy a távirányító jele 108ms-onként ismétlődik,és 1000/108=9,259?Hogy állítom be,hogy csak az adat biteket írja ki,és abból is csak az első 8-at?Hiába nyomom a távirányítót,mindig csak 8 db 0-át látok,pedig lehet látni,hogy veszi az infrát.Tehát miért nem ír ki valami értelmeset?

EUSART.txt
    
(#) cross51 válasza patrik81 hozzászólására (») Okt 19, 2014 /
 
Amit én láttam a programodban hibát, hogy nem az SPBRGH kell állítani először hanem az SPBRG-t
az SPBRGH akkor kell ha az SPBRG nagyobb mint 255.
A vágyott BAUD az a szabvány érték mint 300 1200 2400 9600 stb.. viszont amit te is akartál (gondolom 9600 BAUD) 4.000.000/(16*(25+1)) = 9615 tehát ez nem pontosan 9600 és ebből számítható hány % eltérés van (9615-9600)/9600 = 0.16%.
(#) don_peter válasza nagym6 hozzászólására (») Okt 19, 2014 /
 
Akkor elég, ha a konfigurációs beállításokban adom meg, hogy 64MHz-n fusson vagy meg kell adni az "osccon"+"osctune" regiszterekben is?
  1. //CONFIG1H
  2. #pragma config FOSC      = HSMP //0xF3  HS oscillator (medium power 4-16 MHz).
  3. #pragma config PLLCFG = ON //0xFF       Oscillator multiplied by 4xPLL
  4. #pragma config PRICLKEN = ON //0xFF     Primary clock is always enabled.
  5. #pragma config FCMEN = OFF //0xBF       Fail-Safe Clock Monitor disabled.
  6. #pragma config IESO = OFF //0x7F        Oscillator Switchover mode disabled.

Elvileg nem úgy van, hogy ha a külső OSC van megadva és beállítva 64MHz-re, akkor a belső program is annyin fog futni mint amennyire a külső órajel be lett állítva?

Vagy ez a 2 dolog külön van?
Tehát ha a külső órajel fel van húzva 64MHz-re, akkor csak a rácsatolt külső perifériákat hajtja azon a frekvencián és a belső program futása függetlenül a külsőtől fut?
Ebben az esetben gondolom a belső órajelet is fel kell csavarnom 64MHz-ig, hogy egyforma külső és belső sebességem legyen.

Ezt legyetek szívesek elmagyarázni nekem mert nem értem miért nem elég a külső OSC beállítása.
Azt hittem, hogy a belső órajelet csak akkor kell állítani, ha nem használok kristályt.
Előre is köszi..
A hozzászólás módosítva: Okt 19, 2014
(#) eSDi válasza don_peter hozzászólására (») Okt 19, 2014 / 1
 
Üdv!

Mindig azt az oszcit használja a PIC, amit beállítasz. Egyszerre nem megy a kettő (illetve itt van lehetőség a másadlagos oszcival járatni a rendszert). A regiszterek pedig egyáltalán nem biztos, hogy csak egy perifériára tartalmaznak beállítási lehetőséget. Lásd adatlap OSCCON, OSCCON2, OSCTUNE.
A 28. oldalon pedig ott van a blokk ábra az oszcillátorokról.
(#) aroxol hozzászólása Okt 19, 2014 /
 
Sziasztok!

Az "A" regiszter decimal tartalmát ami "69" hogy tudom a legegyszerűbben átküldeni úgy ahogy 008-tol láthato? (kézzel írtam be hogy mit szeretnék)

file.JPG
    
(#) foxi63 válasza aroxol hozzászólására (») Okt 19, 2014 /
 
Szia! csak program írásával, google- in nézzél utána binary to bcd átalakításnak.
(#) don_peter válasza eSDi hozzászólására (») Okt 19, 2014 /
 
Köszönöm, akkor a fentebb bemásolt beállításom jó kiegészítve az OSC regiszterekkel:
  1. OSCCON = 0; // Primary Clock-ot használjuk CONFIG1H beállításai szerint
  2. OSCCON2 = 0x04; // Oscillator drive circuit on
  3. OSCTUNE = 0;

Legalább is remélem...
(#) patrik81 válasza cross51 hozzászólására (») Okt 19, 2014 /
 
Köszi,átírtam SPBRG-re,most már vannak 1-esek is,de minden gomb lenyomásánál 1110 0000.
(#) eSDi válasza don_peter hozzászólására (») Okt 19, 2014 / 1
 
Igen, úgy látom jó. Feltéve, ha nem akarsz PLL-t használni.
Azt az OSCTUNE-ban be kell kapcsolni.
(#) don_peter válasza eSDi hozzászólására (») Okt 19, 2014 /
 
Annyira tudtam
Még sem állítottam be mert azt hittem az a belső órajelhez van..
  1. OSCCON = 0; // Primary Clock-ot használjuk CONFIG1H beállításai szerint
  2. OSCCON2 = 0x04; // Oscillator drive circuit on
  3. OSCTUNE = 0x5F; // PLL enabled, Maximum frequency

Akkor ez lesz a jó beállítás.
Gondolom a 7-es bit "INTSRC" nem kell mert az a belső órajelre vonatkozik... Igaz?
Bár már ebben sem vagyok biztos.. Mert akkor nem 0x5F hanem 0xDF kell az OSCTUNE regiszterbe..
A hozzászólás módosítva: Okt 19, 2014
(#) eSDi válasza don_peter hozzászólására (») Okt 19, 2014 / 1
 
Nem, 0x20-at kell beállítanod. A freki beállítás itt, csak a belsőre vonatkozik.
(#) lastewer hozzászólása Okt 19, 2014 /
 
Sziasztok!

Egy kis segítséget szeretnék kérni , Pic16f628a mikrovezérlővel kapcsolatban.
A vezérlőn kívül van egy ledem , egy próba panelem , és egy tápom hozzá.

Szeretném villogtatni ezt a ledet , és kellene egy példa program hozzá , de nincs külső oscillátorom , tehát nem tudom lehetne e a belsőt használni.

Köszönöm.
(#) don_peter válasza eSDi hozzászólására (») Okt 19, 2014 /
 
Értem köszi a segítséget..
Még lenne egy kérdésem ami nekem nem tiszta.
Szeretném azt kiszámolni, hogy 64MHz-nél mennyi 1 ciklus idő és hogy amikor a késleltetéseket csinálom, hogy számoljak.
Tehát egy olyan függvényen gondolkodom amelynek megadom mekkora kristályt csatlakoztattam és az kiszámolja nekem a szükséges késleltetést.
Tehát lenne egy definíció ami pl.:
  1. #define OSCCLOCK 64000000 // 64MHz

És a függvény helyettem kiszámolná mondjuk mennyi 1ns, 1us, 1ms, 1s.
A számolás meg így menne: 1/(64MHz/4) == 0.0000000625 == 62,5ns
Tehát itt 1 ciklus idő 62,5ns ideig tart.
Eddig jól számolok?
Ha tovább gondolom a dolgot, akkor itt a 62,5ns-ot meg kell szorozzam 16-al és akkor megkapom az 1us-t.
Ezt már csak 1000-el kell szoroznom ahhoz, hogy lépkedjek felfelé.
Kivetítve így nézne ki:
  1. 62,5ns*16 == 1us
  2. 1us*1000 == 1ms
  3. 1ms*1000 == 1s

Jó a gondolat menetem?
Előre is köszi srácok..
(#) don_peter válasza lastewer hozzászólására (») Okt 19, 2014 /
 
Lehet használni a belsőt, de nehéz úgy segíteni, hogy nem tudjuk milyen környezetben programozol.
(#) lastewer válasza don_peter hozzászólására (») Okt 19, 2014 /
 
Értem . Programozó eszköznek van egy ICSP k150 -em , Szoftveres környezetben pedig egy MPLAB IDE V8.92 - t használnék. C nyelven .

Előre is köszönöm.
(#) don_peter válasza lastewer hozzászólására (») Okt 19, 2014 / 1
 
Hi-Tech C 10-12-16 a fordítód?
Meddig jutottál a programban?

Előszőr is kell neked egy ilyen: Adatlap
A hozzászólás módosítva: Okt 19, 2014
(#) lastewer válasza don_peter hozzászólására (») Okt 19, 2014 /
 
Nem tudtam hogy külön kell letölteni a fordítót . Egy linket esetleg tudnál adni hozzá?

A program pedig ez lenne , egy példa , amit találtam :

  1. #define DELAY 3900
  2. main()
  3. {
  4.  
  5. ADIPCFGL = 0x1fff;
  6. TRISB = 0x7fff;
  7. ODCB = 0x8000;
  8. TICON = 0x8030;
  9.  
  10. while(1)
  11. {
  12.  
  13. PORTB = 0x8000;
  14. TMR1 = 0;
  15. while( TMR1 < DELAY) {}
  16. PORTBbits.RB15 = 0;
  17. TMR1 = 0;
  18. while( TMR1 < DELAY) {}
  19. }
  20. }
A hozzászólás módosítva: Okt 19, 2014
(#) don_peter válasza lastewer hozzászólására (») Okt 19, 2014 /
 
Bővebben: Link
Szóval akkor a nulláról kezded...
Akkor érdemes sokat olvasgatni a fórumot, sok kérdésre megkapod a választ...
(#) lastewer válasza don_peter hozzászólására (») Okt 19, 2014 /
 
Igen a 0 ról. Programozás ismereteim már vannak ( Php,mysql) , köszönöm a linkeket
(#) don_peter válasza lastewer hozzászólására (») Okt 19, 2014 /
 
Írtam egy rohadt nagy bejegyzést és eltűnt.
Kajálok és segítek ha más nem előz meg..
Következő: »»   580 / 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