Fórum témák
» Több friss téma |
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.
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á
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...
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.
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.
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)
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:
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!
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.
Tudnál mutatni egy nyúlfarknyi programot a probléma szemléltetésére?
#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.
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.
Köszi megpróbálom, majd jelezem, hogy mi az ábra.
Örülök, hogy sikerült. A 3310-es kijelzőhöz milyen szoftvert használsz?
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.
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*/
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.
Szivesen, most a 3510i színes lcd-re írom a unitot, ha kész vagyok vele felteszem.
Ezen az oldalon is érdemes megnézni a projekteket.
Ü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!
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.
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.
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.
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.
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á...
"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
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.
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é.
A mellékelt képen egy jobban sikerül konverzió eredménye látható. |
Bejelentkezés
Hirdetés |