Fórum témák
» Több friss téma |
Sok sikert és örömöt az új kártyához!
Idézet: Nem hiszem, hogy ez biztosítaná a cég nyereségét, valószínűbb, hogy lefelejtették.„-Lespóroltak komponenseket (pl R34 felhúzó ellenállás)” Az MSP-EXP430FR5739 FRAM kártyán is vannak érdekes dolgok: az emulátor MCU analóg és digitális földjének kivezetéseit elfelejtették összekötni. Ezért ennek pótlására az SMD IC két lába között van egy takaros ónhíd. Én meg le akartam takarítani, még szerencse, hogy időben megnéztem a User Guide-ban a kártya dokumentációját. ![]()
Sziasztok. Lenne kedve valakinek aki már jobban tud programozni közös projektként (esetleg cikk is lehet) építeni egy panelmérőt. 2X16-os LCD-vel kéne megoldani Olyannal mint ami a cikkben szerepel. Amit én vállalni tudok: Nyák gyártás forrasztás... Hogyha valakinek ahhoz a részéhez nincs kedve
![]()
Egy sima volt mérőre gondoltál?
Azon kívül, hogy a kijelzést át kell írni karakteresre, ez nem elég jó? Bővebben: Link
De csak dip-es ic-vel kéne és 1602-es lcd-vel. 2 csatornát mérni és áramot is. Valahogy így: Bővebben: Link
Akkor lenne valakinek kedve segíteni?
Nekem van PIC -re kész programom (igaz 3510i LCD -re )ha gondolod átküldöm a forrást nem nagy kunszt átírni MSP430 -ra. A labortápomban van már régóta mér áramot, feszültséget, teljesítményt számol, két hőszenzorról veszi folyamatosan az adatokat és vezérel egy ventit. Viszont a kapcsolásban van egy SOIC 8 -as IC (INA271).
Egy viszonylag új cuccot lenne jó csinálni hogy valami igazán hasznosról is legyen már végre cikk... Szerintem nem nagy dolog az egész csak ilyen téren még nem vagyok tapasztalt.
Ha MSP430 vezérli, akkor eleve új lesz.
![]()
Sziasztok.
Három nyomógomb egyidejű figyelését, hogy lehet megoldani? pl:
Ugye itt addig nem megy tovább a program, míg a BIT4 alacsony. Ezt írja le háromszor, vagy van valami egyszerűbb megoldás?
A megoldás (a program logikája) attól függ, hogy a nyomógombok és az általuk vezérelt tevékenységek milyen viszonyban vannak egymással, kell-e szoftveres pergésmentesítés, s hogy a tevékenységek milyen jellegűek. Ezek ismerete nélkül csak annyit lehet mondani, hogy a blokkoló típusú várakozás (a while ciklus) itt messzemenően kerülendő.
Igazából, csak egy szoftveres "pergésmentesítést" szeretnék csinálni. Azért "" jelben, mert a programot addig nem szeretném továbbengedni, míg valamelyik gombot el nem engették, és erre keresem az egyszerű megoldást.
Pontosítok: Egy Lcd menü kialakításán dolgozom, ami a fenti problémától eltekintve müködik. A menü kialakítása elég csúnya (legalábbis szerintem), de sajnos jelen tudásomból csak ennyire futotta.
Sziasztok! Lenne egy kérdésem.Adott egy program ciklus, aminek az egyik utasítása az lenne, hogy vezéreljen egy másik ciklust.Valahogyan így szeretném.
while(feltétel) { utasítás1; utasítás2; utasítás3 ez vezérelné; } while(ezt vezérelné) { utasítás; } Próbáltam értéket adni neki, így. utasítás3 helyett A=1; ,így a while ciklus értéke egy lenne, és futna, de hibát jelez a fordító.Előre is köszönöm a segítséget. ![]()
Írni kell egy függvényt, ezt tedd be a main függvényed elé:
ezt pedig úgy tudod meghívni akárhol, hogy a hozzászólásod alapján az utasítás3 helyére ezt írod: masodik(); Ekkor a program "ki fog ugrani" és végrehajtja a MASODIK nevű függvényt. A függvényen belülre is írhatsz bármilyen kódot, sorban le fog futni, de csak olyan ciklust tegyél bele, ami véget is ér. Ha végig ért az utasításokon amik benne vannak a RETURN; hatására a program "vissza ugrik" oda ahol a MASODIK(); függvény meg lett hívva. Tehát ha van még ott utasítás4; utasítás5; is akkor az is végre fog hajtódni. De ha pontosabban leírod mit kéne csinálni, lehet van jobb megoldás is.
Köszi e segítséget! Így minden világos!
![]() ![]() ![]()
Nem tudom ezt, hogy érted, a PC is csak egy sor kódot hajt végre egyszerre, ugyanígy sorjában hajtja végre a dolgokat, mint a mikrovezérlő
![]()
Sziasztok.
A lentebb (#1135777) hsz. felvetett problémámat, végülis három db. várakozó (icserny mester szavaival "blokkoló típusú várakozás") ciklussal oldottam meg. Lenne egy kicsit furcsa kérésem azokhoz akiknek van egy kis idejük. (modjuk a mai világban ilyen ember nincs) Szeretném ha valaki átnézné nekem a csatolt programomat, ami az lcd vezérlés kivételével teljesen saját készítésű. (Mondjuk az lcd vezérlésbe is belepiszkátam, és icserny cikkéből hozzáraktam egy-két dolgot.) A segway programjához képest ez sokkal összetettebb, mert a segway programjában nincs semmi, csak matek, meg egy pár feltétel. A program működik rendesen, próbapanelen, de szeretnék az esetleges hibákból, vagy fatális tévedésekből tanulni. (Igérem többett nem lesz ilyen.) Előre is köszönöm. Gábor
Szerintem rajtad kívül senkinek sincs fogalma arról, hogy mit csinál ez a program, vagy mit kellene csinálni neki. Ami ránézésre látszik, az lényegtelen dolog.
Lentebb írtam
Idézet: „Egy Lcd menü kialakításán dolgozom” de igazad van. A program egy 4x16 LCD-n megjelenő szöveges menürendszer, és a menüben megjelenő értékek beállítására szolgál. Amúgy köszönöm ,hogy belepillantottál. Idézet: „A fentie három sor helyett írhatnád azt is, hogy:” Írhatnám, de sajnos még nem tudtam felfogni ,hogy mit is csinál, de most számolom. Köszi mégegyszer. Idézet: Egyetlen feltételben vizsgálja, hogy mindhárom gomb fel van engedve (ha ez volt a szándékod). „sajnos még nem tudtam felfogni ,hogy mit is csinál”
Nem. Meg szeretném érteni, és nekem csak úgy megy, hogy lerajzolom, vagy látom az eredményt. Addig nem tudok túllépni semmin, míg meg nem értem, hogy mit, és miért. Pl. "tudom" ,hogy mit csinál a "while" ciklus, értem az & és != operátorokat, de ,hogy ez egysorban,hogy áll össze, azt látnom kell.
Vagy pl: gomb = (~P1IN & fel + le + set) >> 4; erről a sorról már olvastam valahol, de kb 10 A4-es lapot írtam tele, míg összeállt az operátorok használata. Én így tanulok, és úgy, hogy halgatok, az olyan, e szakmában profikra, mint pl. Te vagy.
Ki kell, hogy ábrándítsalak: nem vagyok én profi, csak autodidakta! Igaz, volt rá elég sok évem...
![]() A while((P1IN&(fel+le+set)) != (fel+le+set)); sorban a (fel+le+set) kifejezés egy olyan számot jelent, amiben azokon a biteken (és csak ott) áll egyes, ahová a gombokat definiáltad. Például: 0000 0111 - ha BIT2, BIT1, BIT0 a három gomb 1001 0010 - ha BIT7, BIT4, BIT1 a három gomb A P1IN&(fel+le+set) művelettel pedig beolvassuk P1IN-t és kinullázzuk azokat a biteket, amelyeket nem definiáltál nyomógombnak. (Bitenkénti műveleteknél az ÉS művelet nullázza azokat a biteket, amelyekkel szemben nem '1' áll). A fenti művelet eredménye akkor és csak akkor egyezik meg a (fel+le+set) kifejezés értékével, ha P1DIR beolvasásakor mindhárom bemenet magas szinten állt. Ha nincs egyezés (a != reláció teljesül), akkor pedig várni kell. Idézet: „nem vagyok én profi, csak autodidakta!” Dettó, csak nekem az elektronikában volt 20 év kihagyásom. Az Urbán féle epromégetö után, 2 éve találkoztam a PICkit2-vel. Én így számoltam ki, javíts ki ha tévednék: p1in 0b1x11xxxx & 0b1x10xxxx = 0b1x10xxxx != 0b0x01xxxx A ciklus igaz, mert 0b0x01xxxx, tehát várunk.
Nem világos, hogy a példádban mi micsoda. Szerintem inkább így kellene:
(fel+le+set) = 0b10110000 (az elvárt állapot) P1IN = 0b1x10xxxx (az aktuális állapot, ha a harmadik gomb még le van nyomva) P1IN & (fel+le+set) = 0b1x10xxxx & 0b10110000 = 0b10100000 Mivel 0b10100000 != 0b10110000, ezért még várni kell.
Két dologért nem világos. 1: lehet, hogy egy kicsit sajátos a logikám. 2: Valamiért, a válaszablakba íráskor, menet közben fogja magát, és elküldi az üzenetet, miközben írom, és meg se nyomom a küldés gombot, de ez nem ide tartozik.
Én egymás alá írtam, de a fenti ok miat nem tudtam befejezni. Amúgy teljes mértékben érthető amit írtál. Közben észrevettem egy hibát a programban. Ha az első menü bejön, (ahol csak két dolog közül lehet választani) a kurzort le lehet vinni a 4. sorba, ahol nincs semmi. Köszönöm a kimérítő oktatást. :worship:
Sziasztok! Lenne egy újabb kérdésem. Hogyan lehet azt kivitelezni egy programban, hogy a sorról sorra adott utasítások után, más és más várakozási időt adjunk.Pl
[while(feltétel) { utasítás1; __delay_cycles(2000000); utasítás2; __delay_cycles(6000000); utasítás3; __delay_cycles(100000); } ] Ha ezt így ebben a formában megírom, egy pillanatra végre hajtódanak az utasítások.De az időzítés csak az utolsónál kerül igazából kivitelezésre.Próbáltam for függvénnyel is, de ugyan úgy nem működik.A segítséget előre is köszönöm. ![]()
Esetleg egy változót csökkentesz várakozás helyett?
Nekem ez így működik. A __delay_cycles(1000) MCLK = 1 MHz-hez van méretezve...
Mi az "uint16_t", és hol találok róla több infót?
A C könyveimben nem találtam semmit róla. |
Bejelentkezés
Hirdetés |