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   1055 / 1203
(#) abacs hozzászólása Nov 10, 2018 /
 
Sziasztok! Valaki megtudja mondani, hogy ebben az alprogramban
void Lcd_Start()
{
Lcd_SetBit(0x00);
for(int i=1065244; i<=0; i--) NOP();
Lcd_Cmd(0x03);
__delay_ms(5);
Lcd_Cmd(0x03);
__delay_ms(11);
Lcd_Cmd(0x03);
Lcd_Cmd(0x02); //02H is used for Return home -> Clears the RAM and initializes the LCD
Lcd_Cmd(0x02); //02H is used for Return home -> Clears the RAM and initializes the LCD
Lcd_Cmd(0x08); //Select Row 1
Lcd_Cmd(0x00); //Clear Row 1 Display
Lcd_Cmd(0x0C); //Select Row 2
Lcd_Cmd(0x00); //Clear Row 2 Display
Lcd_Cmd(0x06);
}
, ami innen származik: LCD , hogy miért törli ki soronként a kijelzőt? nem lenne egyszerübb egyszerre törölni? És ez a kódrész milyen szerepet játszik : Lcd_SetBit(0x00);
for(int i=1065244; i<=0; i--) NOP();
Lcd_Cmd(0x03);
__delay_ms(5);
Lcd_Cmd(0x03);
__delay_ms(11);
Lcd_Cmd(0x03);
Konfigurálás lenne? Előre is köszönöm
(#) f2f2 válasza Hp41C hozzászólására (») Nov 11, 2018 /
 
Köszönöm, hogy lepróbáltad.
Amire közben rájöttem.
A PK3 at a legrégebbi verzióval kaptam meg vásárláskor és azt telepítettem.
Ebben a Programm... menüben 3 pipálni való van. A ellenőrzés írás után;Törlés írás előtt; Blokkok megtisztítása...
De alapból a középső bepipálva van és ha ez így van, akkor kilövi a flasht csak eeprom
átírásakor figyelmeztetés nélkül.
Letöltöttem a PK3 3.10 est ebből kivették a közepső törlés almenüt viszont okosabb lett
így ahogy van nem töröl flasht csak eeprom felírásakor.
Ha a PK2 is eszerint van mert nincs külön törlés almenü és nem is okozott törlést
a 18F46K22 nél. Persze valóban ezt futtatottan lehet lepróbálni hogy van e munkavégzés,
azaz egy áramkör nélkül ezt nem lehet ellenőrizni.
Mivel amikor korábban a 16F946 csak eepromírásra elszállt a PK2 vel csinálhattam, mert csak akkor veszem elő a PK3 at, ha nem támogatja.
(#) Hp41C válasza f2f2 hozzászólására (») Nov 11, 2018 /
 
Mára a Pk3 3.10 teljesen elavult (lényegében egy PICkit2 -t csinált belőle). Ha PICkit3 -at használsz, akkor az MpLabX -beli IPE -vel kellene megbarátkozni.
(#) godfather9149 hozzászólása Nov 11, 2018 /
 
Sziasztok!

Egy digitális órát szeretnék megvalósítani PIC 16F1825-el, just-for-fun, a terv az, hogy TMR1 számolja egy órakvarc rezgéseit, CCP modul komparátora ennek alapján másodpercenként generál egy megszakítást, a megszakítás függvényben megtörténnek a számjegyek változóit, majd hardveres SPI-on 8MHz SCK-al frissíti a MAX7219-el felépített kijelzőt, ami BCD dekódol is.

Az adatlapban eddig nem találtam választ a kérdésemre:
Ha hardveres MSSP modullal történő SPI kimenő kommunikáció közben kapok egy interruptot, akkor mi történik? Félbeszakad a kommunikáció, vagy az MSSP modul még ki tudja küldeni az adatot? Valószínűleg nem fog egy egész másodpercig tartani amíg a kijelzőre kiküldök 16x8 bitet, kérdés csak elméleti.
(#) Hp41C válasza godfather9149 hozzászólására (») Nov 11, 2018 / 1
 
Az MSSI modul a megkezdett adatot tovább lépteti kifelé ill befelé. Az adat végén megvárja a kiszolgálást.
(#) eSDi válasza godfather9149 hozzászólására (») Nov 11, 2018 / 1
 
Üdv!

Az MSSP hardver, ha megkapta az adatot, azt onnantól ő intézi, őt nem zavarja a megszakítás. Viszont a programban ekkor figyelni kell, hogy a MSSP bufferbe ne írjon semmi, mert az hibát okoz.

Szerintem a 8MHz-et is vissza veheted 1-re, de még az is bőven sok. Bár nem ismerem a MAX7219 lelkivilágát.
(#) godfather9149 válasza eSDi hozzászólására (») Nov 11, 2018 /
 
Köszönöm és Hp41C-nek is!

MAX 7219 képes 10MHz kommunikációra, adatlap szerint, és nekem is sikerült már összepárosítani pic-el 10 megán, probléma nélkül.
(#) silent15 válasza eSDi hozzászólására (») Nov 12, 2018 /
 
Holnap veszek még egy DS1307-et, egy 16F18323-at és próbapenelen összerakom csak azt a részt és meglássuk mi lesz.
(#) hian hozzászólása Nov 13, 2018 /
 
Sziasztok!
A következőkben kérek segítséget:
USART beállításoknál mit jelent a

CREN: Continuous Receive Enable bit
Asynchronous mode:
1 = Enables continuous receive
0 = Disables continuous receive

Mi az, hogy folyamatos vagy nem folyamatos vétel?
(#) pipi válasza hian hozzászólására (») Nov 13, 2018 /
 
Hali!
Leáll 1 karakter után. Hogy mi lenne az értelme nem tudom...
(#) usane válasza hian hozzászólására (») Nov 13, 2018 /
 
Gyakorlatilag engedélyezni és tiltani lehet vele a vételt, FLAG-et törölni stanélkül, hogy ki-be kapcsolgatnád a modult,stb. Ha átnézed az USART doksiját teljesen, nem pedig csak a regiszterek bitjeit akkor világossá válik.
A hozzászólás módosítva: Nov 13, 2018
(#) hian válasza pipi hozzászólására (») Nov 14, 2018 /
 
Köszi a választ!

Ha CREN=0, akkor az első karakter után hogy lehet újabb egy karakter beolvasni ?
Esetleg CREN = 1 -> 0 után ?
(#) Hp41C válasza hian hozzászólására (») Nov 14, 2018 /
 
Milyen módban használod az USART -ot?

Idézet:
„SREN: Single Receive Enable bit
Asynchronous mode: Don’t care
Synchronous mode – Master:
1 = Enables single receive
0 = Disables single receive
This bit is cleared after reception is complete.
Synchronous mode – Slave: Don’t care”

Szinkron Master módban, ha 1 -ra állítjuk (és egyébként a többi beállítást már elvégeztük), egy adatot vesz, majd a bit automatikusan törlődik. Újabb adat vételéhez újra 1-re kell állítani. A többi módban hatástalan.
(#) hian válasza Hp41C hozzászólására (») Nov 14, 2018 /
 
Aszinkron módban használom, és a CREN érdekelt nem az SREN, de ez a tegnapi kérdésemből kiderül.
(#) Hp41C válasza hian hozzászólására (») Nov 14, 2018 /
 
A CREN nem törlődik "magától" (csak öntől). Azaz, ha CREN ==1, akkor a RCIF bit jelzi, hogy van-e vett adat, amit ki kell olvasni. Ha kiolvasták az adatot, a CREN automatikusan törlödik (ill. ha van újabb adat, akkor azonnal 1 -re is áll jelezve, hogy van még mit kiolvasni).
Ha a program úgy dönt, hogy mostantól nem figyel az UART-ra, a CREN 0 -ra állítható. A 0 -ra állítás után még lehet előzőleg vett adat, amit ki lehet olvasni. Ha megint kell az UART -ra figyelni, a CREN újra 1 -re állítható. A továbbiakban az RCIF bitet kell figyelni.
(#) hian válasza Hp41C hozzászólására (») Nov 14, 2018 /
 
Köszi a gyors választ!
(#) Hp41C válasza Hp41C hozzászólására (») Nov 14, 2018 /
 
Sajnos önellentmondás lett belőle.
Idézet:
„Ha kiolvasták az adatot, a CREN automatikusan törlödik...”

helyett a
"Ha kiolvasták az adatot, a RCIF automatikusan törlödik..."
Lett volna jó.
Elnézést.
(#) usane hozzászólása Nov 15, 2018 /
 
A két adatlap közül vajon melyik mond igazat?

Mikrovezérkő adatlap
Oszcillator reference manual Az mikrovezérlő oldaláról.

És bónusznak:
Az adatlapról vett információ alapján, bár ez MZ-hez tartozik a leírás szerint.
(#) cross51 válasza usane hozzászólására (») Nov 15, 2018 /
 
Érdekes, mondván, hogy a 6 és 42 is +-12%-őt ír és a 42 az mz-hez van mondom megnézem mit ír az MZ doksi.
Az MZ-re véletlen EC doksit találtam először ott 12% majd megnéztem egy EF-et ott 2%.

De mivel ezek a reference manual-ok elég régiek és régi PIC-ekhez készültek ha a dokumentumok kiadását megnézed a PIC32MX-es doksi (és amit néztem MZ-s doksi) a legfrissebb így szerintem a +-2% a valós érték

(az újabb MX-es kontrollerekbe simán beletolhattak egy MZ-s oszcillátort az meg, hogy nincs friss doksi rá...)
A hozzászólás módosítva: Nov 15, 2018
(#) sonajkniz hozzászólása Nov 16, 2018 /
 
Sziasztok!

Tudja valaki, hogy MPLAB X-ben át lehet-e állítani a debug órajelét?
Mert mindegy, milyen órajelet állítok be a programban, a debug mindíg 4MHz-val, azaz 1MHz utasításfrekvenciával számol. Így a ciklusidőket állandóan át kell számolni.
(#) jdani hozzászólása Nov 16, 2018 /
 
Üdv. Lehet-e úgy PIC 16F628A programozni hogy nyákba van öltetve, minden kimenetére van kötve valami, és a PGC-PGD lábára csak egy 4,7K felhúzó ellenállás van kötve? (ez a két bemenet csak egy nyomógomb)
(#) cross51 válasza sonajkniz hozzászólására (») Nov 16, 2018 / 1
 
Ha a simulatorra gondolsz a project properties-en belül rámész a simulator fülre és az első ami fogadni fog az oscillator otptions.

Rendes debuggba meg a config-tól (külső, belső, pll...).
(#) Hp41C válasza jdani hozzászólására (») Nov 16, 2018 /
 
A MCLR lábra mi van kötve?
(#) jdani válasza Hp41C hozzászólására (») Nov 16, 2018 /
 
Semmi, nincs használva.
(#) Hp41C válasza jdani hozzászólására (») Nov 16, 2018 /
 
Meg lehet próbálni:
- MCLR -re kapcsolódó áramkör nem terhel, nincs jelentős kapacitása. --- OK
- PGC, PGD lábakra nem csatlakozik alacsony impedanciás meghajtó. --- OK
- PGC, PGD nem terhel jelentősen. --- Majdnem jó. A PICkit -ekban a vonalakon 4k7 lehúzó ellenállás van, a szintek így Vdd/2 -re állnak be. Talán nem zavarja...
Két módszer van:
- A PICkit adja a tápfeszültséget. Az egész panelt meg kell tudja táplálni.
- A panel tápját használjuk. Ügyelni kell a PICkit beállítására.

Van -e jelentős kapacitás a Vdd és a Vss között? A panel tápegysége elviseli-e, hogy más tápforrás "visszafelé" megtáplálja? Ha igen, akkor lehet az első módszer.
Ha nem, akkor marad a panel általi megtáplálás.
(#) jdani válasza Hp41C hozzászólására (») Nov 16, 2018 /
 
A táplálást úgy fogom megoldani hogy:
A nyákra kivezetem az csatlakozót, ami kell a programozáshoz, és plusz még egy csatlakozót, ami +5V lesz. Ez egy tüskesoron lesz. A sorrend pl PGC PGD MCLR, minusz, plusz(ami csak a pic lábához csatlakozik), és a +5V.
Ha használni fogom az áramkört, a tüskesor végére húzok egy jumpert, ami összezárja a +5V tápot, a plusz PIC lábával. Ha pedig programozni akarom, lehúzom a jumpert, és csatlakozom a kábelt az első 5 PINre. (ezzel a programozó tápja csak a PICre megy).
Tl866 programozót használok.
Itt csak a PGC és PGD volt kérdés, hogy nem e lesz gond.
(#) sonajkniz válasza cross51 hozzászólására (») Nov 17, 2018 /
 
Igen, a szimulátorra gondoltam.
Köszönöm a segítségedet.
(#) Izeg. hozzászólása Nov 18, 2018 /
 
Üdv kollégák!

Elkezdtem már PIC-elgetni, de csak most jöttem rá hogy többféle fordító közül választhatok.

Kezdőként a CCS C vagy a MPLAB XC8 ajánlatosabb? Ahogy elnézem a CCS felhasználóbarátabbb és a dokumentációja is értetőbb számomra, míg az XC8-ra több példaprogramot találtam. Nemtudom mitévő legyek. Melyikkel járok jobban ?
(#) icserny válasza Izeg. hozzászólására (») Nov 19, 2018 /
 
"Jól járni" egyikkel sem fogsz, de ebbe itt ne menjünk bele...
Az XC8 a gyárilag támogatott, tehát ehhez várhatsz több támogatást.
A CCS C csak 45 napos próbaváltozatot nyújt ingyen.
(#) don_peter válasza abacs hozzászólására (») Nov 20, 2018 /
 
Igen ez gyakorlatilag az inicializálása az LCD-nek.
Csak egyszer a program elején kell lefuttatni.
Lcd_SetBit() függvény ebben az esetben csak annyit csinál, hogy kiteszi LCD-re a kiküldött 4bit-es parancsot. (D4-D7)
A for(), NOP(); ciklus egy késleltetés, gondolom az a minimum várakozás az LCD éledéséhez.
Kövire formázó gombokat használd, akkor jobban átláthatóbb lesz a kód.
A hozzászólás módosítva: Nov 20, 2018
Következő: »»   1055 / 1203
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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