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   15 / 139
(#) neogeo2 válasza DecebaL hozzászólására (») Nov 8, 2011 /
 
Nem ide tartozik ugyan, de hogyan rögzítetted a vezetékeket a kijelzőhöz? Csináltál a hozzá nyákot vagy csak simán ráforrasztottál vezetékeket? Ha forrasztottad akkor bírta minden gond nélkül? Nem jött le egyik érintkező sem? A lábkiosztást hol találtad meg?
(#) DecebaL válasza neogeo2 hozzászólására (») Nov 8, 2011 /
 
Erre az LCD -re pont ráforrasztottam az érintkezőkre nagyon vékony vezetékeket, és utána ragasztópisztollyal nyomtam rá egy kis műanyagot.
Az elsőnél mikor csináltam elég sokat szenvedtem és mivel sokáig kínlodtam megolvadt az érintkezők között a műanyag elválasztó is, és kontakt hibás lett. Azóta nem rontottam el egyet sem, igaz a páka hőmérsékletét is levettem olyan 240 fokra. A lábkiosztás a csatolt képen látható
Most a háttérvilágításon agyalok, hogy hogyan oldjam meg, milyen ledet használjak, minden ötlet javaslat jól jön.

3510i.jpg
    
(#) szitko válasza DecebaL hozzászólására (») Nov 8, 2011 /
 
Nem ismerem a 3510i kijelzőjét. A gyári háttérvill. nemjó? Nekem 3120 kijelzőm van egy pár db. annál a bill. megvilágító ledeket használtam háttérvill.-nek.
(#) DecebaL válasza szitko hozzászólására (») Nov 8, 2011 /
 
Jó lenne csak nincs ledem, a panelt amin a ledek voltak elbotoltam.
(#) szitko válasza DecebaL hozzászólására (») Nov 8, 2011 /
 
Nekem van pár bontott nokia telom, küldjek? :hide: Beszoktam menni használt mobilos boltokba, ahol van szervíz, és kérni pár régi telefont.Egy két helyen még örülnek is, hogy elviszem a "szemetet".
(#) t0bi válasza DecebaL hozzászólására (») Nov 8, 2011 /
 
Nem titok, én is találtam a neten és beollóztam az előző kódomba. Nagyon egyszerű, az LCD inicializálása után mehet is. A képet betettem egy header fájlba, ki kellett számolni mekkora legyen, mert a 2452 is csak 8 kB-os. Az IAR kezelőben is le kellett tölteni a 30 napos próbaverziót, mert az tud 8 kB-os kódokat kezelni.
  1. //  *****************************************************************************
  2. //         LCDWrite130x130bmp.c
  3. //  *****************************************************************************  
  4.  
  5.  long    j;    // loop counter
  6.  
  7.   // Data control (need to set "normal" page address for Olimex photograph)
  8.  lcd_command(DATCTL);
  9.   lcd_data(0x04); // P1: 0x00 = page address normal, column address normal, address scan in column direction
  10.   lcd_data(0x00); // P2: 0x00 = RGB sequence (default value)
  11.   lcd_data(0x01); // P3: 0x02 = Grayscale -> 16
  12.  
  13.   // Column address set  (command 0x2A)
  14.  lcd_command(CASET);
  15.  lcd_data(33);
  16.  lcd_data(97); //131
  17.  
  18.   // Page address set  (command 0x2B)
  19.  lcd_command(PASET);
  20.  lcd_data(40);
  21.  lcd_data(89); //131
  22.    
  23.   // WRITE MEMORY
  24.  lcd_command(RAMWR);
  25.  
  26.   for(j = 0; j < 3250; j++) { //25740
  27.     lcd_data(bitmap[j]);
  28.  }

Az SD kártyás megoldás kicsit bonya lehet, de ha bele akarsz mélyedni az MSP-SD kapcsolatba, akkor kiváló.
icserny nem ajánlotta az I2C megoldást, de mivel itthon volt egy 24LC515-osom, most azt szeretném megoldani, hogy a képet ebben tárolom. Találtam is egy jó kódot, de az csak egy bájtos címzéssel dolgozik, ehhez meg kettő kell. Nem tudtok erre valami megoldást?
A képet egy kis programmal alakítom át közvetlen bmp.h fájlnak, ezt is a neten találtam: rgb2bmp.exe
(#) t0bi hozzászólása Nov 8, 2011 /
 
Bocsánat, néhány hibát elkövettem : a memória 24LC512, ezt azért biztos tudtátok. Viszont régebben írtam, hogy 512 kbájtos, pedig csak 512 kbites (64 kbájtos - alig két képre elég).
Az rgb2bmp.exe programot itt találtam:Bővebben: Link
(#) szitko válasza t0bi hozzászólására (») Nov 8, 2011 /
 
Keresgélés közben találtam ezt. Nekem még Kinai.
(#) icserny válasza t0bi hozzászólására (») Nov 9, 2011 /
 
Idézet:
„Találtam is egy jó kódot, de az csak egy bájtos címzéssel dolgozik, ehhez meg kettő kell. Nem tudtok erre valami megoldást?”
A parancsbájt (slave cím + R/W bit) és az első címbájt kiküldése után küldeni kell mégegy bájtot, mielőtt az adatok (vagy olvasásnál a repeated_start) következne. A 24LC512 elég problémamentesnek tűnik. A WP lábat földre kell húzni!

A 24LC515 annyival komplikáltabb, hogy a 16. címbit nem az első címbájtban, hanem a parancsbájtban kell, hogy legyen.
(#) t0bi válasza icserny hozzászólására (») Nov 9, 2011 /
 
Idézet:
„első címbájt kiküldése után küldeni kell mégegy bájtot”
Köszönöm, nekem, mint C-alsósnak a hogyan okoz gondot. Várom már nagyon az msp430 interfészeiről szóló tanulmányodat!
Addig is, hogy mindenki tanulhasson belőle, felteszem azt a jó kis kódot
  1. //******************************************************************************
  2. // MSP430F20xx Demo - USI I2C interface with AT24C02 EEPROM
  3. // Description: USI module is used in I2C mode to transmit 10 bytes of
  4. // data to the AT24C02 EEPROM. The data is split into 2 streams of 8 and 2
  5. // bytes each so it can be prefixed by the page address of the EEPROM device.
  6. // Data is then continuously read from the EEPROM and stored in RAM.
  7. // LED turns on if  transmitted data = received data.
  8. //   ACLK = n/a, MCLK = SMCLK = Calibrated 1MHz
  9. //        
  10. //               MSP430F20x2/3              AT24C02A EEPROM
  11. //             -----------------          -----------------
  12. //         /|\|              XIN|-     - | Vcc             |
  13. //          | |                 |        |                 |
  14. //          --|RST          XOUT|-       |                 |
  15. //            |                 |        |                 |
  16. //      LED <-|P1.0             |        |                 |
  17. //            |                 |        |                 |
  18. //            |         SDA/P1.7|------->|SDA              |
  19. //            |         SCL/P1.6|------->|SCL          GND |
  20. //
  21. // Note: Internal pull-ups are used in this example for SDA & SCL
  22. //       EEPROM slave address = 0x50  
  23. //
  24. //  P.Thanigai
  25. //  Texas Instruments Inc.
  26. //  August 2007
  27. //  Built with IAR Embedded Workbench Version: 3.42A
  28. //*****************************************************************************
  29. #include<msp430x20x2.h>
  30.  
  31. #include "USI_I2CMaster.h"
  32.  
  33. unsigned char TxData0[] = {0,0,1,2,3,4,5,6,7};
  34. unsigned char TxData1[] = {8,8,9};
  35. unsigned char RxData[10];
  36.  
  37. int StatusCallback(unsigned char c);  
  38.  
  39. void main(void)
  40. {
  41.   int j,i;
  42.  
  43.   WDTCTL = WDTPW+WDTHOLD;                   // Stop watchdog
  44.   if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)                                    
  45.   {  
  46.     while(1);                               // If calibration constants erased
  47.                                             // do not load, trap CPU!!
  48.   }
  49.   BCSCTL1 = CALBC1_1MHZ;                    // Load DCO constants
  50.   DCOCTL = CALDCO_1MHZ;
  51.   P1DIR |= 0x01;                            // P1.0 as output (LED)
  52.   P1OUT = 0x00;
  53.  
  54.  /* Initialize USI module, clock ~ SMCLK/128 */
  55.  TI_USI_I2C_MasterInit(USIDIV_7+USISSEL_2+USICKPL, StatusCallback);
  56.  
  57.   /* Acknowledge polling function - LED blinks continuously until slave device
  58.   provides an ACK
  59.  TI_USI_I2CSelect(unsigned char SlaveAddress) */
  60.   while(TI_USI_I2CSelect(0x50))
  61.   {
  62.     P1OUT ^= 0x01;                          // Toggle LED
  63.     for (i = 0; i < 0x3000; i++);           // Delay
  64.   }
  65.  
  66.   P1OUT =0;                                 // Slave acknowledged, LED off
  67.   /* Transmit data to the EEPROM device, prefixed by page address 0x01
  68.    TI_USI_I2CWrite(SlaveAddress, Length, Multi, TxData) */
  69.   __disable_interrupt();
  70.   TI_USI_I2CWrite(0x50,9,0,TxData0);
  71.   __bis_SR_register(LPM0_bits + GIE);
  72.  
  73.   /* Acknowledge polling function - loops continuously until slave device
  74.   provides an ACK */
  75.   while(TI_USI_I2CSelect(0x50));              
  76.  
  77.   /* Transmit data to the EEPROM device, prefixed by page address 0x08
  78.   TI_USI_I2CWrite(SlaveAddress, Length, Multi, TxData)*/
  79.   __disable_interrupt();
  80.   TI_USI_I2CWrite(0x50, 3, 0, TxData1);
  81.   __bis_SR_register(LPM0_bits + GIE); //*/
  82.  
  83.   /* Acknowledge polling function - loops continuously until slave device
  84.   provides an ACK */
  85.   while(TI_USI_I2CSelect(0x50));
  86.  
  87.   /* Reset address counter of the EEPROM device by transmitting the page
  88.   address to be read from (0x00) (Dummy write)
  89.   TI_USI_I2CWrite(SlaveAddress, Length, Multi, TxData)*/
  90.   __disable_interrupt();
  91.   TI_USI_I2CWrite(0x50,1, 1,TxData0);
  92.   __bis_SR_register(LPM0_bits + GIE);
  93.    
  94.  
  95.   /* Read data from the EEPROM device, starting at page address 0x00
  96.   TI_USI_I2CRead(SlaveAddress, Length, Multi, RxData)*/
  97.   __disable_interrupt();
  98.   TI_USI_I2CRead(0x50, 10, 1,RxData);
  99.   __bis_SR_register(LPM0_bits + GIE);
  100.  
  101.   /* This function can be used to end any open I2C transaction.
  102.   Use only if I2C transaction was left open previously by setting stop
  103.   condition bit =1 */
  104.   TI_USI_I2CStop();                          
  105.  
  106.   // check data for validity
  107.   for (j = 0;j<10;j++)
  108.   {
  109.     if (RxData[j]!=j)
  110.     {
  111.       while(1);                             // data invalid, stay in loop  
  112.     }
  113.   }
  114.   P1OUT |= 0x01;                            // data valid, LED on
  115.   while(1);                                 // program ends here
  116. }
  117.  
  118. int StatusCallback(unsigned char c)
  119. {
  120.   return TI_USI_EXI

Jól meg lehet érteni belőle az msp USI I2C működését, ajánlom mindenkinek. Beír a memóriába adatokat, majd kiolvassa, összehasonlítja a beírttal, és ha stimmel, akkor kigyullad egy LED. Ebből akarom kiollózni külön a beírást és az olvasást, csak még azt nem tudom, hogy kell megírni a két bájtos címzést.
(#) DecebaL válasza t0bi hozzászólására (») Nov 9, 2011 /
 
Igen bele akarok mélyedmi az SD megoldásba, mert nekem meg csak az van itthon. És úgy akarom megoldani, hogy közvetlenül bmp -ből, vagy jpg -l olvasni képet.
Nézz szét ezen a linken jó dolgok vannak innen vettem az ötletet
(#) icserny válasza t0bi hozzászólására (») Nov 9, 2011 /
 
Idézet:
„Várom már nagyon az msp430 interfészeiről szóló tanulmányodat!”
Attól félek, hogy ebben az évben már nem lesz időm msp430 mikrovezérlőkről szól cikk írásával foglalkozni.

Idézet:
„csak még azt nem tudom, hogy kell megírni a két bájtos címzést.”
Most nem tudom, hogy az általad beidézett kód ugyanazt a könyvtárat használja-e, ami a SLAA368-ban le van írva. Ha igen, akkor vedd úgy, hogy az "adatok" első két bájtja a cím (a címet is ugyanúgy küldöd, mint az azt követő adatokat), tehát a tömb első két elemét tartsd fenn a címzésnek!
(#) balux33 válasza szitko hozzászólására (») Nov 9, 2011 /
 
Szia!
Hát nekem ez nem kínai hanem török
De egyébként ahogy nézem ezzel nem is lenne túl bonyolult megoldani a képek kirakását az lcd re, és ráadásul fájlrendszert is használ. Én eddig csak olyat találtam ami fájlrendszer nélküli.
Köszi hogy ezt belinkelted, valószínű nemsoká ki fogom próbálni.
(#) szitko válasza balux33 hozzászólására (») Nov 9, 2011 /
 
Ha "megérteném" a más adatlapokhoz képest, túlkomplikált MSP430 adatlapját, és a C-t amit szorgalmasan tanulok,nekem se lenne Kínai (Török).
(#) t0bi válasza icserny hozzászólására (») Nov 9, 2011 /
 
Csavartam, bonyolítottam jobbra-balra, aztán olyan egyszerű, mint a kalapáccsal fejbeverés
(#) t0bi válasza DecebaL hozzászólására (») Nov 9, 2011 /
 
Drukkolok nektek, hogy te, meg szitko meg tudjátok oldani. Aztán majd kíváncsi leszek a fájlrendszer kezelésére, mert az nekem még torony. A jpg kitömörítésről nem is beszélve
(#) DecebaL válasza t0bi hozzászólására (») Nov 9, 2011 /
 
Én is csak most ismerkedem a fájlrendszer kezeléssel, majd meglátjuk mi sül ki a dologból.
(#) balux33 hozzászólása Nov 9, 2011 /
 
Felraktam az IAR 30 napos próbaverzióját mert szükségem lenne 4k-nál nagyobb programra, de valamiért ez is kiírja hogy túl nagy a program mint az ingyenes. ( ha minden igaz regisztrálva van rendesen)
Valaki írta itt hogy ő is felrakta, kérdezném tőle hogy neki működik? És lehet fent egyszerre mindkét verzió?
(#) balux33 válasza balux33 hozzászólására (») Nov 9, 2011 /
 
Sikerült megoldani, de nem jöttem rá mi volt a baja.
Próbálgatom ezt a török programot, annyit már meg tudok csinálni hogy a kártyán lévő txt dokumentumból kiolvasom a karaktereket és írni is tudok bele
(#) t0bi válasza balux33 hozzászólására (») Nov 9, 2011 /
 
Akkor, hát működik rendesen, bravó!
Amikor fölraktam az IAR 30 naposat, az IAR mappában két lehetőség volt, tehát szépen elválasztva működtek.
Most viszont, kevesebb, mint egy hét elteltével, aszonygya, hogy letelt az időm
Nálam a memória IC nem tudja a fizikát: nem ad visszaigazolást, még valamit adjusztálni kell...
(#) neogeo2 válasza DecebaL hozzászólására (») Nov 10, 2011 /
 
Köszönöm!
(#) Spumifater válasza szitko hozzászólására (») Nov 10, 2011 /
 
Hi!
Engem erdekelne, ez privát ügy!
(#) szitko hozzászólása Nov 11, 2011 /
 
Sziasztok.
Elakadtam az SMCLK óra, és az ADC10 beállításában.
  1. BCSCTL1 = CALBC1_1MHZ;    // A gyárilag kalibrált 1 MHz
  2.    DCOCTL = CALDCO_1MHZ;    // DCO frekvencia beállítása
  3.    BCSCTL2 = DIVS_0;              // SMCLK ?

Ha a BCSCTL2 regisztert így állítom be, akkor az SMCLK egyenlő lesz a DCO frekvenciával? A Family Users Guide azt írja, hogy a DIVSx biteket kell 0-ba állítani, hogy 1:1 osztás legyen, csak nem vagyok benne biztos, hogy jól csináltam-e.
A másik kerdésem az lenne,
  1. ADC10CTL1 = INCH_1 + ADC10DIV_3 ;     // A1 bemmenet, ADC óra osztó SMCLK 1/4 ?
  2.        ADC10CTL0 = SREF_0 + ADC10SHT_3 + ADC10ON + ADC10IE;

hogy az ADC10DVI_3-al az SMCLK 1/4 lesz a mintavételezési frekvencia?
Így oldottam meg az ADC10 konfigját, elméletileg jó.
(#) icserny válasza szitko hozzászólására (») Nov 11, 2011 /
 
Ha jól értelek, neked
  1. BCSCTL2 = SELM_0|DIVM_0|SELS_0|DIVS_0|BCOR_0

beállítás kell, de pont ez az alapértelmezett érték, tehát nem is kell foglalkozni vele, ezt a sort elhagyhatod. (Egyébként a SELS_0 és a BCOR_0 nincsenek deklarálva a gyári fejléc állományokban).
(#) szitko válasza icserny hozzászólására (») Nov 11, 2011 /
 
Na most keveredtem össze teljesen, de nem a válaszodtól, hanem a Family Users Guide kevert meg.
A "BCOR_0" nem DCOR ? Mert a BCSCTL2-ben nincs BCOR.
Én azt szeretném, hogy az 1MHz DCO frekvencia legyen egyenlő a másodlagos (SMCLK) frekvenciával, és az ADC10 az SMCLK 1/4-t használja. Ha jól értelmezem az adatlapot és az F.U.G-t, akkor az ADC10CTL1 regiszter ADC10DIVx bitjeivel lehet beállítani az osztást. Tehát ha beállítom az SMCLK-t 1MHz-re, és a ADC10DIV_3-ra, akkor kapom meg az 1MHz-nek az 1/4-részét,és az SMCLK-t további perifériák is használni tudják 1MHz-en.
(#) szitko válasza icserny hozzászólására (») Nov 11, 2011 /
 
Végre megtaláltam ezt az egy mondatot, "default setting". Így már látom, hogy hü**et kerdeztem.
Amúgy összeált, és működik az A/D konverzió. Már csak a PWM-el kell összehoznom.
(#) icserny válasza szitko hozzászólására (») Nov 11, 2011 /
 
Idézet:
„A "BCOR_0" nem DCOR ?”
De igen, csak elírtam, bocs!
(#) szitko válasza icserny hozzászólására (») Nov 11, 2011 /
 
Még egy kérdés, remélem nem butaság.
Ki lehet küldeni valamelyik pin-re az órajelet?
(#) icserny válasza szitko hozzászólására (») Nov 11, 2011 /
 
Melyik órajelet? Nézd meg a MSP430G2xx1 mintlprogramok (SLAC463) között az msp430g2xx1_clks.c programot! Közvetlenül ACLK és SMCLK vezethető ki, kötött lábkiosztással.
(#) szitko válasza icserny hozzászólására (») Nov 11, 2011 /
 
Köszönöm, megnézem. Az SMCLK-ra gondoltam, bocsánat, hogy nem írtam.
Következő: »»   15 / 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