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   22 / 139
(#) t0bi hozzászólása Dec 8, 2011 /
 
Szeretném kihasználni az MSP430 16-bites lehetőségét, ezért lenne egy alapfoku kérdésem.
Hogy tudok két bájtból egy szót alkotni az inicializáláskor?
Tehát, ha van például két cím bájtom:
char Read_AddrH = 0x00 és
char Read_AddrL = 0x00 , akkor automatikusan a
int Read_Addr = 0x0000 (16 bites) ezekből fog állni, vagy kell valami definíciót írnom? Sajnos már nagyon régen tanultam ilyesmit. (Jó itt az "int" jelzés?)
(#) bedoweb hozzászólása Dec 8, 2011 /
 
Tiszteletem!
Leginkább icserny -hez szól a kérdésem, miszerint: Meg valósítható-e az, hogy egy álomba ringatott (standby mod) mikrovezérlőt felkeltve, a nyomógombot nyomva új (esetemben) effekt-et választunk/melyek addig ismétlődnek, míg nem választunk újat/ és miután megvolt a 3-4 effekt, a gomb újbóli megnyomásakor a mikrovezérlő újra álomba merül?

Remélem érthetően írtam le. előre is köszi a válaszokat.
(#) icserny válasza bedoweb hozzászólására (») Dec 8, 2011 /
 
Idézet:
„Megvalósítható-e az, hogy egy álomba ringatott (standby mod) mikrovezérlőt felkeltve, a nyomógombot nyomva új (esetemben) effekt-et választunk/melyek addig ismétlődnek, míg nem választunk újat/ és miután megvolt a 3-4 effekt, a gomb újbóli megnyomásakor a mikrovezérlő újra álomba merül?”
Hát persze, csak ki kell adni a megfelelő helyen a megfelelő __low_power_mode_x(); parancsot (ahol x = 0, 1, 2, 3, vagy 4)! A megszakításban meg __low_power_mode_off_on_exit(); kell.
(#) bedoweb válasza icserny hozzászólására (») Dec 8, 2011 /
 
azt hiszem értem. Azért, ha szépen megkérlek leírsz egy példát amelyben mondjuk a 2 efekt: a 2led egyszerre villog majd gombnyomás után felváltva majd gombnyomás utá megy aludni?
(#) mzozo95 válasza icserny hozzászólására (») Dec 8, 2011 /
 
Szia!

Köszönöm!

Végül nem lett rá szükség, kihasználtam hogy az adc "csak" 10bites...
Készítettem egy egyszerű szervó tesztert, pár példából összeollózva. (mellékeltem a programot)

A szervó jelkábelt a p1,2-re kell kötni, én a tápot az usb + és - lábára kötöttem. az 5kohm os potméter 2 szélső lábát a chip melletti ucc=(vcc) és gnd re kell kötni(egyiket, másikat) és a középső lábát a p1,1re.
A két kis led a lapon az ellenőrzést szolgálja.
A PWM-et a legegyszerűbb módon állítottam elő, a beépített hardware -el.

Ilyen szervók vezérlése lehetséges ezzel a programmal: Link
(#) mzozo95 válasza mzozo95 hozzászólására (») Dec 8, 2011 /
 
lemaradt...:
az újabb szervók ilyen jeleket igényelnek: link
(#) Beachway válasza icserny hozzászólására (») Dec 8, 2011 /
 
Igen, ezt Így már értem. Köszönöm szépen!!
(#) Beachway válasza icserny hozzászólására (») Dec 9, 2011 /
 
Nos most végképpen elveszítettem a fonalat Kipróbáltam ezt a ciklust
while((BIT1 & P1IN) && (BIT2 & P1IN)) és a papír forma ellenére "vagy" feltételt produkál! Ezek után átírtam ténylegesen "vagy" feltételre
while((BIT1 & P1IN) || (BIT2 & B1IN)) és ez produkálta az és feltételt.
Ilyenkor mi van??Most hogy már kezdeném érteni a lényeget, teljesen összezavar.
(#) icserny válasza Beachway hozzászólására (») Dec 9, 2011 /
 
Én már nem tudom követni, hogy mit is akarsz csinálni, de feltehetőleg a de Morgan azonosságok adnak magyarázatot a kérdésedre. A nyomógombok ugyanis fordított logika szerint vannak bekötve, s úgy tűnik, hogy a while ciklusodnál is az ellentett eseményhez rendeltél feltételvizsgálatot. Bővebben: Link

overline{overline{A}\union overline{B}} = A\inter B
(#) icserny válasza bedoweb hozzászólására (») Dec 9, 2011 /
 
Idézet:
„Azért, ha szépen megkérlek leírsz egy példát amelyben mondjuk a 2 efekt: a 2led egyszerre villog majd gombnyomás után felváltva majd gombnyomás utá megy aludni?”
A Launchpad II. cikkem 4_2. programpéldája (p1_3_change_state) írható át legegyszerűbben. Csak a végét mutatom be, mert az elejéhez hozzá sem nyúltam:
  1. //--- Programmegszakítás engedélyezése és a fő programhurok ---------  
  2.   __enable_interrupt();             // A programmegszakítás engedélyezése
  3.   while(1) {
  4.     switch(jelzo) {
  5.     case 0:
  6.       P1OUT ^= BIT0;                // LED1 átkapcsolása
  7.       P1OUT_bit.P6 = P1OUT_bit.P0;  //LED2 = LED1
  8.       __delay_cycles(500000);       // Kb. 500 ms várakozás
  9.     break;
  10.     case 1:
  11.       P1OUT ^= BIT0;                // LED1 átkapcsolása
  12.       P1OUT_bit.P6 = !P1OUT_bit.P0; //LED2 = !LED1
  13.       __delay_cycles(500000);       // Kb. 500 ms várakozás
  14.     break;
  15.     default:
  16.       P1OUT &= ~(BIT0+BIT6);        //LED1 és LED2 kikapcsolása
  17.       __low_power_mode_4();
  18.     break;
  19.     }    
  20.   }
  21. }
  22.  
  23. //--- Port 1 programmegszakítás kiszolgálása ------------------------
  24. #pragma vector=PORT1_VECTOR
  25. __interrupt void Port_1(void) {
  26.   P1IFG &= ~BIT3;                  // P1.3 interrupt jelzőbit törlése
  27.   jelzo++;                         // következő állapotba vált
  28.   if(jelzo>2) jelzo=0;
  29.   __low_power_mode_off_on_exit();  //Felébresztjük az alvó CPU-t
  30. }
(#) bedoweb válasza icserny hozzászólására (») Dec 9, 2011 /
 
köszi szépen
(#) Beachway válasza icserny hozzászólására (») Dec 9, 2011 /
 
Konkrétan nem akarok semmit csinálni, csak a megértéshez gondoltam kipróbálok minden logikai műveletet. Az a rész nem volt tiszta nekem ,hogy a függvény feltételéhez hogyan tudunk több feltételt is felcsatolni.De hála neked már tudom! A következőkben megpróbálok más fajta függvényeket is, talán az segít a megértésben.Az a könyv amiből tanulom a C nyelvet nem mikrovezérlőkre van írva (Programozzunk C nyelven) Ezért vannak jócskán nehézségeim a témát illetően.Meg aztán én olyan gyakorlatiasabb ember vagyok.Ha esetleg tudnál nekem ajánlani valami jó kis szakirodalmat......
(#) t0bi válasza t0bi hozzászólására (») Dec 9, 2011 /
 
Az előző kérdésemre találtam némi választ. Az "msp430g2231.h" fájlban az USISR word két bájtból áll: USISRL és USISRH. Tehát valamit strukturálni kell, csak még nem értem kristálytisztán, hogyan. Ha ugyanezt megcsinálom a saját bájtjaimra, az jó megoldás?
icserny, meglátásod szerint jó úton járok?
Szeretnék egy képkonvertáló programot írni, hogy a memóriába, amiből a Nokia LCD-re megy a kép, legalább két kép is beférjen. Jelenleg 24 bites kép van a 24LC512-ben, amit 12 bitesre szeretnék konvertálni. A cím 2 bájtos, amit csak bájtonként lehet elküldeni, de a műveletekhez 16 bites szó kell (a két bájt együtt).
Ezért kellene a cím 2x8 és 1x16 bites alakban is.
(#) icserny válasza t0bi hozzászólására (») Dec 9, 2011 /
 
Az IAR C fordító referencia kézikönyvből az "ANONYMOUS STRUCTS AND UNIONS" (a PDF változatban a 129. oldalon) c. rész foglalkozik ilyesmivel.

Az union segítségével lehet többféle struktúrával definiált változókat összefogni, s ha egy 16 bites változót akarsz felszabdalni, akkor a szeleteket (bájtokat) nyilvánvalóan struktúraként vagy tömbként kell szervezni.

A névtelen unió és struktúra használata lehetővé teszi, hogy nem kelljen összetett címzést használni.

Az alábbiakban egy bugyuta példát mutatok be, amelyben a my_word nevű változó két fele lo_byte és hi_byte neven érhető el.

  1. #include "io430.h"
  2.  
  3. union {
  4.   unsigned int my_word;
  5.   struct  {
  6.     unsigned char    lo_byte;
  7.     unsigned char    hi_byte;
  8.   };
  9. };
  10.  
  11. int main( void ) {
  12. unsigned int data;
  13.   WDTCTL = WDTPW + WDTHOLD;
  14.   lo_byte = 0x55;
  15.   hi_byte = 0x80;
  16.   data = my_word/2;
  17.   return 0;
  18. }
(#) t0bi válasza icserny hozzászólására (») Dec 9, 2011 /
 
Nagyon köszönöm, pont erre volt szükségem!
Érdekes az a két pontosvessző, ezek szerint az union és a struct után is kell?
(#) icserny válasza t0bi hozzászólására (») Dec 9, 2011 /
 
Igen, kellenek.
(#) icserny hozzászólása Dec 10, 2011 /
 
Változások az újabb kiadású Launchpad kártyáknál

Itt azt írják, hogy
1. az újabb kiadású Launchpad kártyákat már nagyobb tudású és lábszámú mikrovezérlőkkel szállítják (MSP430G2452 és MSP430G2553).
2. A tüskesor kétoldalt gyárilag bele van forrasztva a kártyába
3. Az RX/TX jumperek elfordítva is bedughatók, mert a hardveres soros porti kezelés esetén nem jó lábakra mennek ezek a vezetékek (fel kell cserélni).
Erre az utóbbira azok is nagyon ügyeljenek, akik a régi kiadású Launchpadhoz utólag szereztek be MSP430G2553 mikrovezérlőt!
További információ: Link
(#) Beachway válasza icserny hozzászólására (») Dec 10, 2011 /
 
Kár ,hogy pont ezt a fajta tüskesort tették bele. Én hosszas töprengés után pont a párját forrasztottam bele. És ha valaki túl akar lépni a 2 Led ,és az egy nyomógomb adta lehetőségén, egy forrasztás nélküli próba panelen praktikusabb a másik.Még a szobában is el lehet vele legózni, ahová a forrasztót be sem vinném.
(#) bedoweb válasza Beachway hozzászólására (») Dec 10, 2011 /
 
Teljesen igazad van. Én is a hüvelysort forrasztottam be. De ha jobban belegondolsz, nem tart semeddig kikapni a tűskesort és a neked megfelelőt beforrasztani.
(#) icserny válasza Beachway hozzászólására (») Dec 10, 2011 /
 
Ízlés dolga. Én az utóbbi időben szívesebben használok tüskesort a kártyákon, mert az ilyen csatlakozóval szerelt huzal stabilabb kontaktust ad. A másik vége lehet tüske, vagy ugyanilyen hüvely, amibe bedugok egy tüskét, és máris mehet a dugaszolós próbapanel lyukába.
(#) szitko válasza icserny hozzászólására (») Dec 10, 2011 /
 
Én a tüskesort, lefele forrasztottam be, így rá tudom tenni 2db próbapanelre, de tényleg "ízlések és pofonok".
Megnéztem, hogy van-e a TI-nek a LaunchPad-ból raktáron, és "véletlenül" rendeltem egyet. Remélem már az újat küldik. Amúgy az van kiírva, hogy "+shipping", de nem számolnak fel szállítást, kőkemény 985Ft-ot vett le a kártyámról. (A 800ft-hoz képest, jól fel ment az ára, vagy csak az életszínvonal eset? )
(#) bedoweb válasza szitko hozzászólására (») Dec 10, 2011 /
 
nem ment az feljebb. gyengült a forint
(#) gyengus válasza szitko hozzászólására (») Dec 10, 2011 /
 
Majd írd már meg, hogy melyiket küldték!
Köszi
(#) mzozo95 válasza szitko hozzászólására (») Dec 10, 2011 /
 
sziasztok!

A farnell nél leárazás van: Bővebben: Link

Csak sajnos nem működik a PDF es link...
Idézet:
„Sorry, the file you were looking for does not exist on this system or is not available to your site.

Please check your URL and try again.”


Nem tudja valaki hány db hardweres PWM és ADC csatornával rendelkezik a rendszer?

Előre is köszönöm!
Zoltán
(#) icserny válasza mzozo95 hozzászólására (») Dec 11, 2011 /
 
Hónapok óta mondogatom, hogy ilyen kártyát ingyen is lehet kapni, csak regisztrálni kell az Element14 portálon, és be kell küldeni egy projekt elképzelést - magyar nyelven - ebbe a topikba. (A beküldött ötlet próbálja hasznosítani a FRAM memória előnyét!)

A működő linkek pedig itt találhatók:
MSP-EXP430FR5739 Experimenter Board
User's Guide (SLAU343A.PDF)
Az MSP430FR5739 mikrovezérlő "honlapja"
- Adatlap (slas639a.pdf)
- Errata (slaz078a.pdf)
- Family Reference (slau272.pdf)

Az adatlap szerint az MSP430FR5739 az alábbi paraméterekkel jellemezhető:
FRAM: 16 kB, RAM: 1 kB
órajel: max. 24 MHz (8 MHz fölött bonyolódik az élet, mert várakozási ciklusokat kell beiktatni a FRAM műveleteknél)
ADC: 12 bemenet és 2 belső csatorna
Komparátor_D: 16 csatorna
Timer_A: 3 x 3 ch.
Timer_B: 3 x 3 ch.
eUSCI: 2 x UART/IrDA/SPI + 1x SPI/I2C
(#) hayes987 hozzászólása Dec 11, 2011 /
 
Helló!

Van egy problémám az mps430-as programozása közben.

Ez alapján a cikk alapján lefordítottam az első programrészt, ahol 8 led egyszerre villog:

Bővebben: Link

Viszont hiába kötök a kivezetésekre ledet, nem villog, kivéve ha p1.0-ra kötöm rá. Akkor a két beforrasztott leddel együtt villog, ha viszont más portra kötöm rá, akkor semmi.
Sajnos az elektronikában még elég kezdő vagyok, lehet hogy rosszul kötöttem be?
Arra lennék kíváncsi, hogy pontosan mit hova kell kötni, vagy mi lehet a hiba oka.

Üdv: Hayes
(#) icserny válasza hayes987 hozzászólására (») Dec 11, 2011 /
 
A LED katódja a földre legyen kötve, a LED anódja pedig egy áramkorlátozó ellenálláson keresztül valamelyik I/O lábra. Az ellenállás értéke 470 Ohm - 1 kOhm közötti érték legyen.

Ha a LED-et fordítva sikerült bekötni, az sem okoz gondot, csak nem világít.
(#) David.zsombor válasza hayes987 hozzászólására (») Dec 11, 2011 /
 
Szerintem lehet hogy a P1DIR 0XFF helyett 0X01 et írtál...
(#) szitko hozzászólása Dec 11, 2011 /
 
Szeretnék érdeklődni, hogy az alábbi kódrész helyesen működne-e?
  1. #define ertek=30
  2.   .
  3.   .
  4.   .
  5.    AD konverzió megszakítás nélkül;
  6.   #undef ertek
  7.   ertek = ADC10MEM;
  8.   #define ertek

Az állandó értéket szeretném megváltoztatni, de nem kell mindíg, csak bizonyos esetekben.
(#) icserny válasza szitko hozzászólására (») Dec 11, 2011 /
 
Először azt tisztázzuk, hogy a #define direktívával definiált makrók az előfeldolgozónak szólnak, hogy fordítás előtt ezek figyelembe vételével egy kicsit "pofozza át" a forráskódot.

Az ertek = ADC10MEM pedig futáskor, végrehajtási időben történő értékadást jelent. Az "ertek" nev itt nem egy számot, vagy jelsorozatot jelent (mint a #define ertek esetében), hanem egy memóriacímet és egy változó típust képvisel, s hivatkozás esetén ennek megfelelő, az adathoz hozzáférő utasításokat generál a fordító.

Most akkor mi is a kérdés?
Következő: »»   22 / 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