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   114 / 139
(#) icserny válasza szitko hozzászólására (») Okt 25, 2013 /
 
A Microchip Applications Library (MAL) tartalmaz egy Plug and Play (virtuális) soros portra kapcsolódó példaalkalmazást. Azzal többnyire megy, hogy lecsatlakoztatom a kártyát (pl. PIC18F4550 FSUSB), majd visszacsatlakoztatom, és a PC alkalmazás automatikusan újra kapcsolódik. Néha azért azt is sikerül fejreállítani...

Természetesen a program használatához meg kell változtatni a VID/PID párost, meg el kell olvasni a licenszfeltételeket. (én a MAL 2012. augusztusi kiadását használom, ebben Visual C++ 2008-hoz való példaprogram van. Megy az ingyenes Express kiadású fordítóval is...)
(#) szitko válasza icserny hozzászólására (») Okt 25, 2013 /
 
Ismét köszönöm a segítséget.
Ebben az egész le/fel kapcsolódási problémában, csak azt nem értem, hogy ha megszűnik a kapcsolat, a külső alkalmazás (terminal prg.) miért nem "zárja" le/be az adott COMx portot? Lehet azért, hogy a felhasználó, minél több "szemét" programmal telepakolja a gépét. Mert már az ellenőrző programnak is van ellenőrző programja.
(#) icserny válasza szitko hozzászólására (») Okt 25, 2013 /
 
Idézet:
„a külső alkalmazás (terminal prg.) miért nem "zárja" le/be az adott COMx portot?”
Ezt nem tudom, de "tervezett leállás" esetén ezt te is megteheted a "kapcsolat bontása" gombra bökve.
(#) VaZso8 válasza szitko hozzászólására (») Okt 25, 2013 /
 
Múltkor találtam ezt a kódot: Bővebben: Link (a gpio.kaltpost.de oldalon).

Esetleg nézd át az interrupt-kezelését, nekem tetszik.
Nem feltétlen úgy gondolom, ahogy ott használja a szerző, hanem:
- a két, különálló forrásban létrehozol egy-egy kezelőrutint
- a főprogramodban pedig az interrupt-kezelést, ami a különálló rutinokkal dolgozik.

Nem állítom, hogy nincsenek hátrányai a megoldásnak, de szerintem ötletes.
(#) szitko válasza VaZso8 hozzászólására (») Okt 26, 2013 /
 
Ez jónak néz ki, ki is fogom próbálni.

Más:
Egy feltételes definíciót szeretnék készíteni (makrót) több utasítással, de az IAR-nak folyamatosan gondja van, vagy a zárójellel, vagy a pontosvesszővel...
  1. #define MAKRO(x)  (x==TRUE) ? (utasítás_1 ; utasítás_2) : (utasítás_1 ; utasítás_2)

Próbáltam a két utasítást a "\" jellel elválasztani, de semmi sem változik.
Nem lehet ilyet csinálni? Vagy külön kéne definiálni a két utasítást és utána azt meghívni ebben a makróban?
(#) dex02 hozzászólása Okt 28, 2013 /
 
sziasztok!
Tudna vki (kidolgozott) projekt példát mondani msp430 ez430-rf2500 hoz, amiből kiindulhatnék mikro laboron?
(#) szitko hozzászólása Okt 29, 2013 /
 
Szerény hülyeségem megosztom veletek...

Egy hetet szenvedtem, a tavaly üzembe helyezett "kazán" vezérlőmmel.
Tavaly télen szépen működött, nyáron kikapcsolt, és most október elején, ahogy be lett állítva visszakapcsolt. Volt pár apró hiba a programban, ezért gondoltam, hogy az igazi fűtésszezon előtt kijavítom ezeket. A javítás balul sült el. Mondhatni az egész program meghülyült, semmi nem úgy ment ahogy kell. A legfőbb gond az volt, hogy a 24lc512 írásánál egyszerűen leállt a program, ha pedig bekapcsoltam a WDT, akkor újraindult.
Egy hetes keresgetés után, teljesen véletlenül találtam rá a hibára. Készítettem egy "delay_ms" állományt, amit ha kell ms-os várakozás, be tudok csatolni bármilyen programba.
A legfőbb gond ott keletkezett, hogy amikor a hibamentesített programot újrafordítottam, akkor nem néztem meg, hogy a beállított frekihez van-e beállítva a delay_ms állomány. A program 16MHz-en megy, a késleltetésben meg csak 1000uS volt beállítva a 16euS helyett, ezért amikor a 24lc512-ben egymást követő írásciklusokra került a sor, a kellő várakozás hiánya miatt leállt az írás, és a program is.
Mondjuk a érdekes, hogy a 24lc512 adatlapjában, ha jól értelmeztem, akkor csak pár uS-ot kell várni pl. két írásciklus között. Ezzel ellentétbe pl a teljes törlésnél, laponként 20mS kell neki minimum....
(#) tramontina hozzászólása Nov 6, 2013 /
 
Szervusztok!

Segítségetek szeretném kérni, hogy miért van az, hogy ha a P1_6, P1_7 portokra egy LCD (i2c) van csatlakoztatva, akkor A1, A2, A3, A4, A5 (ADC) használhatatlanná válik. A0 viszont működik de csak az. A1, A2, A3 300-500 közötti "ADC értéken ugrál", viszont abban az esetben ha A4 és A5 értékét is vagy csak azokat szeretném kiíratni LCD-re, akkor csak a háttérvilágítása kapcsol be és karakter egy sem. Szóval ez van. / MSP430G2553

Köszönöm a válaszaitokat.
A hozzászólás módosítva: Nov 6, 2013
(#) szitko válasza tramontina hozzászólására (») Nov 6, 2013 /
 
Ha nem titkos, a program port és i2c inicializáló részét bemásolhatnád. Könnyebben tudnánk segíteni.
(#) levi18 válasza tramontina hozzászólására (») Nov 6, 2013 /
 
Szia!

Én akkor jártam úgy, hogy az ADC meghülyült, amikor viszonylag kisebb impedancián keresztül (~1kOhm) egy analóg bemenetre 5 V DC feszültség került. A processzorom 3.3 V-ról működött.
Nem lehet, hogy az I2C busz 5 V-os felhúzása miatt történik ez?

Üdv!
(#) tramontina hozzászólása Nov 7, 2013 /
 
Sziasztok.

Én Timer használati gondra gondoltam, de a felhúzó ellenállás is ésszerűnek tűnik bár én 10k-val csináltam P1.6 P1.7 portnál, így mérésem szerint 3,8V van a helyszínen.
Itt az extrém program:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);


int a4 = P1_4;
int a5 = P1_5;
int a04;
int a05;


void setup()
{
lcd.init();
lcd.backlight();
}

void loop()
{
a04 = analogRead(a4);
a05 = analogRead(a5);
delay(500);


lcd.clear();

lcd.setCursor(0,0);
lcd.print("A4 :");
lcd.setCursor(5,0);
lcd.print(a04);

lcd.setCursor(0,1);
lcd.print("A5 :");
lcd.setCursor(5,1);
lcd.print(a05);
delay(50);
}
(#) levi18 válasza tramontina hozzászólására (») Nov 7, 2013 /
 
Ha a tápfeszültséged 3.6 V körül van, akkor az már a clamp-dióda miatt lett 3.8 V, mert kb 0.2-0.3 V körül van a Schottky-dióda nyitófeszültsége. Bár nem írtad le, hogy mekkora pontosan a processzor tápfeszültsége. Én még mindig az I2C-buszra gyanakszom. Próbáld meg, hogy leválasztod a buszról a processzor két lábát, és írasd ki sorosportra az eredményeket. Ha nem hardveres a hiba, akkor továbbra is fenn fog állni.
(#) tramontina válasza levi18 hozzászólására (») Nov 8, 2013 /
 
3,5V-3,6V

Az lenne a célom, hogy p1.6 p1.7 portot i2c lcd vezérlésre használjam, miközben tudom hasznosítani az ADC-ket is pl. joystick, ir szenzor, sonic szenzor stb. Ubuntu van a gépemen, a serial-monitor olyan mint ha nem is lenne mert nem működik. Nem i2c lcd használata esetén pedig 2 helyett egyből 6port oda meg amúgy is ha már van egy ilyenem akkor használnám.
(#) icserny válasza tramontina hozzászólására (») Nov 8, 2013 /
 
Van 3,3 V-os LCD is (pl. itt). Az I2C nem tudom hoygan van megoldva, de ha végképp nem oldható meg, hogy az is kisebb tápfeszültséggel működjön, akkor léteznek egyszerű szintillesztő kapcsolások is. (Bővebben: Link)

Mellesleg hiába kötöd 5 V-ra a felhúzókat, ha a mikrovezérlő védődiódái úgyis megfogják a jelszintet (mintha egy Zener lenne ott). Ennyi erővel 3,5 V-ra is köthetnéd a felhúzókat, s megszűnik a probléma.
(#) tramontina válasza icserny hozzászólására (») Nov 8, 2013 /
 
Üdvözlöm!

Igen ez nekem is eszembe jutott, ezért próbáltam ki a launchpad Vcc-re tenni a felhúzókat és ugyanaz volt az eredmény. 3,3V-os és 3,6V-os zenerekkel is próbálkoztam különféle ellenállásokkal amitől 20fillért nem változott a helyzet. Ezek után írtam ide. Reméltem szoftveres úton orvosolható a gond. 3,5V-ról is működik az lcd, csak fényerőben és kontrasztban csúszik el és az ADC-k továbbra is használhatatlanok. Rendeltem Texaséktól sample-t, 2 nap alatt megérkezett azzal is kipróbáltam és ugyanaz.
i2c level converter? Egy ilyet 2db "bármilyen" N-es Fettel össze lehet dobni itthon? Vagy ez a 2n7000 a kifejezetten ajánlott típus?
(#) levi18 válasza tramontina hozzászólására (») Nov 8, 2013 /
 
Csatoltam egy egyszerű megoldási lehetőséget, de léteznek cél integrált áramkörök is, én sűrűn használom a Texas Instruments TXB010x sorozatát.
(#) tramontina válasza levi18 hozzászólására (») Nov 8, 2013 /
 
Köszönöm, 2n7000 nincsen itthon de más fettel megpróbálom, hogy mit mutat.
(#) szitko válasza tramontina hozzászólására (») Nov 8, 2013 /
 
Nem tudom, hogy az LCD-n milyen vezérlővel van megoldva az i2c illesztés, de szerintem annak mennie kell 3,5V-ról.
Már több 5V-os i2c cuccot használtam, de egyik sem kiabált a 3,5V miatt.
(#) szikorapéter hozzászólása Nov 11, 2013 /
 
Helló.Egy olyan kérdésem lenne hogy van ez a programmegírva és hogy ez egyszerű msp430 mondjuk a G2231-es chipre felírható-e?Vagy valamit változtatni kell rajta?Kérlek segítsetek kicsit kezdő vagyok még a témában.A válaszokat köszönöm előreis.
  1. /*****************************************************************************
  2.  *  main.c
  3.  *  Created by Frank Tu
  4.  *  FOR MORE SOURCE CODE, GO TO FRANKTU.COM
  5.  *  April 12, 2007
  6.  /*****************************************************************************/
  7.  
  8. #include "msp430x26x.h"
  9. #include "TimerA.h"
  10. #include "timerArray.h"
  11.  
  12.  
  13. unsigned int frequency_timer[10];
  14. unsigned int frequency_timer_repeat[10];
  15. unsigned long frequency_timer_repeat_delay[10];
  16. void main(void)
  17. {
  18.   WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer
  19.  
  20.  Clock_Initialization();
  21.   vInitTimerA();
  22.  
  23.        
  24.   _EINT();
  25.  
  26.     while(1)
  27.   {
  28.   We_wish_u_a_merry_Christmas_auto_play();
  29.   amazinggrace_auto_play();
  30.  ;
  31.   }
  32. //  music_auto_play();
  33. //  We_wish_u_a_merry_Christmas_auto_play();
  34. //  amazinggrace_auto_play();
  35.  }
  36. unsigned char frqIndex[10];
  37. void amazinggrace_auto_play(void)
  38. {
  39. //while (1)
  40.    if (frqIndex[0]>37)
  41.    frqIndex[0]=255;
  42.    if (frequency_timer_repeat_delay[0]==0)
  43.    {
  44.     frequency_timer_repeat_delay[0]=amazinggracedelay[frqIndex[0]];
  45.     frequency_timer_repeat_delay[0]*=2813;//a sixty-fourth note duration
  46.    frequency_timer_repeat[0]=timerArray[amazinggrace[frqIndex[0]++]-1+12];
  47.     }
  48. }
  49.  
  50. void We_wish_u_a_merry_Christmas_auto_play(void)
  51. {
  52. //while (1)
  53. {
  54.        if (frqIndex[1]>31)
  55.    {
  56.    frqIndex[1]=0;
  57.  //  frequency_timer_repeat_delay[1]=0;
  58.    }
  59.    if (frequency_timer_repeat_delay[1]==0)
  60.    {
  61.  
  62.  //  _DINT();
  63.     frequency_timer_repeat_delay[1]=We_wish_u_a_merry_Christmasdelay[frqIndex[1]];
  64.     frequency_timer_repeat_delay[1]=frequency_timer_repeat_delay[1]*2813;//a sixty-fourth note duration
  65.    frequency_timer_repeat[1]=timerArray[We_wish_u_a_merry_Christmas[frqIndex[1]]-1+12];
  66.    frqIndex[1]=frqIndex[1]+1;
  67.  
  68.  //  _EINT();
  69.     }
  70. //   if (frqIndex[1]>31)
  71. //   {
  72. //   frqIndex[1]=0;
  73. //   frequency_timer_repeat_delay[1]=0;
  74. //   while(temp)
  75. //    temp=frequency_timer_repeat_delay[1];
  76. //       frequency_timer_repeat_delay[1]=We_wish_u_a_merry_Christmasdelay[frqIndex[1]];
  77. //    frequency_timer_repeat_delay[1]=frequency_timer_repeat_delay[1]*2813;//a sixty-fourth note duration
  78. //   frequency_timer_repeat[1]=timerArray[We_wish_u_a_merry_Christmas[frqIndex[1]]-1+12];
  79. //   frqIndex[1]=0;
  80. //    }
  81. }
  82. }
  83. void music_auto_play(void)
  84. {
  85.   while(1)
  86.   {
  87.   We_wish_u_a_merry_Christmas_auto_play();
  88.   amazinggrace_auto_play();
  89.  ;
  90.   }
  91. }
(#) szitko válasza szikorapéter hozzászólására (») Nov 11, 2013 /
 
A különböző perifériabeállításokat biztos, hogy át kell írni a kiválasztott mikrovezérlőre. Gondolok itt pl. a Timer perifériára, I/O beállításokra, stb...
(#) SBahadurD válasza szikorapéter hozzászólására (») Nov 11, 2013 /
 
Hát ez azért kevés, hogy eldöntsük. Kéne a többi forrásfájl is. Szerintem amúgy valószínűleg csak a kimenet beállításoknál lehet különbség, de lehet, hogy még abban sem.
Ja, meg a megfelelő kontroller header fájlját include-old be.
(#) szikorapéter válasza SBahadurD hozzászólására (») Nov 11, 2013 /
 
Ebben megtalálható az összes file ami a projecthez tartozik elvileg bár MSP-re van ez is megírva,de sajnos nem ehez a vezérlőhöz.Remélem ezekkel a file-okal több sikerrel járunk,próbáltam magam is megkeresni meik portokra lenne a hang kivezetés vagy ha van neki még akkor más egyéb funkció gombja,de gondoltam hogy az a beépített ami a launchpad-on van rajta.
(#) icserny válasza szikorapéter hozzászólására (») Nov 12, 2013 /
 
A CPU frekvencia behangolását neked kell megoldani valahogyan, mert a programban szereplő CALBC1_8MHZ és CALDCO_8MHZ konstansok ennél a típusnál gyárilag nincsenek definiálva. Ebben a cikkemben és az adatlapban található információk szerint kell beállítani a DCO-t, utána pedig LED villogtatással és stopperrel ellenőrizni kell.

A timer kezelése elvileg kompatibilis (a fő korlát az, hogy a G2231-ben csak egy Timer és két Capture/Compare csatorna van).

A TimerA.c forrásállományban a P6 port 2-es lába és a P5 port 5-ös lába helyett valami mást (pl. P1 port 4-es és 5-ös láb?) kellene matatni.

Érintett regiszterek: P6DIR. P6REN, P6OUT, P5DIR. P5REN, P5OUT.
(#) szikorapéter válasza icserny hozzászólására (») Nov 12, 2013 /
 
Nekiállok ezek alapján megoldani a vezérlő felprogramozását,köszönöm mindenki segítségét.
(#) SBahadurD válasza icserny hozzászólására (») Nov 12, 2013 /
 
Itt le tudsz tölteni példaprogramokat a neked kellő kontrollerre. Itt a listából kiválasztod, majd a C kódok közül kiválasztod, amelyik a DCO-t tudja kalibrálni. Mondjuk kristály, vagy más pontos külső órajel kell hozzá.

Én úgy alakítottam a programomat, hogy futás elején mindig elvégzi a kalibrációt, de nem ír a flash-be. Így bármilyen frekvenciát be lehet pontosan állítani.

Icserny, ezt nem neked akartam írni, csak te írtál a kalibrációról.
A hozzászólás módosítva: Nov 12, 2013
(#) kisedison hozzászólása Nov 14, 2013 /
 
Üdv mindenkinek!

Egy ismerősöm megajándékozott (1000Ft ellenében ) egy CC3000 wi-fi modullal. A kérdés hogy mit lehetne vele kezdeni msp-vel? Van nagy "böhöm" is 430F5529-esem is akár. Azt nézegettem hogy SPI buszon lehet vele szót érteni, de olyan például lehetséges hogy két ilyen modul között adatokat küldjek/fogadjak lehetőleg egyszerű módon? Az adatlap szerint IPv4 bele van integrálva tehát szoftveresen nekem kellene az adat TX/RX dologhoz az egyiket AccesPoint-ként, a másikat meg kliensként konfigurálni, aminek a host IP címet oszt ki?

(kis kiegészítés: Energiát használok, elvileg van benne ehhez wifi könyvtár)
A hozzászólás módosítva: Nov 14, 2013
(#) icserny válasza kisedison hozzászólására (») Nov 15, 2013 /
 
Az Energia mintapéldák között egy Webserver mintapéldát látok (gondolom, MSP430F5529-re).

Az Adafruit holapján van részletes leírás (a középső hasáb alján kell lapozgatni) és többféle mintapélda - természetesen Arduino-ra. Több-kevesebb kínlódás árán biztosan megoldható ezek adaptálása.
(#) kisedison válasza icserny hozzászólására (») Nov 15, 2013 /
 
A webserveres mintából már sikerült kibogózni pár dolgot hogy mi legyen az ssid, jelszó, ip cím... De arra nem jövök rá hogyan lehetne kliens módban használni. Meg az hogy csak simán adatot küldjek rajta mint mondjuk egy buetooth modullal. Igazából az működik most csak a hatótávval gondok vannak (~150m) ezzel meg el tudnám érni az 500 métert is könnyedén. Egyébként ahogy nézegettem az arduino-s minták nagyon különböznek az energiában találhatótól.
(#) kisedison válasza kisedison hozzászólására (») Nov 16, 2013 /
 
Egy gyors kitérő. Berendeltem egy 3 tengelyes iránytű modult és barátkozok az adatlappal, keresgélek mintákat, stb... Találtam hozzá könyvtárat arduinohoz, a kérdés hogyha berakom energiába akkor ugyan úgy működnie kell elviekben jól gondolom?
(#) t0bi válasza kisedison hozzászólására (») Nov 16, 2013 /
 
Egy másik topikban már sikerült életet lehelni belé, sok segítséget kaptam.

Bővebben: Link
Következő: »»   114 / 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