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   4 / 139
(#) Ragathol válasza augre hozzászólására (») Máj 28, 2011 /
 
Zsír!

Nekem is megjöttek a kis drágák (csütörtök du), a kibontás, szemrevételezés már megvolt.
Sajna nekem megkel ismerkednem a C nyelv -el.
De az ösztönző erő (launchpad) már megvan.
(#) augre hozzászólása Máj 28, 2011 /
 
az östönzőerő fontos, vegyél valami drágábbat, az nagyobb ösztönzés
bazzeg, ha már ennyit kifizettem érte csak csinálok valamit rá
(#) icserny hozzászólása Máj 28, 2011 /
 
A mikrovezérlőkben a Watchdog Timer (WDT) eredetileg arra való, hogy időhatárt szabjon a várakozásoknak: a programnak rendszeresen törölni kell a WDT számlálóját, különben az túlcsordul, és reset-et okoz, újraindítva a programot.

A Launchpad MSP430G22x1 vezérlői esetében azonban a WDT úgy is konfigurálható, hogy túlcsorduláskor ne resetet, hanem programmegszakítást okozzon. Így nagyszerűen felhasználható periodikus megszakítások keltésére, ami felhasználható késleltetésekre vagy többfeladatos alkalmazásoknál időszeletek kezdetének jelzésére.

A mellékelt példában az alapértelmezett 1 MHz körüli órajelet használjuk, s a WDT-vel 0,5 ms-onként keltünk megszakítást. Ezen megszakítások számlálásával hosszabb időzítéseket is be tudunk állítani (a 0,5 ms egész számú többszöröseit).

A példában a Launchpad két ledjét villogtatjuk, különböző periódussal. Két szép(?) prímszámot választva, úgy tűnik, mintha össze-vissza villognának...
(#) icserny hozzászólása Máj 29, 2011 /
 
Kisfogyasztású módhoz hazsnálhatjuk a beépített VLO oszcillátort. Az adatlap szerint tipikusan 12 kHz-en ketyeg, de nálam inkább 10 kHz-nek mondható (LED villogtatással és egy stopperórával könnyen kimérhető). Ha ezt az oszcillátort használjuk, akkor az alapértelmezett DCO oszcillátor letiltható. Az alábbi utasítások közül az első a VLO oszcillátor módot engedélyezi, a második sor pedig ezt választja órajelnek.
  1. BCSCTL3 |= LFXT1S_2;                // LFXT1 = VLO (~ 17 kHz)
  2. BCSCTL2 |= SELM_3 + DIVM_0;         // MCLK = LFXT1
A DCO letiltását majd az LPM3 módba történő belépéssel végezzük el.
  1. __low_power_mode_3();     // Interrupt és LPM3 engedélyezése

A Watchdog Timer időzítését, sajnos, újra kell számolnunk, mivel az ACLK-hoz való gyári makrók 32 kHz-es órajelet feltételeznek, a VLO pedig ettől eltérő frekvencián dolgozik. Az alábbi sor hatására például esetemben a WDT megszakításainak periódusideje 16 ms helyett valójában kb. T = 16 ms x 32 kHz/10 kHz, azaz durván 50 ms lesz, ilyen időszeletekkel dolgozunk.
  1. WDTCTL = WDT_ADLY_16;


A mellékelt programban a VLO oszcillátort használjuk. A főprogram LPM3 módban alszik, a LED-ek villogtatását a WDT-vel időzítjük és interrupton kezeljük. A programban a szereplő értékek (30, 70) durván 3 és 7 s-os villogási periódust jelentenek (ne feledjük, hogy a 30 x 50 ms csak a félperiódus!).

A fentiek megértésének kulcsa az alábbi felhasznált irodalomban található:
- MSP430G2231 mikrovezérlő adatlap (SLAS694F)
- MSP430x2xx Family User's Guide (SLAU144H)
- MSP430G2231 mintaprogramok (slac463a.zip-ból az 1_vlo példa)
(#) icserny hozzászólása Jún 11, 2011 /
 
Bosszantó apróságok, amire vigyázni kell: az MSPG2xx2 típuscsaládnál megváltoztattak néhány elnevezést. Például ami az MSP430G2231-nél így nézett ki:
  1. #define TIMERA1_VECTOR      (8 * 2u)  /* 0xFFF0 Timer A CC1, TA */
  2. #define TIMERA0_VECTOR      (9 * 2u)  /* 0xFFF2 Timer A CC0 */
Az az MSP430G2452-nél ez lett:
  1. #define TIMER0_A1_VECTOR    (8 * 2u)  /* 0xFFF0 Timer0_A CC1, TA */
  2. #define TIMER0_A0_VECTOR    (9 * 2u)  /* 0xFFF2 Timer0_A CC0 */
(#) icserny hozzászólása Aug 17, 2011 /
 
Megjelent a Launchpad "nagytestvére", a MSP-EXP430FR5739 demókártya, ami MSP430FR5739 típusú, FRAM memóriával ellátott mikrovezérlőt tartalmaz.

A kártya bolti ára $29, de a www.43oh.com blogonazt írják, hogy a MSP430_FRAM kupon kód beírása 50 % kedvezményt biztosít ($14.50). Akit érdekel, próbálja ki!
(#) DecebaL hozzászólása Aug 22, 2011 /
 
Sziasztok!

Valaki már próbálkozott olyannal, hogy a proci belső hőmérő szenzor adatait leolvassa és analóg portról is beolvasson?
Külön - külön problémamentesen tudom használni de együtt nem. MSP430G2553-al küszködök.
(#) icserny válasza DecebaL hozzászólására (») Aug 23, 2011 /
 
Tudnál mutatni egy nyúlfarknyi programot a probléma szemléltetésére?
(#) DecebaL válasza icserny hozzászólására (») Aug 23, 2011 /
 
#include
#include "3310.h"
#include "stdio.h"

#define LEFT BIT3
#define RIGHT BIT4
#define MENU BIT5

float T;

void Tszamol() //hőmérséklet számolása celsiusra
{

ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
__bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
ADC=ADC10MEM;//+ADC;

T = ((ADC - 673) * 423) / 1024;

}

void initadcch0() //P1.0 aktiválása

{
ADC10CTL0 = SREF_1 + ADC10SHT_2 + REFON + ADC10ON + ADC10IE; //1,5 Voltos belsх referencia alkalmazбsa
ADC10CTL1 = INCH_0; // input A1
ADC10AE0 |= 0x01; // PA.1 ADC option select
__enable_interrupt();
}

void initadcin() //belső szenzor aktiválása
{
ADC10CTL1 = INCH_10 + ADC10DIV_3; // Temp Sensor ADC10CLK/4
ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;
__enable_interrupt();
}



void main(void)
{
WDTCTL = WDT_ADLY_250; // WDT 250ms, ACLK, interval timer
IE1 |= WDTIE;

CCTL0 = CCIE; // CCR0 interrupt enabled
CCR0 = 32768-1;
TACTL = TASSEL_1 + MC_1; // ACLK, upmode


_BIS_SR(GIE);

P1REN |= LEFT+RIGHT+MENU; // Btn1,Btn2,Btn3 P1.4,P1.3 ,P1.5 pullup
P1IE |= LEFT+RIGHT+MENU; // Btn1,Btn2,Btn3 P1.4,P1.3 ,P1.5 interrupt enabled
P1IES |= LEFT+RIGHT+MENU; // Btn1,Btn2,Btn3 P1.4,P1.3 ,P1.5 P1.4,P1.3 Hi/lo edge
P1IFG &= ~(LEFT+RIGHT+MENU); // Btn1,Btn2,Btn3 P1.4,P1.3 ,P1.5 P1.4,P1.3 IFG cleared

P2DIR = 0x1F; //az első 5 bit kimenet

BCSCTL1 = CALBC1_12MHZ;
DCOCTL = CALDCO_12MHZ;

nokia_init();


char buff[5];
char buff1[15];

initadcch0();
initadcin(); //aktiváltam mindkét AD -t

while(1)
{

ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
__bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit

sprintf(buff1,"%d",ADC10MEM); //beolvasott érték kiírása
nokia_gotoxy(0,4);
printlcd("Érték = ");
printlcd(" ");
nokia_gotoxy(35,4);
printlcd(buff1);



}

}


Vettem egy ilyen pákát és egy forrasztóállomást csinálok a belső szenzor adata a hő kompenzációhoz kell. A P1.0 -s analogról olvasom le a K hőelem felerősitett jelét.
A páka mozgásérzékelője a P1.1 P1.2. porton. És a Nokia 3310 LCD a P2 első 5 bitjén van.
A nokia kijelző vezérlőjét írtam meg először és most az A/D résznél elakadtam. Külön - külön mindegyiket le tudom olvasni, de ha mindkét A/D aktíválom akkor mindig a P1.0 olvassa be és a belső szenzort nem.
Ha végképp nem fog menni a dolog akkor még van egy szabad portom és rákötök egy külső hő szenzort.
Remélem értelmesen fogalmaztam.
(#) icserny válasza DecebaL hozzászólására (») Aug 23, 2011 /
 
AZ alapvető problémát ott látom, hogy egyszerre akarod aktiválni a két csatornát, ami nem megy. Előbb válaszd ki pl. az A0 csatornát és végezz egy mérést, majd válaszd ki a hőmérő csatornát és mérj ott is. Ezt a folyamatot ismételgesd a végtelen ciklusban! A csatornaváltás és a mérés indítása között várni kel egy kicsit, hogy a mintavevő beálljon a mérendő feszültségre.
(#) DecebaL válasza icserny hozzászólására (») Aug 23, 2011 /
 
Köszi megpróbálom, majd jelezem, hogy mi az ábra.
(#) DecebaL válasza DecebaL hozzászólására (») Aug 23, 2011 /
 
Hálás köszönet, sikerült.
(#) icserny válasza DecebaL hozzászólására (») Aug 23, 2011 /
 
Örülök, hogy sikerült. A 3310-es kijelzőhöz milyen szoftvert használsz?
(#) DecebaL válasza icserny hozzászólására (») Aug 23, 2011 /
 
CCS studioban irtam pontosabban colt egy unitom ccs c -hez amit pichez szoktam használni és azt írtam át MSP430G -re. Csináltam hozzá magyar ékezetes karaktereket és és nagy számokat is. Felteszem hátha kell valakinek.
(#) DecebaL válasza DecebaL hozzászólására (») Aug 23, 2011 /
 
Felteszek még egy számomra 3 fontos eljárást flashbe irás olvasás és törlés.

void ereaseflash()

{
char resvec=*(char *)(0xFFFE);// save restart vector
FCTL3 = FWKEY; // Lock = 0 A500
FCTL1 = 0xA502; // ERASE = 1 0xA502 FWKEY+ERASE
*((char *)0x1040)=0; // erase Flash segment
//*((char *)DAT1)=0; // erase Flash segment
// restore restart vector
FCTL1=FWKEY+WRT; //Enable write
*(char *)0xFFFE= resvec; //restore restart vector
FCTL1 = FWKEY; /* disable erase and write */
FCTL3 = FWKEY+LOCK; /* set Lock = 1 */
}


void FlashWrite(char faddress, char word)
{
char *Flash_ptr; /* Flash pointer */
Flash_ptr = (char *) 0x1040 + faddress; /* Initialize Flash pointer (segment B - start of info. memory) */
FCTL1 = FWKEY + ERASE; /* Set Erase bit */
FCTL3 = FWKEY; /* Clear LOCK bit */
//*Flash_ptr = 0; // Dummy write to erase Flash segment
FCTL1 = FWKEY + WRT; /* Set WRT bit for write operation */
*Flash_ptr=word; /* Write the word to flash */
FCTL1 = FWKEY; /* Clear WRT bit */
FCTL3 = FWKEY + LOCK; /* Reset LOCK bit */
} /* FlashWrite */


void FlashRead(char faddress)
{

char *Flash_ptr;
Flash_ptr = (char *) 0x1040 + faddress;
temp=*Flash_ptr;
} /* Flashread*/
(#) icserny válasza DecebaL hozzászólására (») Aug 24, 2011 /
 
Köszönöm, majd megnézem (kb. 3 hét múlva érkezik a kijelzőm). Különösen a magyarítás lesz hasznos.
(#) DecebaL válasza icserny hozzászólására (») Aug 24, 2011 /
 
Szivesen, most a 3510i színes lcd-re írom a unitot, ha kész vagyok vele felteszem.
(#) DecebaL hozzászólása Aug 24, 2011 /
 
DS18B20 -ra van valakinek működő Unitja mert ha igen és megosztja megszabadít egy kis munkától
Most, hogy van egy kis időm és elkezdtem szórakozni az MSP - procikkal kezdem megkedvelni.

Itt nagyon sok hasznos dolog van fent érdemes szétnézni.
(#) icserny hozzászólása Aug 24, 2011 /
 
Ezen az oldalon is érdemes megnézni a projekteket.
(#) icserny válasza DecebaL hozzászólására (») Aug 24, 2011 /
 
Itt találtam valamit, ezt nézted már?
(#) DecebaL válasza icserny hozzászólására (») Aug 24, 2011 /
 
Ezt még nem néztem, de máris nézem.
(#) fidelcastro hozzászólása Aug 25, 2011 /
 
Üdv!
Az MSP430g2211 kontrollerhez honnan lehet letölteni olyan adatlapot amelyikben megtalálom a perifériáinak a részletes leírását (regiszterekkel és bitekkel), mert amit én találtam Bővebben: Link a TI oldalán abban nem sok minden van leírva, főleg karakterisztikák vannak benne.
Előre is köszi!
(#) moderboy válasza fidelcastro hozzászólására (») Aug 25, 2011 /
 
Sajnos a kérdésedre nem tudok pontos választ adni, de ITT biztos tudnak segíteni a forumban, ha tudsz angolul egy keveset. Amugy mindenkinek ajánlom az oldalt! Kifejezetten Launchpadra van specializálódva, de a forumban biztos tudnak másban is segíteni.
(#) icserny válasza fidelcastro hozzászólására (») Aug 25, 2011 /
 
A Launchpad Documentation szekcióban MSP430G2xx User's Guide álnéven találod meg azt, amit keresel: slau144h.pdf.

Ebben minden periféria le van írva, de vigyázz, olyanok is, amelyek az adott példányban nincsenek! Tehát szelektíven kell olvasni, az általad már ismert adatlappal összenézve.
(#) fidelcastro válasza icserny hozzászólására (») Aug 25, 2011 /
 
Köszönöm szépen az adatlapot! Most néztem a TI oldalát és tényleg ott volt az adatlap csak éppen a szememet nem szúrta ki.
(#) icserny hozzászólása Aug 25, 2011 /
 
Az element14.com szakmai közösségi portálon a Texas Instruments pályázatot hirdetett (terveket és alkalmazási ötleteket várnak) ahol hetente egy-egy MSP430FR5739 fejlesztői kártyát ajándékoznak az adott héten javaslatot tevők közül a szerencsés nyertesnek.

Az nem derült ki számomra, hogy zsűrizés vagy sorsolás alapján történik a választás.
(#) icserny hozzászólása Szept 2, 2011 /
 
Elkészült az MSP430 Launchpad-ot bemutató első cikkem (már csak lezárásra és engedélyezésre vár). A cikk nyers változatát elérhetővé tettem az esca.atomki.hu/launchpad címen. Ha valami triviális hibát találtok benne, azt még javítani tudom.

A megjegyzéseket privát üzenetben kérem, ne terheljük vele a fórumot!

Elnézést kérek, hogy csak ilyen fapados formában tálalom, de a végleges formájában majd a HE fórummotorja gondoskodik a lapozhatóságról. Az észrevételeket előre is köszönöm!

A cikknek terveim szerint lenne majd folytatása is, csak időt kellene találni rá...
(#) icserny hozzászólása Szept 2, 2011 /
 
"A hónap projektje" verseny:

Four-Three-Oh portálon ismét meghirdették az "A hónap projektje" versenyt, melyre 2011. szeptember 24-ig lehet beküldeni pályamunkákat. Bővebben itt: link
(#) icserny hozzászólása Szept 3, 2011 /
 
Tegnap, a vártnál hamarabb megérkezett az E-bay-en rendelt Nokia 5110 kijelzőm. Ezen az oldalon találtam hozzá mintaprogramot (MSP430F449 MCU-hoz). Mivel az ilyen oldalak nem örök életűek, mellékelem a letöltött kódot az utókor számára. Külön mellékelem azon forrásállományokat is, amelyekben a kínai kommenteket angolra fordítottam (természetesen a Google Translate segítségével).

Az eredeti demóból a kínai szöveg kiírását kigyomláltam, s a Decebal fórumtársunk által becsatolt programból kiindulva, beraktam egy bitkép megjelenítését is (természetesen az unokám arcképét!). Így, a karakterkiírás és a bitkép válakozva történő megjelenítése belefért a Launchpad MSP430G2231 mikrovezérlőjébe.

Futás közbeni rajzoláshoz (pl. körök, sokszögek rajzolása) azonban több RAM kellene.
(#) icserny válasza icserny hozzászólására (») Szept 3, 2011 /
 
Azt elfelejtettem mondani, hogy a 84x48 képpontra és fekete-fehérre (dithered) konvertált BMP képet az ingyenes LCDAssistant.exe program alakítja a C programba beilleszthető karakterkonstans tömbbé.

  1. const unsigned char emese [] = {
  2. 0xFF, 0xFF, 0x5D, 0xF7, 0x5F, 0xFD, 0x57,
  3.  
  4. ... stb. }


A mellékelt képen egy jobban sikerül konverzió eredménye látható.

emese2.jpg
    
Következő: »»   4 / 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