Fórum témák
» Több friss téma |
Fórum » CCS PIC Compiler
Pepe!
A rutinok jó lennének, ha nem prellezze. Egy kattanásra 3-4 -et ugrik. Hasonló jelenség volt nekem megszakítás nélkül, csak durvábban. Hw vagy sw beavatkozás segítene?
Hmm, tudom, h ilyen nem lehet, de lekötöttem földre, és az egész kijelző teli lett (mind a két sor üresről átváltott teli sorrá).
Az LCD adatlapja pedig azt írja, hogy föld esetén írni lehet rá :S 5x megnéztem, még műszerel is kimértem, tényleg az RWt kötöttem le a földre, és nincs rövidzárba semmivel (csak a GNDvel) pontos típusa az LCDnek: rt162-7
Az talán jó lenne. A kontrasztot állítottad a teli soroknál?
Nem, de most megpróbáltam és ugyan az
Úgy indítottam el a programot, hogy RW a 21. lábon volt (RD2), majd amikor futott átdugtam földre, és az egész kijelző ismét teli lett. Próbáltam kontrasztálltó potit tekerni, de semmi nem változott Amikor visszadugtam(RD2-re), akkor megint össze-vissza betűket írt ki. Már azon gondolkodok, hogy fel van cserélni LCD adatlapján pár láb, vagy nem tudom
Letilthatnád a Watchdog-ot és (ha nem használod) az LVP-t is!
A kiírások között pedig nagyobb szünetet is be lehetne iktatni (minek ez a nagy sietség?), pl.: delay_ms(500);
A jelenség ugyan az, csak lassabban
1x elsötétül a kijelző, majd, a következő kiírások lesznek("Hello123456!" kellene kiírnia): (X az üres karakter) XXXHellf123456!X XXXXXXXXXXXXXXXX 1mp múlva: XXXHelf123456!X XXXXXX3456XXXXXX leállítottam a programot, levettem a PicKitet és újraindítottam az egészet akkor: XXXXXXlo123356!X XXXXXXXXXXXXXXXX Majd 1mp múlva: XXXXXXlo123356!X XXXXXXXXXXXXXX34 Tehát nem is ugyan azokat írja ki mindig, hanem mindig mást. Már a monitort is kikapcsoltam, és a vezetéket is egész rövidre vágtam, nehogy az zavarja, de akkor is ugyan ez a jelenség. Csak akkor írja ki jól a szöveget, ha nagyon kicsi kristályt teszek rá, akkor pedig kihagy egy szünetet. Lehet, hogy a a CCS ben lévő lcd.c nem jó ehhez a típusú LCDhez?
Szia!
Ezzel be kellene állítani, milyen LCD-t használsz: setup_lcd( ) Honnan találja ki, hogy hány soros vagy hány karakteres az LCD? Ezt meg az aktuálís kvarchoz átállítod? #use delay(clock=40000000) mert az időzítésekkel baj lesz.
Szia!
A setup_lcd nem csak az olyan PICkeknél kell, ami rendelkezik külön LCD meghajtóval? Még nem használtam LCDt sose, de amiket láttam mintaprogramokat egyiknél se írták bele a setup_lcd-t, még a CCS mintaprogramjaiba se.
Erre sem válaszoltál: Honnan találja ki, hogy hány soros vagy hány karakteres az LCD?
Én saját rutint használok, nagyon nem mindegy...
Valaki használt már HP03MA tipusú nyomásszenzort ?
Annak a lekérdezésével kűzdök, de ha valakinek van hozzá kész library az nagyon hasznos lenne most.
Jaj bocsi!
40Mhzes a kvarc, mert elvileg tud annyit, de 10Mhzel is próbáltam. A CCS mintaprogramjába se ír setup_lcd-t, csak annyit láttam, hogy a HD44780-as nál mindenki az lcd.c-t használja, 4x20nál pedig az lcd420.c-t Annyit láttam még, hogy lcd_type -ot definiálni kell, de 2x16-osnál senki nem definiálta, csak eltérő LCDknél. (de próbálkoztam azzal is)
A 40MHz-es kvarc nem jó. 40MHz-es órajelbemenetet tud, az nem ugyanaz, mint a 40MHz-es kvarc.
Hmm, akkor jól átvertek engem.
mindjárt kiszedek egy 4Mhzeset valahonnan, és megpróbálom azzal.
Ez is jól van beállítva? delay(clock=40 000 000)
Ennek órajelnek kellene lennie (nem feltétlen a kvarcnak), ha nem stimmel, rossz időzítéseket fog használni az LCD rutin (meg más időzítő rutin is) és ettől is hibásan működik az LCD vezérlés.
Jó a 10MHz kvarc csak akkor #USE delay(clock=10000000)
kell. De ha #Fuses: H4 -et is beteszed (HS helyett) akkor a 10MHz-es kvarccal 40MHz-en fog menni a PIC és akkor jó a #USE delay(clock=40000000)
10Mhz-esel ugyan az mint a 40essel.
4Mhz-es H4el ugyan az 4Mhz-es XTvel jól működik, csak szünetet hagy. Viszont a következő furcsaságot vettem észre: Kiíratok valamit, és minden második karaktert kihagyja. beírtam neki egy gotoxy 0,1 -et, és akkor közé ír. a program: Idézet: „ while (TRUE) { delay_ms(500); lcd_putc("\f"); delay_ms(500); printf(lcd_putc, "13579"); delay_ms(500); lcd_gotoxy(0,1); printf(lcd_putc, "24680"); ” ennek az eredménye: először: X1X3X5X7X9XXXXXX majd 0,5mp múlva: X1234567890XXXXX
- Azt nem írtad hogy milyen #USE delay(clock=??????????) értékeket használtál a különféle oszcillátor beállításokhoz!
Mint írtam, ennek összhangban kell lenni a PIC órajelével! Ha a H4 beállítást használod akkor a kvarc négyszeresét kell beállítani. (4 Mhz-en meg nincs értelme H4-et beállítani) - Nem kísérletezni kellene különféle nem összetartozó beállításokkal, mert abból jó nem fog kisülni. Még egy olyan beállítással nem próbáltad ami korrekt lenne... (legalább is a leírásod alapján). Szerintem, egyértelműen időzítési gondjaid vannak a helytelen alapbeállítások következtében.
Bocsánat, tényleg nem írtam!
Tudtommal mindig a kristály órajelét kell beírni, kivéve H4nél, vagy ez nem így van? Szerinted milyen beállítás az ami jó lenne? Sajnos még sose programoztam C-ben PICet Én eddig ezekkel próbáltam, és ilyen eredmények születtek: 4Mhz: h4 beállítva, clock=16M -össze visszaságot ír ki XT beállítva, clock=4M - szünetet hagy 10Mhz: HS clock=10M - össze visszaság H4 clock=40M - Nem tud belépni a debug üzemmódba 40Mhz Hs clock=40M - össze visszaság
Na, ilyenkor kellene leellenőrizni a kapcsolást!
Valami ilyesmi van az #include < lcd.c > előtt a programodban?
#define LCD_ENABLE_ PIN_D0 #define LCD_RS_PIN PIN_D1 #define LCD_RW_PIN PIN_D2 #define LCD_DATA4 PIN_D4 #define LCD_DATA5 PIN_D5 #define LCD_DATA6 PIN_D6 #define LCD_DATA7 PIN_D7 Illetve az RW jó helyre van kötve vagy definiálva?
Nem volt beírva, mert alapból ezek vannak definiálva, de beírtam, és semmi változás.
Végignéztem az összes vezetéket műszerrel (PIC lábától az LCDn lévő csatlakozóig), így vannak bekötve: 19.láb Enable 21.láb RS 22.láb RW 27.láb D4 28.láb D5 29.láb D6 30.láb D7 Szerintem ez jó. Lehet, hogy az LCD.c nem jó a HD44780-as kijelzőhöz? A kijelző tuti jó, legalább is AVRel működött.
Nem annyira jó, szerintem..
19.láb Enable -> D0 21.láb RS -> D2, D1 helyett! 22.láb RW -> D3, D2 helyett! 27.láb D4 28.láb D5 29.láb D6 30.láb D7 Megvan... Működik... közel 1 hetet szenvedtem vele... A hiba a következő volt: A CCS-t nem épp hivatalos helyről szereztem be, és az LCD.C fájl rossz volt...(torrenten valaki szórakozott) Leszedtem egy oldalról az LCD.C fájlt, és utána egyből működött az egész! Ha valaki ugyan ebbe a hibába esik mint én akkor keressen rá neten, és szedje le a jó fájlt! p_istvan-nak nagyon szépen köszönöm a kitartó segítségét! Nélküle már feladtam volna, és sose jöttem volna rá! (Bocsi igazad van, a lábkiosztást illetőleg! csak véletlen elírtam a lábkiosztást!)
Hali!
Tudna valaki adni 1 használható linket amiről a legujabb(vagy ami ujabb 3.168nál) NEM demo verziót le tudnám tölteni.. a rapidshare már nem müködik. Köszi
az MPLAB-ba betett CCS pluginnal hogyan kell dolgozni ?
- úgy mint az MCC18-al, tehát a main.c hez hozzáadom az illető IC linker szkript-jét és Bildet neki ?
Melyik miből... Mivel többféle van.
Itt nézz körül! |
Bejelentkezés
Hirdetés |