Beágyazott rendszerek -- c nyelv
2011-04-18T16:44:47+02:00
2011-04-23T11:46:14+02:00
2022-07-24T16:16:24+02:00
  • hobbielektronika.hu-n is nézz szét, van sok mikrokontrollerekkel kapcsolatos cikk.
    Mutasd a teljes hozzászólást!
  • még itt is találtam egy jó cikket:
    Smart
    Mutasd a teljes hozzászólást!
  • a link, amit küldtél -> azt megértettem, köszi
    Mutasd a teljes hozzászólást!
  • texas microcontroller használok, CC2430, még annó a suliban láttam ilyent és megtetszett és most van lehetőségem használni ilyent és ki is használom ezt. a kommunikációhoz van egy rakás kód (zigbee) és azokat nézegettem.

    és tényleg #define-nal van megadva az összes olyan ki bemenet, vagy kapcsoló, ami nem memóriaterületre mutat. és akkor, ahogy írtátok, a linker tudja azt kezelni.
    ezeket nem láttam át, hogy hogyan történik, mert ugye a C egy magasabb nyelvként tartjuk, de beágyazott rendszerekhez meg mindenképpen alacsonyabb nyelvet várunk.

    amúgy igazad van, tényleg jobb lenne az alapokat assembly-ben megcsinálni, mert ha lesz is futó kódom, nem fogom átlátni, hogy hogyan működik. de szerencsére van egy csomó tutorial a neten, meg Ti is segítettek már. amit köszönök.
    Mutasd a teljes hozzászólást!
  • Én úgy akartam írni: akár a linker oldhatja fel, akár a preprocesszor (mint ahogy itt előbb írták egy define-n keresztül) (mindkettőre láttam már példát). Sajnos nem tudok a te rendszeredről semmit se írni, mert elég keveset árultál el.
    És igen nagy valószínűséggel a GPIO-d hajtja meg a LED-et, de ahogy írtam lentebb kicsivel, van még pár lehetőség, de akárhogy is a lényeg, hogy ezzel a paranccsal végül is egy SFR-ba fogsz írni (hogy pontosan melyikbe és hogy az mmit csinál az a te konkrét mikrokontrolleredtől függ).
    Amúgy, ha véletlenül most kezdenél ismerkedni mikrokontrollerekkel (vagy úgy általánosságban hardverrel), akkor én se ajánlanám a C nyelvet kezdésnek.
    Mutasd a teljes hozzászólást!
  • Alapvetően a LED_1 az egy konstanst jelent, ami valahol egy #define-al valahová meg van adva, hogy hová mutasson. Mutathat pl. PORTA, 1-re. Ebből a PORTA az kb. olyan mint egy változónév, az 1 pedig azt jelenti, hogy ennek a változónak az egyes bitje. Viszont ez nem valódi memória, hanem a memóriába van leképezve a kontroller kivezetése. Ha azt írod, hogy LED_1=1, akkor a kontrollerben levő processzor gyakorlatilag a PORTA memóriacím egyes bitjét billenti egyesbe, de ez fizikailag a kontroller kivezetésének egyesbe billentését jelenti. Lábról olvasáskor ugyanez történik, csak visszafele. A belső processzor úgy olvas, mintha memóriát olvasna, csak a memória helyett a lábról jön az információ, hogy nulla vagy egyes szinten van. Memory-mapped I/O - Wikipedia, the free encyclopedia

    Egyébként nem biztos, hogy a C nyelv a jó választás az ismerkedésre, mert sokmindent elfed, amit kezdeti időkben jó lenne kiizzadni és ezáltal megérteni. C nyelv jól fog jönni később, amikor már nem az ismerkedés lesz a fő téma, hanem valamilyen konkrét feladat megoldása.
    Mutasd a teljes hozzászólást!
  • Köszi, neki is állok.
    Mutasd a teljes hozzászólást!
  • Az jó dolog, hogy ha már megvan az adatlap, főleg ha olyan sok oldalas.. Abban benne kell lennie a válasznak.
    Nem kell az egészet végiglapozni, a PDF-ben általában vannak könyvjelzők. Nahh neked valami olyasmit kell keresned, hogy "I/O ports", vagy "General Digital I/O Ports".

    Ezen címke alatt megkell találnod, hogy milyen regiszterekkel, hogyan lehet inicializálni és használni a portokat, blokk/idő diagram és akár kész asm/C kódrészletet is találhatsz.
    Mutasd a teljes hozzászólást!
  • köszi, hasznos info volt. mondjuk amin még elgondolkoztam az az utolsó két sorod (amit itt most nem látok), hogy az adott IO lábat és a változót azt a linker köti össze? azaz, ha megadja a linkernek, hogy L az az egyik láb, akkor L=1 esetén feszt tettem a lábra? ezt nem tudtam a kódból kibogarászni. valamint nézem a doksikat, mert a texas-os cuccokhoz van vagy 1000 oldal, és hiába néztem át a felét, vagy hülye vagyok, vagy a másik felében van.
    Köszi
    Mutasd a teljes hozzászólást!
  • Szeva!

    Ha arra vagy kíváncsi, hogy a hardverben mi történik, akkor:

    legegyszerűbb esetben egy digitális IO-ra rá van kötve a LED (általában egy soros ellenálláson keresztül a tápfeszültségre vagy éppen földre). Ekkor elég csak ezzel a digitális IO-val logikai 1-et hajtani vagy 0-t hajtani, attól függően, hogy van bekötve a LED.
    Bizonyos LED-eknél (vagy ha a fényerőt akarják vezérelni), akkor PWM-el is hajthatják.
    Az is lehet, hogy a digitális GPIO-d egy külső tranzisztort hajt.
    Ha az adott LED-nek fontos, hogy konstans áramot lásson, akkor áramforrással is lehet hajtani (általában ilyenkor egy áramtükör van a kimeneti pin előtt és ezt lehet ki be kapcsolni). Ilyenkor meg lehet spórolni az ellenállást, mert az áram korlátozva van.
    Komolyabb teljesítmény LED-ek esetén találkozhatsz kapcsoló üzemű konverterrel is.

    Szóval elég sokféle módon meg lehet hajtani egy LED-et, attól függően, hogy milyen a mikrokontrollered és épp milyen a LED-ed (amikről nem sokat írtál).

    A LED_1 meg valószínűleg egy SFR címére mutat és elég sokféleképpen lehet definiálni. Lehet, hogy a preprocesszor definiálja, lehet hogy a linker.
    Ha függvény lenne, akkor szvsz máshogy kellene hívni.

    Üdv.
    Mutasd a teljes hozzászólást!
  • Sziasztok
    Egy mikrokontrollert programozgatok C nyelven. Van hozzá mintakódom és úgy ahogy megértettem is, hogy hogyan tudom használni (pl. ledek bekapcsolása stb.). Ami gondot okoz, hogy a mögöttes dolgokat is meglássam. Hogyan gyullad ki a led olyasmiből, hogy
    LED_1 = 1

    látom magam elött a microcontroller blokkdiagrammját és kb. azt is, hogy valamelyik lábára gondolom a LED van kötve, de nem tudom, hogy hogyan is működi a háttérben az egész. néztem a kódot és volt asm függvény, de hogy mi az... esetleg fordítófüggő lehet?
    több eszközöm is van és, honnan tudja a fordító, hogy éppen melyiken mennyi led van. segítsetek, ne maradjak tudatlan
    köszike
    Mutasd a teljes hozzászólást!
abcd