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   29 / 139
(#) szitko hozzászólása Jan 18, 2012 /
 
Sziasztok.
Használta már valaki az IAR "Live Watch" funkciót? Sajna nemnagyon írnak róla, vagy csak Én nem találok róla semmit. Hogy kell használni?
(#) icserny hozzászólása Jan 18, 2012 /
 
A tideals.com honlapon rendszeresen hirdetnek félárú akciókat. Most éppen a FRAM memóriájú mikrovezérlővel szerelt MSP-EXP430FR5739 kártyához lehet 50 %-os kuponhoz jutni ($29 helyett $14.50).
(#) szitko hozzászólása Jan 19, 2012 /
 
Sziasztok.
Kisérletezem a PCF8574N-el és egy pár gondom támadt. A D. Dang mintaprogramja alapján, egyenlőre csak küldeni szeretnék adatot, de nem igazán sikerül, ill. sikerült, de csak 8 bitet.
  1. while (1){
  2.     UCB0CTL1 |= UCTR + UCTXSTT;             // adat küldés, start
  3.     tx=0x10;                                // TXbuff 0b00010000
  4.     while (UCB0CTL1 & UCTXSTT);             // várunk míg kiér az adat? UCTXSTT = 0
  5.     UCB0CTL1 |= UCTXSTP;                    // I2C álj
  6.     delay_ms(500);                          // várunk 0,5s
  7.     UCB0CTL1 |= UCTR + UCTXSTT;             // adat küldés, start
  8.     tx=0x00;                                // TXbuff 0b00000000
  9.     while (UCB0CTL1 & UCTXSTT);             // várunk míg kiér az adat? UCTXSTT = 0
  10.     UCB0CTL1 |= UCTXSTP;                    // I2C álj
  11.     delay_ms(500);                          // várunk 0,5s
  12. }

Azt szeretném megcsinálni, hogy minden egyes bitet, külön tudjak állítani. Pl. P0-án villog egy led, de közben a P1-en folyamatosan világít egy másik.
A másik gondom, hogy ha újrafordítom a programot és elindítom a debugot, nem indul újra a PCF8574N, csak ha leveszem a tápot és visszarakom.
(#) szitko válasza szitko hozzászólására (») Jan 19, 2012 /
 
Bizonyos fontos információk, megint lemaradtak. (nem az Én hibámból)
Tehát a kapcsolat I2C-n, G2553 -> PCF8574N. Az I2C init:
  1. #define tx UCB0TXBUF
  2.  
  3.   P1SEL |= BIT6 + BIT7;                     // Assign I2C pins to USCI_B0
  4.   P1SEL2|= BIT6 + BIT7;                     // Assign I2C pins to USCI_B0
  5.   UCB0CTL1 |= UCSWRST;                      // Enable SW reset
  6.   UCB0CTL0 = UCMST+UCMODE_3+UCSYNC;         // I2C Master, synchronous mode
  7.   UCB0CTL1 = UCSSEL_2+UCSWRST;              // Use SMCLK, keep SW reset
  8.   UCB0BR0 = 11;                             // fSCL = SMCLK/11 = ~100kHz
  9.   UCB0BR1 = 0;
  10.   UCB0I2CSA = 0x20;                         // Set slave address
  11.   UCB0CTL1 &= ~UCSWRST;                     // Clear SW reset, resume operation
(#) szitko hozzászólása Jan 21, 2012 /
 
I2C kapcsolatnál, milyen hosszú lehet a két eszközt összekötő kábel?
(#) icserny válasza szitko hozzászólására (») Jan 21, 2012 /
 
Inkább milyen rövid...
(#) icserny válasza icserny hozzászólására (») Jan 21, 2012 /
 
Azt akartam még hozzáfűzni, hogy a felhúzó ellenállást csökkentsd 1 k Ohm-ra, az I2C órajelát pedig csökkentsd (100 kHz vagy kevesebb). A buszvonalak és a rá kapcsolódó bemenetek kapcitása, és a felhúzó ellenállások értéke szabja meg a felhúzás időállandóját és korlátozza a busz sebességét.
(#) szitko válasza icserny hozzászólására (») Jan 21, 2012 /
 
Hőszenzor - G2452 között szerettem volna az I2C kapcsolatot, csak nem szeretném berakni a kályhába a uC-t és az lcd-t. A távolság kb. 30cm.
(#) DecebaL válasza szitko hozzászólására (») Jan 21, 2012 /
 
A 30 cm sok az i2c -nek, 20 cm -rel rengeteget szenvedtem.
(#) szitko válasza icserny hozzászólására (») Jan 21, 2012 /
 
Köszi. A PCF8574N-nél végül sikerült az I2C kapcsolat, viszonylag egyszerűen. Most Lcd megy róla, de ott is az volt a gond, hogy csökkenteni kellett a felhúzóellenállás értékét (10k -> 2.2K), pedig rövid vezetékkel (6cm) volt összekötve.
(#) szitko válasza DecebaL hozzászólására (») Jan 21, 2012 /
 
Akkor maradok az analóg szenzornál.
Köszönöm szépen a válaszokat.
(#) szitko hozzászólása Jan 23, 2012 /
 
Sziasztok.
Hosszú szenvedés után, öszzeállt a két uC (g2553) közötti kapcsolat az USCI A0 UART periféria segítségével, plus az egyik uC, i2c-n keresztül vezérli az lcd-kijelzőt amit egy PCF8574N vezérel.
Egy kis gond azért felmerült. Nem tudom, hogy lehet 16bites adatot elküldeni az UART-on. Valaki segítene ebben?
(#) PLaci hozzászólása Jan 23, 2012 /
 
Sziasztok!
Én még messze állok tőletek tudásban. Azért kérlek segítsetek. Hozzám is megérkezett a LaunchPad szet.
A TI honlapjáról feletettem a linuxos CCS-t működik is, de az új projekt választásnál nem tudom a MSP-430 at választani. Ennek alapján: Bővebben: Link fel akartam tenni a hozzá való programot, de a következő hibaüzenettel lep meg:
Cannot complete the install because some dependencies are not satisfiable com.ti.msp430.msp430ware.feature.group [1.0.0.0] cannot be installed in this environment because its filter is not applicable.
Milyen filtert keres ez rajtam? Illetve mit kellene tennem annak érdekében hogy működjön ez a fejlesztőrendszer? A Linux ami alá feltettem Ubuntu 10.04 LTS
Köszi előre is a segítséget!
(#) viktor886 hozzászólása Jan 24, 2012 /
 
Sziasztok!
Valakinek van működő, kipróbált párh. JTAG programozó kapcsolása, ha igen akkor küldene egy linket a róla!
Köszi!
(#) icserny válasza viktor886 hozzászólására (») Jan 24, 2012 /
 
Én itt keresném: olimex.com Development boards and Tools / MSP430 / JTAG tools.
(#) icserny válasza PLaci hozzászólására (») Jan 24, 2012 /
 
Nem tudom, hogy miért nem megy fel, de ha vigasztal: az MSP430ware tudtommal nem is azt tartalmazza, amire számítasz! Példaprogramok, dokumentáció és hasonló dolgok vannak benne, nem a fordító...

A Launchpad honlapján egyébként a CCS 4-es verzióját ajánlják, de annak meg talán nincs is Linuxos változata.
(#) PLaci válasza icserny hozzászólására (») Jan 24, 2012 /
 
Szia!
Köszi a választ! Azt hiszem nem fogalmaztam érthetően. A CCS fent van Lásd ezt: Bővebben: Link Ezen látszik, hogy a CCS fut (nem wine alól), csak az baj, hogy amikor az új projektet választom a Device fülön a Family sorban, csak azt a C2000-es családot ajánlja fel.
Erre lenne (talán) a megoldás az előző levelemben küldött link.
(#) icserny válasza PLaci hozzászólására (») Jan 24, 2012 /
 
Idézet:
„Erre lenne (talán) a megoldás az előző levelemben küldött link.”
Erre mondtam, hogy szerintem/tudtommal ez nem oldja meg.

Inkább próbáld meg újra telepíteni a CCS 5.1-et, s nézd meg, hogy nem ad-e választási lehetőséget, hogy a C2000 helyett/mellett az MSP430 is támogatott legyen.Telepítési útmutató
(#) szitko hozzászólása Jan 24, 2012 /
 
Sikerült az UART-on egy regisztert küldenem, két bájtra osztva, és a vételi oldalon visszaalakítani.
Íme:
  1. unsiged int reg=0xYYXX;
  2. //--- feloszt ---
  3.   magas_8 = reg >> 8;
  4.   alacsony_8= reg & 0xff;
  5. //--- vissza ---
  6.   reg = (magas_8 << 8) + alacsony_8;


Azthiszem ez jól működik, egy reg. esetén.
(#) PLaci válasza icserny hozzászólására (») Jan 25, 2012 /
 
Szia!
Köszi a türelmedet. Tanácsod szerint megpróbáltam újratelepíteni a programot. Amit itt látsz Bővebben: Link a 6. pontnál, az nekem linux alatt nem teljesen így jelenik meg. Az útmutatóban van egy MPS430 low power sor. Azt kellene kijelölni. Sajnos nálam (lásd képet) Bővebben: Link ez a sor nem jelenik meg. Hiába húzkodom a csúszkát. sehol sincs Mikor meg utólag fel akarom tenni akkor kapom azt a hibaüzenetet ami az első levelemben le volt írva. Lehet nagyon félreértek valamit?
(#) icserny válasza PLaci hozzászólására (») Jan 25, 2012 /
 
Sajnos, csak rosszabbnál rosszabb híreim vannak:
Ezen az oldalon a Letöltések gomb alatt azt írják, hogy az MSP430 és a Stellaris nem támogatottak Linux alatt. Nyilván ezért nem választható telepítéskor...
Ebben a fórumtopikban pedig azt fejtegetik, hogy a CCS 5.1 M7 verzió nem támogatja az MSP430 mikrovezérlőket Linux alatt, majd csak az M8 fogja.

Arra viszont nem találtam utalást, hogy melyik az M7 és melyik az M8 (illetve mikor lesz M8?) változat.
(#) idlob válasza PLaci hozzászólására (») Jan 25, 2012 /
 
Linux alatt (is) lehet használni mspgcc-t Eclipse-el összeházasítva. Valamikor ősszel próbáltam egy délután erejéig forgatni egyet, de nem sikerült a gcc downgrade körül valami normálisan, gdb felcstolása sem triviális, ráadásul a TUSB soroskonverter drivere se túl stabil, egy szó mint száz: TI nem támogatja Linuxot normálisan, és ha a kezdeti problémákon át is jutsz, előbb utóbb újabb problémába vered be a fejed. Persze ha van hangulatod próbálkozhatsz, de amíg a toolchain bütykölésével szöszmötölsz addig nem a mikrovezérlőre fejlesztesz...
(#) PLaci válasza icserny hozzászólására (») Jan 25, 2012 /
 
Háát... köszi! Nem vagyok boldog. Akkor 2 lehetőségem maradt. Vagy várok amég megérkezik az az újabb verzió, vagy keresnem kell valahol egy Windows-s gépet. Egyik sem tűnik túl boldogító megoldásnak.
(#) icserny válasza idlob hozzászólására (») Jan 25, 2012 /
 
Idézet:
„Linux alatt (is) lehet használni mspgcc-t”

Itt található erről egy leírás - How-to: Launchpad programming with Linux

Az MSPGCC honlapja pedig itt található
(#) gyengus válasza PLaci hozzászólására (») Jan 25, 2012 /
 
Wine alatt nem fut a CCS?
Még az is megoldás lehet, ha virtuális gépre (pl virtualbox) felraksz egy Windowst.
(#) szitko hozzászólása Jan 25, 2012 /
 
Miért nem tetszik ez az IAR-nak?
  1. volatile unsigned int tx_16, rx;
  2. volatile unsigned char h_tx, l_tx;
  3. .
  4. .
  5. #pragma vector=USCIAB0RX_VECTOR
  6. __interrupt void USCI0_RX(void){
  7.   while (!(IFG2&UCA0RXIFG));
  8.   h_tx = UCA0RXBUF;                   // RX buffer tartalom mentése
  9.   while (!(IFG2&UCA0RXIFG));
  10.   l_tx = UCA0RXBUF;                   // RX buffer tartalom mentése
  11.   rx = (h_tx << 8 ) + l_tx;        // ???
  12. .
  13. .

Az írja, hogy: " Warning[Pa082]undefined behavior:the order of volatile accesses is undefined in this statement" az "rx = (h_tx << 8 ..." sorra. Pedig definiálva van minden.
(#) icserny válasza szitko hozzászólására (») Jan 25, 2012 /
 
A volatile változókhoz való hozzáférés sorrendje definiálatlan. Ez nem hiba, csak figyelmeztet rá.
(#) szitko válasza icserny hozzászólására (») Jan 25, 2012 /
 
Odáig eljutottam, hogy valami sorrendel van probléma, csak nem értettem, hogy mi. Nem mindegy, hogy hogy definiálom? Vagy, hogy kéne definiálni, hogy ne figyelmeztessen?
(#) idlob válasza icserny hozzászólására (») Jan 25, 2012 /
 
mspgcc4 != mspgcc
A Hackaday-es cikk az előbbiről szól, ami viszont már rég nem támogatott.
Az mspgcc-t nem lehet(ett) 4-es gcc-vel fordítani, ebből voltak olyan bajok amiről fentebb már írtam és ezért készült az mspgcc4 fork.
Viszont jó hogy előkerült a téma, mert azóta vannak bináris csomagok mspgcc-re, ezzel gond nélkül fel lehet szórni Ubuntura: Bővebben: Link
Tehát a cikkben az mspgcc és az mspdebug telepítés része nem aktuális, de helyettesíthető a fenti csomagokkal. A cikk további része természetesen továbbra is használható.
(#) icserny válasza szitko hozzászólására (») Jan 25, 2012 /
 
Mivel nem egyértelmű, hogy a C utasításból milyen gép utasítás-sorozatot generál a fordító (ez függ az optimalizálástól, a memóriamodelltől, de lehet, hogy még a tengerszintre átszámított légnyomástól is... ) és te volatile változóként deklaráltad ezeket, a fordító arra figyelmeztet, hogy a hozzáférés sorrendje nem ismert, ezért (konkurens környezetben) ez befolyásolhatja a program működését.

Ne foglalkozz vele!
Következő: »»   29 / 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