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   30 / 139
(#) szitko válasza icserny hozzászólására (») Jan 25, 2012 /
 
Köszi szépen. Csak zavar az kis sárga háromszög.
(#) icserny válasza idlob hozzászólására (») Jan 25, 2012 /
 
Idézet:
„mspgcc4 != mspgcc”

Na, ez számomra egyre homályosabb (főleg, hogy a Hackaday cikkeben is az mspgcc honlapra utalnak)!
Jól értem, hogy az mspgcc fejlesztői tulajdonképpen visszafelé haladnak a GCC verzióban? (4->3)
(#) icserny válasza szitko hozzászólására (») Jan 25, 2012 /
 
Idézet:
„Csak zavar az kis sárga háromszög.”

Az alábbi sorban fölösleges a volatile módosító. Jól sejtem, hogy a főprogramban ezekhez nem nyúlsz hozzá? Hagyd ki, legyen csak char ez a két változó!
  1. volatile unsigned char h_tx, l_tx;
(#) szitko válasza icserny hozzászólására (») Jan 25, 2012 /
 
Igen, jól sejted, de... A program csak egy "ideiglenesen összedobott próba program" amivel az UART kommunikációt próbálgatom, és ha összeáll, berakom abba a programba amibe szánom. Viszont amibe majd kerül ott fogom használni a főprogramban is. Időközben rájöttem, és már nincs figyelmeztetés. Beraktam a változók definiálását a megszakításba.
  1. #pragma vector=USCIAB0RX_VECTOR
  2. __interrupt void USCI0_RX(void){
  3.   unsigned int rx;
  4.   unsigned char h_tx, l_tx;
  5. .
  6. .

Köszönöm a segítséget.
(#) idlob válasza icserny hozzászólására (») Jan 25, 2012 /
 
Kezdetben vala az mspgcc. Majd a problémák miatt elágaztatták belőle az mspgcc4-et és egy ideig párhuzamosan haladt a fejlesztés. Majd a 4-es lemaradt a fejlesztésben. Most már meg semmi létjogosultsága, mert ahogy nézem mspgcc-t aktuálisan gcc 4.6-al ferdítik.
(#) idlob válasza idlob hozzászólására (») Jan 25, 2012 /
 
Bocs a dupe-rét. Hogy a cikkben miért az mspgcc-re van referencia, amikor az mspgcc4 forgatásáról ír, azt nem tudom megmondani. Olyan mintha azt mondanám, hogy a LibreOffice az ugyanaz mint az OpenOffice mert közös az ősük, pedig a külsőségeket leszámítva számottevő a különbség köztük.
(#) icserny válasza idlob hozzászólására (») Jan 25, 2012 /
 
Hab a tortán, hogy a hivatkozott honlapon még a 2006-os állapot olvasható: "NOTE: The current version of gcc to use is mspgcc-3.2.3".

Engem is jól átráztak vele, mert azt hittem, hogy visszatértek a GCC 3-hoz.
Na, mindegy! Maradok az IAR/Windows párosnál...
(#) röntgen hozzászólása Jan 26, 2012 /
 
Sziasztok. Arra szeretnék választ kapni, hogy ezeket a kontrollereknek milyen programozási ill. debug eszközei vannak. Kezdő szinten vagyok a témában egy-két alap instrukciót szívesen vennék.
(#) icserny válasza röntgen hozzászólására (») Jan 26, 2012 /
 
Itt található egy kimerítő olvasmány: MSP430 Hardware Tools (slau278h)

Röviden:
- 4 vezetékes JTAG (pl. MSP4MSP-FET430UIF) programozó/debugger, ami elvileg mindegyik MSP430 MCU-val kompatibilis
- 2 vezetékes JTAG (más néven Spy-Bi-Wire vagy SBW) ami csak az SBW-t támogató MCU-kkal kompatibilis

A starter kit jellegű kártyák (Launchpad, FRAM kártya, más EZ430 eszköz) már tartalmaznak egy 2 vezetékes emulátort, amivel az SBW-t támogató mikrovezérlők programozhatók, debug-olhatók.
(#) PLaci válasza icserny hozzászólására (») Jan 26, 2012 /
 
Sziasztok!
Mindenkinek nagyon szépen köszönöm a segítséget. A fejlesztő rendszer innentől működik, most jöhet a C-ül tanulás Addig jutottam, hogy a példaprogram már villogtatja a LED-eket Szerintem sokat fogok még itt kérdezősködni. Előre is köszi a türelmeteket!
(#) neogeo2 válasza gyengus hozzászólására (») Jan 26, 2012 /
 
Wine-al nem sikerült elindítanom a CCS-t, az IAR viszont megy...
(#) röntgen válasza icserny hozzászólására (») Jan 26, 2012 /
 
Köszönöm a válaszod, átnézem a dolgokat.
Ez a két vezetékes (SBW) nem kerek egyenlőre, ehhez a módhoz is kell külső eszközt (cél eszközt) használnom?
(#) icserny válasza röntgen hozzászólására (») Jan 26, 2012 /
 
Nem biztos, hogy jól értem a kérdést, mert a cél eszköz az a mikrovezérlő, amit programozni akarsz.

SBW programozásra/debugolásra a MSP-FET430UIF is alkalmas, de egy nagyságrenddel kevesebbe kerül, ha veszel egy Launchpad kártyát, s annak a FET (Flash Emulator Tool) használod SBW programozónak/debuggernek.
(#) Nyugdíj hozzászólása Jan 26, 2012 /
 
Sziasztok!

Nem hinném, hogy rendesen működne az mcu-mon a gomb... már kipróbáltam mindenféle programmal, most a demóprogramot mondanám el, hogy működik.


#include "io430.h"
#include "intrinsics.h"

void main(void) {
WDTCTL = WDTPW + WDTHOLD; //Letiltjuk a watchdog időzítőt
P1DIR |= BIT0; //P1.0 legyen digitális kimenet
P1DIR &= ~BIT3; //P1.3 legyen digitális bemenet
while(1) {
while(P1IN & BIT3); //lenyomásra vár
P1OUT ^= BIT0; //LED1 állapotának átbillentése
__delay_cycles(20000); //20 ms pergésmentesítő késleltetés
while(!(P1IN & BIT3)); //felengedésre vár
__delay_cycles(20000); //20 ms pergésmentesítő késleltetés
}
}

Tehát ugye, ha jól értelmezem, akkor mikor nincs lenyomva, led1-et kéne billegtetnie. Ha le van nyomva, akkor pedig semmit nem kéne csinálnia.


Ám: most jön a varázslat, semmit nem csinál az mcu, ha azonban a nyomógomb felé teszem az ujjam, de nem nyomom meg, vagy pedig hozzáérek a nyomógombhoz de nem nyomom le, akkor elkezd villogni mint az állat.
Elveszem az ujjam, megint semmi. Ha a gombot lenyomom, utolsó értékét megőrzi a led, tehát nem villog, fixen egyben lesz vagy nullában.

Most jön a csel:



#include "io430.h"
#include "intrinsics.h"

void main(void) {
WDTCTL = WDTPW + WDTHOLD; //Letiltjuk a watchdog időzítőt
P1DIR |= BIT0; //P1.0 legyen digitális kimenet
P1DIR &= ~BIT3; //P1.3 legyen digitális bemenet
while(1) {
while(!(P1IN & BIT3)); //lenyomásra vár
P1OUT ^= BIT0; //LED1 állapotának átbillentése
__delay_cycles(20000); //20 ms pergésmentesítő késleltetés
while(P1IN & BIT3); //felengedésre vár
__delay_cycles(20000); //20 ms pergésmentesítő késleltetés
}
}


Megcseréltem a két állítást. Eredmény: ugyanaz.
Érdekes módon a demó programnál ilyet nem vettem észre, azóta viszont tucatszor próbáltam programot írni nyomógombra, egyik sem volt olyan, amilyet vártam. Pl. Vagy akkor érzékelte lenyomottnak, ha ugyanúgy nem nyomtam le, de hozzáértem, vagy a P1.3 tüskevezetéséhez, ha hozzáértem, akkor érzékelte lenyomottnak.

Most hogy van ez?

Írnátok nekem progit, illetve valami gondolatot, miért nem jó ez?
Köszi!
(#) Nyugdíj hozzászólása Jan 26, 2012 /
 
#include "io430.h"
#include "intrinsics.h"

void main(void) {
WDTCTL = WDTPW + WDTHOLD; //Letiltjuk a watchdog időzítőt
P1DIR |= BIT0; //P1.0 legyen digitális kimenet
P1DIR &= ~BIT3;
P1DIR |= BIT6;

while(1) {
while(!(P1IN & BIT3));
P1OUT ^= BIT6;
__delay_cycles(20000);
while(P1IN & BIT3);

P1OUT ^= BIT0;
__delay_cycles(20000);


}
}



Erre: Ég a zöld led. közelítek, villog mind2, mint az eszeveszett, gyorsan lenyomom. Ezután vagy ég a zöld led megint, vagy a piros, és így tovább.
(#) szitko válasza Nyugdíj hozzászólására (») Jan 26, 2012 /
 
Idézet:
„Most hogy van ez?”

Hát úgy, hogy az R34 C24 alkatrészek nincsenek beforrasztva. Nézd meg Icserny I.cikkében a kapcsi rajzot. Tegyél a P1.3-ra egy 47k felhúzóellenállást.
(#) Nyugdíj válasza szitko hozzászólására (») Jan 26, 2012 /
 
"like", köszi, tényleg nincs beforrasztva, akkor majd megoldom, köszönöm!
(#) icserny válasza Nyugdíj hozzászólására (») Jan 26, 2012 /
 
Forrasztás helyett gyorssegélyként a belső felhúzás is bekapcsolható. A cikksorozat I. része ismerteti az I/O portokhoz tartozó regisztereket. Ezek szerint:
Idézet:
P1REN - ha valamelyik bitjét '1'-be állítjuk, akkor a P1 port megfelelő bemenetén engedélyezzük a beépített fel- vagy lehúzó ellenállást. Azt a P1OUT regiszter megfelelő bitje mondja meg, hogy a fel- vagy lehúzás legyen érvényben (1: felhúzás Vcc-re, 0: lehúzás Vss-re).”

Ha minden igaz, akkor a P1.3 bemenetre kapcsolát csak a felhúzással kell kiegészítened. Az alábbiak közül az első sor eddig is benne volt a programodban. Egészítsd ki a másik kettővel:
  1. P1DIR &= ~BIT3;         //P1.3 bemenet legyen
  2. P1OUT |= BIT3;           //Felfelé húzzuk, nem lefelé
  3. P1REN |= BIT3;             // P1.3 felhúzásának bekapcsolása
(#) Nyugdíj válasza icserny hozzászólására (») Jan 26, 2012 /
 
Háh!

Köszönöm, így még jobb, de felhúzó R-el is működött!
(#) szitko hozzászólása Jan 26, 2012 /
 
Szeretnék egy kis elméleti segítséget kérni.
Egy egyszerű órát szerenék csinálni, ami óra, perc, másodpercet jelezne ki , semmi mást. Nem kell beállítógomb, (egyenlőre) és semmi más (dátum stb..).
Az érdekelne, hogy egy timer modullal megoldható, külső kvarc nélkül? Szeretném a kontroller belső 1MHz frekijét használni. Ha megoldható merre fele induljak el?
Még soha nem csináltam órát.
Előre is köszönöm az infókat.
(#) kadarist válasza szitko hozzászólására (») Jan 26, 2012 /
 
Szia!
Akár még össze is goglizhatod. Egy találat: Bővebben: Link
(#) szitko válasza kadarist hozzászólására (») Jan 26, 2012 /
 
Köszi szépen, de ennél sokkal egyszerűbben szeretném megoldani. Körbenézek, hátha mindenttudó googli kidob valamit.
(#) kadarist válasza szitko hozzászólására (») Jan 26, 2012 /
 
A mikrovezérlő egy egyszerű dolog, csak programozni kell és azt csinálja, amit akarsz. Konkrétan mit nevezel egyszerűnek? Ennél egyszerűbbet nem nagyon találsz.
(#) szitko válasza kadarist hozzászólására (») Jan 26, 2012 /
 
Idézet:
„Konkrétan mit nevezel egyszerűnek?”

Programozás szempontjából egyszerű. Valami olyasmire gondoltam, hogy a timer, 1 másodpercenként megszakítást csinál, és onnantól már csak számolni kell, és valamin megjeleníteni. Nem kell, beállítás, zenélés, stb... Ami tényleg belefér 10-20 sorba.
(#) kadarist válasza szitko hozzászólására (») Jan 26, 2012 /
 
Ha csak egy 1 Hz-es órajelre van szükséged, akkor ahhoz nem kell mikrovezérlő. Egy kvarcpontosságú 1 Hz-es generátor: Bővebben: Link. De ha mindenképpen az MSP-nél akarsz maradni, akkor keress az "1 Hz LED blinking" szavakkal.
(#) icserny válasza szitko hozzászólására (») Jan 26, 2012 /
 
Megoldható, de nyilvánvaló okokból nem lesz pontos. Az 1 MHz-ből csak akkor tudsz hardveres úton 1 Hz-et fabrikálni, ha a Timer előtt leosztod (pl. SMCLK=DCO/2, Timer órajele pedig SMCLK/8. Így belefér a 16 bites számlálóba, de mivel nem kettő hatványa lesz az SMCLK/8 hányados, így be kell vetni valamelyik Capture/Compare modult is.

A cikksorozatom második részében a 7_2. lista majdnek azt csinálja, amire szükséged van. A különbség annyi, hogy abban az SMCLK=DCO (nincs leosztva 2-vel), ezért nálam 2 Hz gyakorisággal áll be a TAIFG jelzőbit. Ha a BCSCTL2 regiszerben a DIVS1: DIVS0 bitekben 01-et állítasz be, akkor meg lesz az 1 Hz!

Persze, a további (7_3., 7_4. lista) mintaprogramok alapján megszakításba is tehető a TAIFG vagy CCIFG0 lekezelése.
(#) szitko válasza icserny hozzászólására (») Jan 26, 2012 /
 
Az egyszerűség kedvéért másodperc sem kell, csak perc, és óra. De .... Úgy kellene megoldanom, hogy lehessen gyosítani 5 szörös szorzóval. Tehát, ha pl nyomok egy gombot, az 1 perc, 12 másodperc legyen. Csak ennyi a trükk az egészben. De egyenlőre csak infót gyüjtök, mert látom nem lesz ez olyan egyszerű, ahogy elgondoltam.
(#) David.zsombor hozzászólása Jan 26, 2012 /
 
Hmm érdekes. De akkor ez alapján a programoró lábakat használhatom tápnak?Bővebben: Link
(#) icserny válasza David.zsombor hozzászólására (») Jan 27, 2012 /
 
Idézet:
„a programoró lábakat használhatom tápnak?”
Igen, ameddig a védődiódák bírják az áramot...

Sőt, ha egy áramkorlátozó soros ellenálláson keresztül vezeted be az 5 V-os logikai jelet, akkor a védődióda a bemeneti "szintátalakítást" is megcsinálja. A PICAXE esetében így oldották meg az RS-232 szintillesztést is. Hajmeresztő!
(#) icserny válasza szitko hozzászólására (») Jan 27, 2012 /
 
Idézet:
„Úgy kellene megoldanom, hogy lehessen gyosítani 5 szörös szorzóval.”
Ha gombnyomáskor átírod a CCR0 regiszter értékét 62500-1 helyett 12500-1, azaz 12499-re, akkor ötször gyorsabban telik az idő.
Következő: »»   30 / 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