Fórum témák
» Több friss téma |
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 ![]()
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.
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.
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.
Az MSSI modul a megkezdett adatot tovább lépteti kifelé ill befelé. Az adat végén megvárja a kiszolgálást.
Ü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.
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.
Holnap veszek még egy DS1307-et, egy 16F18323-at és próbapenelen összerakom csak azt a részt és meglássuk mi lesz.
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?
Hali!
Leáll 1 karakter után. Hogy mi lenne az értelme nem tudom...
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
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 ?
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.
Aszinkron módban használom, és a CREN érdekelt nem az SREN, de ez a tegnapi kérdésemből kiderül.
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.
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.
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.
É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
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.
Ü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)
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...).
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.
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.
Igen, a szimulátorra gondoltam.
Köszönöm a segítségedet.
Ü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 ?
"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.
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
|
Bejelentkezés
Hirdetés |