Fórum témák

» Több friss téma
Fórum » MSP430 mikrovezérlők
 
Témaindító: gomzito, idő: Ápr 21, 2006
Témakörök:
Lapozás: OK   70 / 139
(#) Mybuster válasza Mybuster hozzászólására (») Aug 29, 2012 /
 
Működik! Öszeraktam és jó lett bár a kapcs.data senkinek sem ajánlom mert össze vissza vannak a lábkiosztás írásai P1.4..P1.7 stb ezért fogtam és itt az LCD 4 bites kapcs. módon lcd4bitencsináltam meg az adatbit és engedélyezőlábakat pedig a leírtak alapján!
(#) szitko válasza Mybuster hozzászólására (») Aug 29, 2012 /
 
Akkor gratula hozzá. Ha visszaolvasol, valahol Icserny leírta, hogy hogyan kell kalibrálni a belső hőmérőt.
Még egy megjegyzést ha megengedsz: A projektedet olyan könyvtárba/akba mensd amiben nincs ékezet, és írásjel. A fodítok nem szokták tolerálni ezeket.
"C:\Users\Tamás\Documents\FONTOS!!\main.cpp"
(#) Mybuster válasza szitko hozzászólására (») Aug 29, 2012 /
 
Köszönöm,értettem.De van egy kis gond ugye átváltottam C-fokba de az a gond hogy soakt mér 34.3-at 27.6 C hellyet.Nem hiszem hogy az IC. enyire meleg lenne hisz nem is langyos.Átírtam a blog alapján :
FValue = (((sensorValue) - 673) * 423) / 1024 ; / / ° C
még a forumban írt másik módszert is de nem segített.Kisebb szorzó kéne?
(#) szitko válasza Mybuster hozzászólására (») Aug 29, 2012 /
 
Elsőnek mérd meg az "IC"-t, hogy hány fokos, és ha nem annyi akkor jön az előbb említett kalibráció.

Ha már hőmérő a téma. 80%-os, de már működik a napelemes, egyszerű hőmérőm. Kb egy hónapja raktam ki, és azóta folyamatosan megy.
Rövid leírás: Egy 2V 150mA-es napelem tölt egy 1,2V 1800mA-es NiMh akksit, amiből egy TPS61221 csinál 3,3V-ot. A g2452-nek /jelenleg/ egy TC1047A hő szenzor adja az infót, amit egy nokia lcd-n jelenít meg. Egy gyerekjátékból kiszuperál fényérzékelő is helyet kapot, melynek a szerepe, a mikrovezérlő "felébresztése" LPM4-es módból. A mikrovezérlő kb egy percig mutatja az aktuális hőmérsékletet, és utána elmegy aludni, energiatakarékossági okokból, úgy, hogy egy tranzisztor segítségével kikapcsolja az lcd-t Ha a fényérzékelő előtt elmegy valaki, /változik a fény/ akkor a vezérlő felkel, és ismét egy percig az aktuális hőmérsékletet mutatja.
Néhány adat: éber állapotban az áramfelvétel lcd háttérvill nélkül 12mA, háttérvill.-el 21mA.
alvó állapotban, jelen szenzorral 72mikroA, ami ha az eredetileg tervezett szenzor kerül bele, akkor kb 30 mikroA-ra csökken.
A programban a számítás nem ehhez a szenzorhoz készült!

U.i: Ha megunod a belső hőmérőt, dobd össze ezt. Az lcd vezérlésed maradhat, a programomból neked csak az ADC, és a számítás kell.
(#) Mybuster válasza szitko hozzászólására (») Aug 29, 2012 /
 
Köszi szépen,a hosszú választ értelek okés sikerült bekalibrálnom olyan + - 0.5C eltéréssel. Igen gondolkoztam már a nokiás hőmérőn is. Majd átnézem!
(#) szitko válasza Mybuster hozzászólására (») Aug 29, 2012 /
 
Nemrég kaptam 4db nokia 3410-est és 1db 6110-est összesen 500Ft-ért. Nem működnek, de az lcd jó mindegyikben + a ledek. A 3410-es lcd-nek a legegyszerűbb nyákot csinálni.
De az ebay-en már $3.59-ért, ingyen postával is van.
(#) Mybuster hozzászólása Aug 29, 2012 /
 
Csak sikerült összehozni íme a videó. Nagyon szépen köszönöm mindekinek a fáradozását! Bővebben: Link
(#) icserny válasza moderboy hozzászólására (») Aug 29, 2012 /
 
Idézet:
„Mellesleg szerintem azért lehet jó az arduino fordító, mert ha kicsit érted hogy mi hogy van benne és új perifériát kell használni, akkor nem kell fél napig az adatlapot nyálazni.”
Ez igaz, viszont az IAR fejlesztői környezethez képest elbukod vele a szimuláció és a hardveres nyomkövetés lehetőségét. Elég drága árat kell tehát fizetni a "királyi út"-ért!
(#) szitko hozzászólása Aug 29, 2012 /
 
Egy JD-T1800-as lcd-vel gyakorlatozok. Az lcd 128x160-as és azt szeretném megcsinálni, hogy ne vízszintesen /0-128/ írja ki a karaktereket, hanem függőlegesen /0-160/. Magyarul el szeretném forgatni a kijelzőt 90 fokkal. Ennek van valami egyszerű megoldása, vagy a karakterkészletet kell átírni?
(#) moderboy válasza (») Aug 29, 2012 /
 
Először is elnézést, én csak bemásoltam a kódot az eredeti forrásból, de kijavítva, a csinosításával nem foglalkoztam. Másrészt nem tünt fel hogy probléma lenne, nekem nem tolta szét az oldalt (FF 12.0, 1280*1024), de máskor figyelni fogok rá ha kódot illesztek be.
(#) DecebaL válasza szitko hozzászólására (») Aug 29, 2012 /
 
Nem kell a karakter készletet bántani, hanem inicializáláskor kell megadni hogy miként üzemeljen. Ezzel még nem foglalkoztam de, Nokia 3510i kijelzőnél a vezérlő IC adatlapjában találkoztam ilyen leírással. Szerintem ez is tudja.
(#) szitko válasza DecebaL hozzászólására (») Aug 29, 2012 /
 
Köszi a választ.
Azért kérdeztem, mert az adatlapban eddig nem találkoztam ilyesmivel, igaz az adatlapnak még csak a 70. oldalán tartok (ST7735), és még vagy 90-en vissza van. Talán találok valamit róla. Egyébként a "test" program ami az említett linken van rossz (nem az LCD PCB-hez való program!). A kijelző nem indul el, csak egy-két hardveres reset után, de akkor se mindíg. Hála...., ezen már tuljutottam, és elsőre indul, a színeket is "kitaláltam", hogy hogy rakjam össze, csak ennél a "forgatásnál" akadtam el. De majd....

Más. Ha valakinek kell 3410-es kijelző, "ingyen", van két darab, és egy 6110-es (5110). A 3410-es lcd-hez adok nyákot is, csak fúrni kell pár lyukat rajta. Remélem ez nem számít hirdetésnek, hisz ingyen adom.
Kapcs: privi
(#) putr4 hozzászólása Aug 29, 2012 /
 
Sziasztok!

Egy kis segítséget szeretnék kérni. Egy régebbi komment alapján átalakítottam az első cikkben szereplő lcd modul vezérlését g2452-esre. A vezérlés teljesen a p2 portról történik, de van egy kis gond. Ha egyszerűen tápot adok neki usb-n keresztül (vagy tápreset) baromságokat ír ki. Reset gombra is hol rendes szöveget ír hol kínaiul beszél hozzám.

  1. #include "io430.h"
  2. #include "stdint.h"
  3. #include "intrinsics.h"
  4.  
  5. unsigned char i,d;
  6. const unsigned char *ptr1, *ptr2;
  7. const unsigned char betwk[] = {0x02,0x04,0x0E,0x01,0x0F,0x11,0x0F,0x00,    //á
  8. 0x02,0x04,0x0E,0x11,0x1F,0x10,0x0E,0x00,    //é
  9. 0x02,0x04,0x0C,0x04,0x04,0x04,0x0E,0x00,    //í
  10. 0x02,0x04,0x0E,0x11,0x11,0x11,0x0E,0x00,    //ó
  11. 0x02,0x04,0x11,0x11,0x11,0x13,0x0D,0x00,    //ú
  12. 0x0A,0x00,0x11,0x11,0x11,0x13,0x0D,0x00,    //ü
  13. 0x05,0x0A,0x11,0x11,0x11,0x13,0x0D,0x00,    //ű
  14. 0x05,0x0A,0x0E,0x11,0x11,0x11,0x0E,0x00};   //ő
  15.  
  16. #define LCD_PORT     P2OUT
  17. #define LCD_PORT_DIR P2DIR
  18. #define LCD_MASK     BIT3+BIT2+BIT1+BIT0
  19. #define LCD_RS       P2OUT_bit.P4
  20. #define LCD_RS_DIR   P2DIR_bit.P4
  21. #define LCD_E        P2OUT_bit.P5
  22. #define LCD_E_DIR    P2DIR_bit.P5
  23.  
  24.  
  25. #define ChangeBits(reg,val,mask) reg^=((reg^val)&mask)
  26.  
  27. void delay_ms(uint16_t delay) {
  28.          uint16_t i;
  29.          for(i=0; i<delay; i++) {
  30.            __delay_cycles(1000);
  31.          }
  32. }
  33.  
  34. void lcd_toggle_E() {
  35.          LCD_E = 1;
  36.            __delay_cycles(500);
  37.          LCD_E = 0;
  38.            __delay_cycles(500);
  39. }  
  40.  
  41. void lcd_write(uint8_t val, uint8_t cmd) {
  42.   LCD_RS = cmd;
  43.   ChangeBits(LCD_PORT,((val&0xF0)>>4),LCD_MASK);
  44.   lcd_toggle_E();
  45.   ChangeBits(LCD_PORT,(val&0x0F),LCD_MASK);
  46.   lcd_toggle_E();
  47.   __delay_cycles(1000);
  48. }
  49.  
  50.  
  51. void lcd_init (void){
  52.          ChangeBits(LCD_PORT,0x00,LCD_MASK);
  53.          ChangeBits(LCD_PORT_DIR,LCD_MASK,LCD_MASK);
  54.          P2SEL = 0;
  55.          LCD_RS = 0;
  56.          LCD_RS_DIR = 1;
  57.          LCD_E = 0;
  58.          LCD_E_DIR = 1;
  59.          delay_ms(100);                  
  60.          ChangeBits(LCD_PORT,0x30,LCD_MASK);
  61.          lcd_toggle_E ();
  62.          delay_ms(5);                      
  63.          lcd_toggle_E ();
  64.          __delay_cycles(100);            
  65.          lcd_toggle_E ();
  66.          __delay_cycles(40);                
  67.          ChangeBits(LCD_PORT,0x20,LCD_MASK);
  68.          lcd_toggle_E ();
  69.          delay_ms(5);                    
  70.          lcd_write(0x28,0);                  
  71.          delay_ms(5);                        
  72.          lcd_write(0x08,0);                  
  73.          lcd_write(0x01,0);                  
  74.          lcd_write(0x0C,0);                
  75. }
  76.  
  77. void lcd_puts(char* p_str) {
  78.          char c;
  79.          while ((c=*p_str)) {
  80.              lcd_write(c,1);
  81.              p_str++;
  82.          }
  83. }
  84.  
  85. int main(void) {
  86.          WDTCTL = WDTPW + WDTHOLD;          
  87.          lcd_init();
  88.          lcd_puts("mukodj mar");
  89.          lcd_write(0xC0,0);                  
  90.          lcd_puts("teeeeee!");
  91.          while(1) {
  92.  
  93.          }
  94. }
(#) moderboy válasza putr4 hozzászólására (») Aug 29, 2012 /
 
Szerintem az lcd_init(); meghívása után is várj egy kicsit, hátha többet kell gondolkodnia a dolgokon.
(#) DecebaL válasza szitko hozzászólására (») Aug 29, 2012 /
 
Most van egy kis időm én is nézem az adatlapot ha találok valamit szólok.
(#) DecebaL válasza szitko hozzászólására (») Aug 29, 2012 /
 
Az adatlap 61. oldalán van Display Data Direction 7 féle képpen lehet kiíratni az adatot nézd meg hátha valamelyik pont megfelel.
(#) moderboy válasza szitko hozzászólására (») Aug 29, 2012 /
 
Itt nézz körül: Bővebben: Link

Ha jól értem akkor a vezérlőben az LCD méreteit konfigurálja át úgy, hogy megforduljon a kép.
(#) icserny válasza putr4 hozzászólására (») Aug 30, 2012 /
 
Az újabb mikrovezérlőknek több regisztere van, tehát kellene egy P2SEL2 = 0; is.

Próbálkozhatsz a késleltetési idők megnövelésével. De nekem legtöbbször a bizonytalan kontaktusok vagy a hosszú vezetékek szoktak problémát okozni.

Van olyan LCD modul, amelyik érzékeny arra, ha a nem használt adatbitek lógnak a levegőben (D0..D3 legyen földre kötve!).
(#) szitko válasza DecebaL hozzászólására (») Aug 30, 2012 /
 
Köszi mindkettőtöknek.

Valahogy elsiklottam a táblázat felett, de valóban az ott leírtak alapján kell állítani.
A MADCTL regiszter utolsó három bitjeit kell állítani, hogy elfoduljon, de nem értem hogy a háttér miért csak 128 pontból áll ilyenkor, ha elfordítom?

jd-t1800.jpg
    
(#) szitko válasza szitko hozzászólására (») Aug 30, 2012 /
 
Megvan! Már megy rendesen.
Mégegyszer köszi mindkettőtöknek.
(#) putr4 válasza icserny hozzászólására (») Aug 30, 2012 /
 
Sajnos egyik ötlet sem segített. Megnöveltem az lcd inicializálásban lévő késleltetéseket a kétszeresükre. Próbálkoztam a P2SEL=0;-al és kábelek mozgatásával is. Végül mindent visszaállítottam a P1 portra úgy ahogya cikkben is van és tökéletesen működik azzal (tehát a hiányzó adatvonalak földrekötése és kábelprobléma nem lehet a ludas). Viszont, ha hosszan tartom nyomva a resetgombot csinál érdekes dolgokat a p2-es átalakításomra, csináltam is egy videót.

A videó minőségéért elnézést, nem tudok jobban sajnos.
(#) DecebaL válasza szitko hozzászólására (») Aug 30, 2012 /
 
Valamikor én is is nekilátok remélem lesz rá időm. Írtad, hogy az oldalon lévő driver nem működik. Miért?
(#) szitko válasza DecebaL hozzászólására (») Aug 30, 2012 /
 
Két driver van hozzá! Az egyikben (szoftos SPI) benne van a többi lcd (nokia, jd-t1.8", stb..) drivere is, az működik. Viszont van a forumban egy un. teszt progi (hw SPI) amivel én is kísérletezek, ezzel nem indul el az lcd, csak ha indítás után, egy pár mp elteltével (kb míg lefut a program) megnyomod a reset gombot. Hiányzik belőle a szofveres reset, rosszak a késleltetések, és úgy vettem észre, hogy az init-ben nem mindegy a sorrend sem. Ezenkívül a hardveres resetet is az init előtt ki-be kell kapcsolni, egy pár ms-os késleltetéssel. Bár az is lehet, hogy csak én vagyok a béna hozzá.
(#) DecebaL válasza szitko hozzászólására (») Aug 30, 2012 /
 
Én is kedvet kaptam letöltöttem a programot és gondoltam hogy, be üzemelem. Mikor rákapcsoltam a háttér világítást nagyon meglepődtem. A postán megnyomorították rendesen. Külső sérelmi nyom nem látható sehol rajta azért nem is vettem eddig észre mert nem volt időm vele játszani.

DSCN6139.JPG
    
(#) icserny válasza DecebaL hozzászólására (») Aug 31, 2012 /
 
Ez, sajnos, töröttnek látszik. Nekem egy telefonom járt így (megnyomódhatott a zsebemben buszozás közben), ki kellett cseréltetni a kijelzőjét.
(#) szitko válasza DecebaL hozzászólására (») Aug 31, 2012 /
 
Hát ezt nagyon sajnálom, pedig azt hiszem becsomagoltam rendesen. Vagy mégsem, bár a magyar királyi posta ellen semmi sem véd. Sebaj, kb. 3-4 hét múlva kapok az öcsémtől egy újabb csomagot (angliából), mondom neki, hogy guberáljon még ilyen típusú kijelzőket (ezek is onnan vannak), s ha megjön lesz neked is másik, de azt két kispárna között fogom elküldeni.
(#) szitko hozzászólása Aug 31, 2012 /
 
Egy, már beállított, és lefutott perifériát (Timer, ADC, USCI), hogyan lehet alapba (default) visszaállítani, úgy, hogy nem resetelem a vezérlőt? Minden regiszterét nullázam le? De nem biztos, hogy az alapértelmezett beállításban mind nulla.
(#) icserny válasza szitko hozzászólására (») Aug 31, 2012 /
 
Valahol (adatlap, Family Guide) le szokták írni, hogy melyik regiszternek mi az alapértelmezett értéke (ráadásul különbség szokott lenni a Power On és a Reset között - az utóbbi kevesebb bitet állít át).

Ha rám hallgatsz, akkor a reset beállításokkal nem törődve úgy állítod be a regisztereket, ahogy neked megfelelő. Az ADC-nél pl. az a lényeg, hogy kapcsold ki, ne fogyasszon fölöslegesen.
(#) szitko válasza icserny hozzászólására (») Aug 31, 2012 /
 
Igazából az USCI fontos számomra. Egy régebbi hsz-emben említettem, hogy a hw. SPI-t és az I2C-t is szeretném használni, plusz a hw. UART is kell, tehát az SPI, és az I2C SDA egyazon kivezetésen lenne.
Na ezzel odáig eljutottam, hogy az I2C adatvonali felhúzóellenállás nem zavarja az SPI adatvonalat. Továbblépve, egy programban, elindítottam először az SPI funkciót, ami szépen le is futott (JD-T lcd vezérlés), eztkövetően átállítottam I2C-re, és egy eepromba írtam adatot, ami szintén sikeres volt, de ezután az SPI már nem akart lefutni. Az IAR-ban, a regisztereknél megnéztem, és az a baj, hogy az I2C beállításai bennemaradnak, ami természetes, mert az SPI beállításoknál azokhoz a regiszterekhez hozzá se nyúlok. Ezért gondoltam, hogy a legegyszerűbb az lenne, hogy a váltások előtt, valahogy "egycsapásra" alapba kéne állítani az USCI regisztereit.
(#) Ragathol válasza mzozo95 hozzászólására (») Aug 31, 2012 /
 
Itt
Következő: »»   70 / 139
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