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   129 / 139
(#) SBahadurD válasza bbb hozzászólására (») Júl 18, 2014 /
 
Én Káposztásmegyeren lakom, ami Dunakeszi mellet van, Budapest városrésze. Van MSP430 launchpadem. Tudok segíteni a dologban. Viszont azt nem tudom, hogy milyen szoftverrel lehet kiolvasni, és megjeleníteni a memóriatartalmat. A kód visszafejtését viszont már nem vállalom.
(#) bbb válasza SBahadurD hozzászólására (») Júl 18, 2014 /
 
Üzenet ment...
(#) icserny válasza SBahadurD hozzászólására (») Júl 19, 2014 /
 
MSP430Flasher - ez egy parancssori programozó, amivel kiolvasható a flash tartalma - ha nincs letiltva a kiolvasás. Sok öröm ugyan nem lesz a hex listában, de ez már más lapra tartozik...

mspdebug (az Energiában is benne van) - elvileg rávehető, hogy disassembly listát adjon.
(#) bbb válasza icserny hozzászólására (») Júl 19, 2014 /
 
Pont ezt a parancssori programozót küldtem el neki én is Egy próbát megér nekem a dolog, hátha nincs védve...
Mondjuk eleve furcsa, hogy egy tonerhez miért raknak egy msp430-at, amikor bőven elég egy eeprom is (másik színnél egy atmel 24c02 van és a nyákon lévő feliratok alapján szabadon cserélgetik a gyártók a tartalmat aszerint milyen színhez kellene). Itt egyedüli furcsaságot nekem az okozza, hogy miért 2 vezetéken kommunikál a nyomtató és az eeprom/msp430, vajon hogy oldják meg. Ki fogom rajzolni a nyákot, ha lesz rá egy kis időm, mert nem hagy nyugodni a dolog és meg akarom fejteni éppúgy, ahogy a Xerox tonerrel is tettem.
Ha pedig valamilyen oknál fogva nem tudjuk az MSP430-as launchpadet rávenni, hogy FETként működjön, akkor azt se tartom kizártnak, hogy összerakjak egy goodfetet magamnak (van egy rossz BMW iBus kábelem, amiben megsütötték az atmel procit, de az FT232RL tökéletesen működik, így lényegileg a fél alkatrésztömeg már itt hever hozzá).
(#) icserny válasza bbb hozzászólására (») Júl 19, 2014 /
 
Idézet:
„Ha pedig valamilyen oknál fogva nem tudjuk az MSP430-as launchpadet rávenni, hogy FETként működjön...”
Az működni fog. Csak azt nem tudjuk, hogy az MSP430G2452-ben nincs-e letiltva a kiolvasás (kódvédelem)? Ha a Launchpad nem tudja kiolvasni, akkor más eszköz sem fogja tudni.
(#) bbb válasza icserny hozzászólására (») Júl 19, 2014 /
 
Remélhetőleg jövő héten ki fog derülni.
(#) czibo hozzászólása Júl 20, 2014 /
 
Üdv mindenkinek!
Valaki meg tudná mondani, hogy hogyan kell használni a DHT.h, és dht.cpp álományokat?
(#) icserny válasza czibo hozzászólására (») Júl 20, 2014 /
 
Az alábbi linkeken mindent megtalálsz hozzá:
- Talk09: Digitális szenzorok
- Lab09: Digitális szenzorok - Energia példaprogramok

A Lab09.zip állomány kibontása után a "libraries" nevű almappát a felhasználói dokumentumokban az Energia első futtatásakor létrejött Energia mappába kell bemásolni. Ebben van az Energiához módosított DHT.h és DHT.cpp állomány.

Teszteléshez a DHT.h elején a // #define DEBUG sor elejéről vedd ki a kommentjelet, s az Energiával nyisd meg a DHT22_test.ino vázlatot! A terminál ablakban nyomon követhető és ellenőrizhető a kiolvasás eredménye.

Normál használathoz tedd vissza a kommentjelet a fenti sor elejére!

A TRHlogger.ino vázlathoz egy PC-n futó Processing-ben írt alkalmazást is mellékeltem (dht22.exe). A multiplatformos programot csak Windows-ra fordítottam le (kibontás után az application.windows32 mappában a dht22.exe programot kell futtatni).

Feltételezem, hogy az Energia már telepítve van, s hogy a Java futtatói környezet 32 bites változata is telepítve van. A dht22.exe most automatikusan a legelső COM portra kapcsolódik. Ha nem a Launchpad kapcsolat a legkisebb sorszámú COM port (mert a gépnek van beépített soros portja), akkor a Processing-et is telepíteni kell, és a programot újra kell fordítani! Újrafordítás előtt a dht22.pde forrásállomány alábbi sorában a "0" helyére nagyobb sorszámot kell írni:
  1. Dev_Board = new Serial(this, Serial.list()[0], 9600);


Ha pl. van beépített COM1 port és a következő aktuálisan elérhető soros port (pl. COM5)
a Launchpad kártya, akkor a "0" helyére "1"-et kell írni (a második eszköz...).

A Talk09.pdf-ben megtalálható a huzalozási vázlat és a legszükségesebb információ.
(#) czibo válasza icserny hozzászólására (») Júl 21, 2014 /
 
Köszi a fáradozásodat, mindent úgy próbáltam csinálni ahogy leírtad, viszont a DHT22_test megnyitása után ilyen hibaüzeneteket produkált

dht22.jpg
    
(#) icserny válasza czibo hozzászólására (») Júl 21, 2014 /
 
A Tools menüben milyen kártyát/mikrovezérlőt választottál? Úgy tűnik, hogy nem fér bele a memóriába. MSP430G2553-mal mennie kell, a kisebbeknél lehet kevés a memória...
(#) czibo válasza icserny hozzászólására (») Júl 24, 2014 /
 
Köszi a segítséget!
A 2553-al működik
(#) czibo hozzászólása Aug 2, 2014 /
 
Üdv mindenkinek!
Azt szeretném megkérdezni, hogy az MSP430G2553 tud-e két darab DHT 22-t kezeleni, és ha igen akkor hogyan?
(#) lorylaci válasza czibo hozzászólására (») Aug 2, 2014 /
 
Ha jól nézem, itt egy 1 vezetékes kétirányú kommunikáció van.

Miután az MSP430G2333-n van bőven elég szabad láb, én nem látom semmi akadályát annak, hogyha 1 darab DHT22 kezelésére beprogramoztad, akkor egy másik lábra ne köss még egy eszközt, és a kommunikácót az egyik után a másikon megismételd.

Ahogy nézem először ki kell adni egy alacsony bitet mininum 1ms-ig, majd fel kell húzni. Ezután azt a lábat át kell állítanod kimenetről bemenetre. Számomra nem világos, hogy a szenzor az órajelet honnan szedi, vagy milyen órajelen dolgozik. Szóval ennél többet nem tudok mondani.
(#) icserny hozzászólása Aug 2, 2014 /
 
Ubuntu 14.04 LTS-sel van valakinek tapasztalata? Tegnap raktam fel, s "természetesen" ebben sem használható az MSP430 Launchpad soros portja, s a korábbi kiadáshoz javasolt kernelfoltozás (a cdc-acm driverben) sem használható, mert közben a cdc-acm.c forráskód is jelentősen megváltozott.

Még nem tudom, hogy csak a tegnap felrakott Linux rendszert vágjam a kukába (egyéb gondjaim is vannak vele), vagy az MSP430G2 Launchpad kártyát is dobjam mellé, mert nagyon unom a szerencsétlenkedéseit!
(#) moderboy válasza icserny hozzászólására (») Aug 2, 2014 /
 
Nem szeretném leszólni a linuxot, félre ne értsd, de ebben az esetben úgy látszik Windows alá van kitalálva. Virtuális XP esetleg?
(#) kisedison válasza icserny hozzászólására (») Aug 2, 2014 /
 
Én Linux párti vagyok de sajnos úgy látszik windows alatt ez jobban megy. Ezért voltam kénytelen egy xp-t is felrakni.
(#) icserny válasza moderboy hozzászólására (») Aug 3, 2014 /
 
Idézet:
„Nem szeretném leszólni a linuxot, félre ne értsd...”
Én sem, mert egyébként az összes többi kártya vígan megy, külön driver telepítése nélkül. Például az MSP430F5529 a FET biztosította soros porton és a saját USB portján (USBserial mintapélda) is vígan kommunikál. Csak arra kell vigyázni, hogy a sok soros port között el ne keveredjen az ember:
/dev/ttyACM0 - ez maga a FET
/dev/ttyACM1 - ez soros kommunikációs csatorna a FET-en keresztül
/dev/ttyACM2 - ez pedig at USBserial virtuális soros port, ami csak akkor jelenik meg, amikor már fut egy olyan program az F5529-ben, ami USB CDC eszközt valósít meg.

Idézet:
„Virtuális XP esetleg?”
Van valódi Windows7 is a gépen, tehát erre nem gondolnék...
A hozzászólás módosítva: Aug 3, 2014
(#) szitko válasza icserny hozzászólására (») Aug 3, 2014 /
 
Most kezdtem foglalkozni/tanulgatni a Linux rendszert (kb két hete). Feltettem az Ubuntu 14.04 -et plusz az Energiát. Egy hete szenvedek, minden este, azzal, hogy a soros kommunikáció összejöjjön, de úgy látom, hogy a siker nem fog mostanában utolérni. Persze win7 alatt minden rendben.
(#) icserny válasza szitko hozzászólására (») Aug 4, 2014 /
 
Egyelőre csak az MSP430F5529-et tudom ajánlani. Ennél is előfordul, hogy csak azután működik, hoyg kézzel beállítottam a sebességet. Például így:

  1. stty -F/dev/ttyACM2 raw 9600


Felraktam a CCS6 bloatware-t is, kb. harmadik nekifutásban a home könyvtáramba rakva működik is. A G2 Launchpad és a Fraunchpad kártyákat nem látszik ismerni (az (/etc/udev-be sem ír számukra semmit). Az F5529 kártyával megy a debugolás is, némi kínlódás után (sebesség kézi beállítása), még a terminál ablakot is sikerült működésre bírni.

CCS6.png
    
(#) szitko válasza icserny hozzászólására (») Aug 4, 2014 /
 
Mint kezdő Linuxos, egyenlőre azzal is szenvednem kell, hogy X fájlt, Y helyre másoljam (nincs mindenhol rendszergazda jogom...).
Az F5529.et próbáltam. Az nálam mindenféle trükközés nélkül megy.
(#) icserny válasza szitko hozzászólására (») Aug 5, 2014 /
 
Én meggondolatlanul felraktam az Arduino IDE-t is, meg a CCS 6 legújabb kiadását. Akkor mintha olyan dolgok is "elromlottak" volna, amelyek korábban "trükközés nélkül" is működtek.

Például az Energia prgramletöltője (mspdebug) újabban hibát dob (valószínűleg a CCS6 telepítés során került be valami az install_drives.sh futtatása során, ami miatt sima user módban nem tudja az udev eszközkezelést végrehajtan). Úgy sikerült úrrá lenni a dolgon, hogy az egyébként /opt/energia könyvtárba telepített csomag fájljait a root tulajdonába adtam, s az mspdebug programra bekacsoltam az s bitet:
  1. sudo chmod +s mspdebug

Így az mspdebug root jogosultsággal fut, és tudja kezelni a kernel modulokat, amivel korábban a CCS6 telepítése miatt gondja volt/lett.
A hozzászólás módosítva: Aug 5, 2014
(#) czibo hozzászólása Aug 11, 2014 /
 
Üdv mindenkinek!
Néhány hozászólással ezelőtt kérdeztem hogy MSP430G2553 tud-e kezelni két darab DHT22-őt. Azt azonban nem Írtam hogy ENERGIA környezetben. Sajnos ezzel kapcsolatos infót nem találtam, így ez-idáig nem is sikerült. Ha valaki tud rá megoldást megköszönném.
(#) szitko válasza czibo hozzászólására (») Aug 11, 2014 /
 
Szerintem kaptál választ...
Nem foglalkoztam még ilyen szenzorral, de szerintem semmi akadály nincs annak, hogy több szenzort kezelj egy mikrovezérlővel.
(#) icserny válasza czibo hozzászólására (») Aug 11, 2014 / 1
 
Választ azért nem kaptál, mert feltehetőleg egyikünk sem próbálkozott még vele. Próbáld ki, az a legegyszerűbb! Az alábbi sor helyett
  1. DHT dht(DHTPIN, DHTTYPE);

valami ilyesmivel próbálhoznék:

  1. DHT dht1(P2_3, DHT22);    //Első szenzor P2.3-ra kötve
  2. DHT dht2(P2_4, DHT22);    //Második szenzor P2.4-re kötve



Kiolvasásnál is a dht1, illetve dht2 példánynévre kell hivatkozni:
  1. float h = dht1.readHumidity();
  2.    float t = dht1.readTemperature();
  3.     Serial.print("Humidity: ");
  4.     Serial.print(h,1);
  5.     Serial.print("  ");
  6.     Serial.print("Temperature: ");
  7.     Serial.print(t,1);
  8.     Serial.println(" *C");
  9. //---------------------
  10.     float h = dht2.readHumidity();
  11.     float t = dht2.readTemperature();
  12.     Serial.print("Humidity: ");
  13.     Serial.print(h,1);
  14.     Serial.print("  ");
  15.     Serial.print("Temperature: ");
  16.     Serial.print(t,1);
  17.     Serial.println(" *C")


Nyilván lehet elegánsabban és hatékonyabban is...
A hozzászólás módosítva: Aug 11, 2014
(#) czibo válasza icserny hozzászólására (») Aug 11, 2014 /
 
Köszönöm a segítséget, teljesen jó amit írtál
(#) czibo hozzászólása Aug 17, 2014 /
 
Lenne még kérdésem !
A DS18B20-as hőszenzor ugyan-úgy használható mint a DHT22, csak más ccp, és h fájlok kellenek hozzá? Az ARDUINO-hoz találtam Dallas temperature könyvtárat, az használható-e Energia programmal? Az értékelést jól csináltam?
A hozzászólás módosítva: Aug 17, 2014
(#) icserny válasza czibo hozzászólására (») Aug 18, 2014 /
 
Találhatsz az Energiához is: Energia Library OneWire DS18B20
(#) szitko válasza czibo hozzászólására (») Aug 18, 2014 /
 
Még régebben összeollóztam egy progit, DS1821-hez Energiába.
  1. #define WIRE_PORT P2_2
  2.  
  3. unsigned int readBytes(int count)
  4. {
  5.     unsigned int val = 0;
  6.     for (int i = 0; i < count; i++)
  7.     {
  8.         val |= (unsigned int)(ds1821_read_bits( 8, WIRE_PORT) << i * 8);
  9.     }
  10.     return val;
  11. }
  12.  
  13. void setup()
  14. {
  15.   Serial.begin(9600);
  16. }
  17.  
  18. void loop()
  19. {
  20.  
  21.   byte temp_read = 0;
  22.   unsigned int count_remain = 0;
  23.   unsigned int count_per_c = 0;
  24.   byte configuration_register = 0;
  25.  
  26.   ds1821_reset(WIRE_PORT);
  27.   ds1821_write_bits(8, 0xEE, WIRE_PORT); //Start Converting the temperatures  
  28.  
  29.    do {
  30.         delay(1);
  31.         configuration_register = 0;
  32.         ds1821_reset(WIRE_PORT);
  33.         ds1821_write_bits(8, 0xAC, WIRE_PORT);
  34.  
  35.         // Read the configuration Register from the DS1821
  36.         configuration_register = readBytes(1);
  37.     } while ((configuration_register & (1 << 7)) == 0);
  38.    
  39.     ds1821_reset(WIRE_PORT);
  40.     ds1821_write_bits(8, 0xAA, WIRE_PORT);
  41.     temp_read = readBytes(1);
  42.  
  43.     // Get Count Remaining
  44.     ds1821_reset(WIRE_PORT);
  45.     ds1821_write_bits(8, 0xA0, WIRE_PORT);
  46.     count_remain = readBytes(2);
  47.  
  48.     // Load The Counter to populate the slope accumulator
  49.     ds1821_reset(WIRE_PORT);
  50.     ds1821_write_bits(8, 0x41, WIRE_PORT);
  51.  
  52.     // Read Count Per Deg
  53.     ds1821_reset(WIRE_PORT);
  54.     ds1821_write_bits(8, 0xA0, WIRE_PORT);
  55.     count_per_c = readBytes(2);
  56.    
  57.     if (temp_read >= 200) temp_read -= 256;
  58.  
  59.     float highResTemp = (float)temp_read - .5 + (((float)count_per_c - (float)count_remain) / (float)count_per_c);
  60.    
  61.     Serial.print(highResTemp);
  62.     Serial.println(" Celsius");
  63.  
  64.    delay(1000);
  65. }
  66. //-------------------------------------------------------------------------------------------
  67.  
  68. int ds1821_reset(int pin){
  69.  
  70.   pinMode(pin, OUTPUT);
  71.   digitalWrite(pin, LOW);
  72.  
  73.   delayMicroseconds( 480 );
  74.   pinMode( pin, INPUT );
  75.   delayMicroseconds( 65 );
  76.  
  77.   int bus = digitalRead(pin);
  78.   delayMicroseconds( 415 );
  79.  
  80.   return ( bus == LOW );
  81. }
  82.  
  83. int ds1821_read_bit(int pin){
  84.  
  85.   pinMode(pin, OUTPUT);
  86.   digitalWrite(pin, LOW);
  87.  
  88.   delayMicroseconds( 1 );
  89.   digitalWrite( pin, HIGH );
  90.  
  91.   pinMode( pin, INPUT );
  92.   delayMicroseconds( 5 );
  93.   int value = ( digitalRead( pin ) == HIGH );
  94.  
  95.   delayMicroseconds( 55 );
  96.   return value;
  97. }
  98.  
  99. void ds1821_write_bit(int b, int pin){
  100.  
  101.   pinMode(pin, OUTPUT);
  102.   digitalWrite(pin, LOW);
  103.  
  104.   delayMicroseconds( 15 );
  105.  
  106.   if ( b ) {
  107.     digitalWrite( pin, HIGH );
  108.     delayMicroseconds( 45 );
  109.   } else {
  110.     delayMicroseconds( 45 );
  111.     digitalWrite( pin, HIGH );
  112.   }
  113.   delayMicroseconds( 1 );
  114. }
  115. int ds1821_read_bits( int bits, int pin ){
  116.  
  117.   int value = 1 << (bits-1);
  118.   int b = 0;
  119.  
  120.   while ( bits > 0 ) {
  121.      b >>= 1;
  122.      
  123.      if ( ds1821_read_bit(pin) ) {
  124.      b |= value;
  125.      }
  126.      
  127.      --bits;
  128.   }
  129.  
  130.   return b;
  131. }
  132.  
  133. int ds1821_write_bits( int bits, int w, int pin ){
  134.  
  135.   if ( !ds1821_reset(pin) ) {
  136.     return 0;
  137.   }
  138.  
  139.   while ( bits > 0 ) {
  140.     ds1821_write_bit( w & 1, pin );
  141.     w >>= 1;
  142.     --bits;
  143.   }
  144.  
  145.   return 1;
  146. }

Azt nem tudom, hogy a DS18b20-hoz jó-e, olyanom nincs. A DS1821-el működik.
(#) czibo válasza szitko hozzászólására (») Aug 18, 2014 /
 
Köszi majd ha megérkezik a DS18b20 kipróbálom.
A másik probémám, hogy napok óta próbálkozom a megszakításokkal, csa az a bajom energiához nem nagyon találok példaprogramokat.

  1. int pin = 13;
  2.  volatile int state = LOW;
  3.  
  4. void setup()
  5. {
  6.    pinMode(pin, OUTPUT);
  7.    attachInterrupt(0, blink, CHANGE);
  8. }
  9.  
  10. void loop()
  11. {
  12.    digitalWrite(pin, state);
  13. }
  14.  
  15. void blink()
  16. {
  17.    state = !state;
  18. }
  19.  
  20. A fenti programot kipróbáltam, működött.
  21. Ez alapján ezt írtam.
  22.  int pin = 14;
  23.  int state = 1000;
  24. volatile int s = 100;
  25. void setup()
  26. {
  27.  
  28.   pinMode(14, OUTPUT);
  29.   pinMode(PUSH2, INPUT_PULLUP);
  30.   attachInterrupt(PUSH2, blink, LOW);
  31. }
  32.  
  33. void loop()
  34. {
  35.   digitalWrite(pin,HIGH);
  36.  delay (state);
  37.  digitalWrite(pin,LOW);
  38.  delay (state);
  39. }
  40.  
  41. void blink()
  42. {
  43.  digitalWrite(pin,HIGH);
  44.  delay (s);
  45.  digitalWrite(pin,LOW);
  46.  delay (s);
  47.  
  48. }

azt szerettem volna, hogy ha nyomom a gombot gyorsabban villogjon a led, de a gombnyomásra egyáltalán nem reagál.
A hozzászólás módosítva: Aug 18, 2014
(#) vottokar hozzászólása Aug 25, 2014 /
 
Sziasztok. Érdeklődnék, hogy kis hazánkban lehet-e kapni hagyományos DIL tokos MSP430-as processzorokat kapni?
Vettem Egy MSP-EXP430G2-es launchpadot (icserny fórumtársunk javaslatára, hogy a TM4C1294XL elsőre erős lesz), és szeretném, ha tudnám esetlegesen más tervekben is hasznosítani a rajta megszerzett tudást.
Következő: »»   129 / 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