Fórum témák
» Több friss téma |
Idézet: „Most akkor mi is a kérdés?” Szeretnék egy állandót deklarálni, de csak részben állandó, mert külső tényezőtől függ az alapbeállítás. Ha valamiért változna a külső tényező, akkor "újra kéne állítani" az állandót. De ha ilyen bonyolult, lehet, hogy megcsinálom egy egyszerű "int" változóval.
Az az állandó ami futásidőben nem állandó az nem állandó
![]() Erős egyszerűsítéssel elképzelheted úgy, hogy a #define a fordítás során search & replace szerűen működik, mindenhol ahol az "ertek" szóba botlik, azt kitörli, helyére pedig 30-at ír. Egyébként a kódodban szintaktikailag hibás, helyesen:
de egy íratlan szabály szerint a konstansokat nagybetűvel írjuk így még szebb a:
Ettől függetlenül neked egy int változóra van szükséged.
Sziasztok!
Úgy látom elég sokan belevettétek magatokat ebbe a dologba, nálam jobban hozzáértőktől kérdezném, hogy a wiki és a blokk séma szerint az 5-ös sorozatban is van spy-bi-wire interfész, akkor ezeket is lehet a launchpaddel programozni? Esetleg tapasztalat ezen a téren? Idézet: Fordítási időben, amikor a #define direktívák feldolgozása történik nincsenek "külső tényezők", ezért hibás az elképzelés. Az int változó használata a megoldás. „Ha valamiért változna a külső tényező, akkor "újra kéne állítani" az állandót.” Idézet: Elvileg igen, de nem tudni, hogy az emulátor firmware nem tartalmaz-e valami szoftveres korlátozást. Ki kell próbálni! „ezeket is lehet a launchpaddel programozni?”
Átkötöttem a ledet, meg kicseréltem az ellenállást, most működik rendesen, minden porton. Nem tudom mi lehetett a baj, lehet hogy valahol nem érintkezett rendesen.
Lenne még két kérdésem a témával kapcsolatban: Ha a felprogramozott mikrokontrollert kiveszem és belerakom egy led villogó áramkörbe, akkor az áramforrást hogy kössem be? A másik kérdésem, hogy ugyebár a tápfeszültség usb-ről 3,5 V. De ha mondjuk 12 V-os ledeket szeretnék meghajtani, akkor azt hogy oldjam meg? Üdv: Hayes Idézet: Nézd meg a cikk első oldalán a kapcsolási rajzot, valamint a mikrovezérlő adatlapját! A mikrovezérlő VDD és VSS (tápfesz és GND) közé kell egy 100 nF-os kondenzátor!„az áramforrást hogy kössem be?” Idézet: „ugyebár a tápfeszültség usb-ről 3,5 V” Nem, az USB-ről +5 V-jön (ami a TP1 ponton elérhető). A Launchpad kártyán van egy kis feszültségesésű stabilizátor, az csinál 3,5 V-ot belőle. Nagyobb áramú vagy feszültségű LED-eknél minimum egy tranzisztort be kell rakni (bázis és kollektorkörbe soros ellenállással), bár a LED-eknél inkább áramgenerátoros meghajtást kellene használni.
Köszönöm mindkettőtöknek a választ.
idlob: Az = jelet véletlenül raktam oda, tudom, hogy nemkell, de a nagybetűs dolgot nem tudtam. Köszi. Volt egy kis időm elolvasni a "define"-vel kapcsolatos szabályokat, és nagyjából világossá vált a dolog. Elméleti szinten szeretném azt kérdezni, hogy két 2553-ast (vagy az egyik egy kisebb típus, még nem választottam ki) szeretnék összekötni, de az egyik 2553-on lenne még egy HC-05 Bluetooth. Hogy lehetne ezt a legegyszerűbben kivitelezni? Azt még hozzátenném, hogy a két uC között minimális kommunikáció lenne, pl.:egy port állapotváltozását jelezné a másiknak.
HI!
Vakaki tud egy működő integer to char/string függvényt? Az itoa-val már pár órája küzködöm, de sehogy sem akarja elfogadni a fordító, talán nem is használható ![]() Egyébként egy lcd-re szeretném kiírni, hogy egy gomb hányszor lett lenyomva (lcd forrás(ezt átalakítottam 8bit-es vezérlésre))
Valaki tudna segíteni? Előre is köszönöm! Zoltán
Megnéztem a forrást és a problémát, ezt használhatod 1 karakterre:
ha a számod 0-9 közötti egész pozitív Ha több karakteres számot szeretnél kiíratni akkor maradékos osztással fel kell szabdalni, ha érdekel előtúrom azt az eljárást valahonnan.
Ebben a hozzászólásban mutattam egy függvényt, azt lehetne egyszerűsíteni, mert neked nem kell az előjel kiíratása, sem a decimális jegyek levágása, s előjeles long helyett unsigned int bemeneő adatod van.
MSP430ware - egy újabb parasztvakítás?
Megjelent az MSP430ware első (1.00.00.00) kiadása, a telepítője a fenti linkről letölthető (regisztrációhoz és egy formalap kitöltéséhez van kötve). A fő attrakció a Driverlib, ami az MSP430 mikrovezérlők perifériáinka kényelmes kezelését hivatott elősegíteni. Egyelőre azonban csak az MSP4305xxx és 6xxx sorozathoz van kidolgozva. Futólag megnézve én egy kicsit körülményesnek találom a használatát. A telepítő csomag másik nagy vívmánya, hogy a dokumentáció és az egyébként külön begyűjtendő MSP430 mintaprogramok is benne vannak (vagy letöltési linket tartalmaznak), s ez a rész teljesnek tűnik (tehát az MSP430G2xxx és MSP430FR57xx sorozathoz is hasznos információkat tartalmaz). A c:/ti könyvtárba szeret települni. Telepítés után a legkülső könyvtárában nyissuk meg az index.html-t (ha az a neve, már nem emlékszem). Ezen kívül a telepítési könyvtárakat is érdemes böngészni, mert Driverlib forrásállományai is benne vannak!
Köszönöm a segítségeteket!
Icserny, pont ez kell nekem! ![]()
Én is néztem, hogy úgy volt promózva hogy ebben aztán minden benne lesz, aztán az olcsó kategóriás procikhoz semmi driver nincs
![]()
Azt hiszem már kezdem megérteni a programozás alapjait. Sok kis ciklust irkáltam tanulás képen.Itt egy mágnes kapcsolót szimuláló öntartós, ki be gombos verzió.A sikerélményhez hozzá tartozik, hogy saját kútfőből jött.
![]() P1DIR |= BIT0; P1DIR &= ~BIT1; P1DIR &= ~BIT2; P1OUT = 0X00; while(1) { while(P1IN & BIT1) { P1OUT = 0X00; } while(P1IN & BIT2) { P1OUT = 0X01; }
Ma kaptam meg a LaunchPad-ot, de még a "régi" fajtát küdték. De legalább már van kettő, és nem kell cserélgetni a uC-ket. Kérdeztem ,hogy miért nem a nagyobb uC-vel szereltet küldték, az írták, hogy először kiszorják a régieket.
Köszönjük a sok infót, még át fogom nézni, ez mire is használható pontosan. A lábkiosztás változása viszont nagyon fontos.
Beleástam magam az MSP430 USI I2C rejtelmeibe, elkészült a Nokia LCD meghajtó tökéletesített verziója. Mellette sikerült a képkonverter is, I2C-n beolvas két fájlt, a két felső négy bitből alakít egy bájtot, amit visszaír I2C-n keresztül a memóriába. Ha valakit érdekelne, (bár bízom benne, hogy nem, ![]() ![]()
Köszi az infót.
Reméltem, hogy már az újat küldik. Az icserny által belinkelt 43oh cikk hozzászólásai szerint már volt aki az újat kapta. Idézet: „Az icserny által belinkelt 43oh cikk hozzászólásai szerint már volt aki az újat kapta.” Ott olvastam Én is. Amikor először rendeltem a TI-től LauchPad-ot nem volt nekik, és mentették a rendelésem, és most azt a megrendelést hagytam jóvá. Azthittem ennek van köze hozzá, és ezért kérdeztem rá a TI-nél. Sajnos azt nem írták, hogy mikortól küldik az újakat.
Szia!
Fölteszem a kódot, nekem szépen működik. Van egy film is róla a "Színes LCD + PIC" topikban, pontosan ezt csinálja. Bővebben: Link A Nokia LCD Philips tipusu (sárga panel), ha Epson (zöld panel), akkor kicsit át kell írni a kódot. A memória 24LC512, ebbe 2 kép fér el 12 bites színnel, de ezeket át kell akkor konvertálni. Nagy nehezen írtam erre egy progit, a képeket PICKit2 klónnal égettem be. Ha eredeti 24 bites .bmp fájlt írsz bele, akkor a kód kicsit változik, viszont akkor csak 1 kép fér a memóriába
Sziasztok
20 db párhuzamosan kötött led-et szeretnék launchpad-dal meghajtani. de ugye nem nem világít eléggé. Ha jňl tudom tranzisztorral a legegyszerűbb megoldani. de milyen tranzisztorral és hogyan kell bekötni? lécci vki segítsen! ![]()
Szia!
Az msp430 választott kimenetét egy 10kOhm os ellenállással rákötöd egy (pl) bc547 bázisára, és az emittert rákötöd a gnd-re(-), és az ellenállással a +-ra kötött ledek anódját rákötöd a bc547 kollektorára. Ha az msp kimenetén logikai 1 van, akkor a ledek világítanak, ha 0, akkor nem ![]() segítség: kép Zoltán
Ilyen esetben óvatosan bánjunk a tranzisztorokkal, mert könnyen tönkre lehet tenni az MSP430-at!
Először is 20 db LED minimálisan 20x20 mA áramot igényel, ami kb fél Amper, tehát ide már BD tipusu kellene, BC547 kicsi (csak max 100 mA). A BD tranyóknak viszont kicsi az áramerősítési tényezőjük, tehát nagy bázisáram kellene, ami az MSP430-ból jönne. Az MSP430 max kimenő árama csak 2 mA lehet, tehát inkább FET-et kellene használni, pl. IRL530, vagy hasonlót.
Sziasztok!
Segítséget szeretnék kérni ismét.Megírtam életem első programját tanulás céljából.Persze valami értelmes dolgot akartam alkotni, ezért egy garázs ajtó nyitó szerkezet vezérlését találtam ki.Így nézne ki a program. #include "io430.h" #include "intrinsics.h" void main(void) { WDTCTL = WDTPW + WDTHOLD; //Letiltjuk a watchdog időzítőt P1DIR &= ~BIT4; //nyitás nyomógomb P1DIR &= ~BIT3; //nyitás végállás P1DIR &= ~BIT2; //zárás nyomógomb P1DIR &= ~BIT5; //zárás végállás P1DIR |= BIT0; //nyitás relé P1DIR |= BIT1; //zárás relé P1DIR |= BIT6; //világítás P1DIR |= BIT7; //trafó táplálás motrohoz while(1) { while(P1IN & BIT4) { //nyitás feltétele P1OUT = 0X00; } while(P1IN & BIT3) { //nyitás stop feltétele P1OUT = 0X01; //nyitás relé P1OUT = 0X80; //motor trafó relé P1OUT = 0X40; //világítás be } while(P1IN & BIT2) { //zárás feltétele P1OUT = 0X00; //nyitás relé elenged P1OUT = 0X40; //világítás } while(P1IN & BIT5) { //zárás stop feltétele P1OUT = 0X02; //zárás relé P1OUT = 0X80; //motor trafó relé P1OUT = 0X40; //világítás } } } Ez így működik is ahogy azt elvártam tőle.Viszont ez után jött az ötlet, hogy a világítást az ajtó becsukása után is hagyja égve egy ideig.Így kibővítettem egy újabb ciklussal. while(P1IN & BIT5) { P1OUT = 0X40; __delay_cycles(2000000); Ez is megy, csak a gond ott kezdődik, hogy mikor a program számol nekem ,hiába is próbálom kinyitni.Ezért kiegészítettem egy continue utasítással, amit feltételhez kötnék.Íme a gondolatom. while(P1IN & BIT5) { P1OUT = 0X40; __delay_cycles(2000000); if (P1IN & BIT4) continue; P1OUT = 0X00; } Hát ez sem jó így valamiért.A fordító nem ad semmi hibaüzenetet, de nem működik a ciklus valamiért.Próbáltam a cikluson belül is külön ciklusként futtatni.Ismereteim szerint a continue utasítás átugorja az épp futó ciklust.Jelen esetben a break is megtenné, mert a program legvégén van, de azzal sem ment.Próbáltam a BIT5 -ön negádban is, és lefutó éllel is.A segítséget előre is köszönöm!! ![]()
Hasznos kis program
![]() Próbáld meg interrupttal! Ebben az esetben elég egy gomb is a vezérléshez, ha eltárolod, mi volt az utolsó utasítás. Ráadásul elküldheted alukálni is, ha végzett a munkával.
A __delay_cycles helyett használj egy időzítőt ( pl.: TIMER_A modult )és azzal számold az eltelt időt és akkor fog működni a nyitás zárás.
sajnos még ezt nem ismerem.Még nagyon kezdő vagyok sajna.Ha tudnál valami konkrét példát írni rá...
|
Bejelentkezés
Hirdetés |