Mikrokontrollerek programozása C nyelven
2009-08-05T09:07:23+02:00
2009-08-07T14:18:11+02:00
2022-07-19T04:31:54+02:00
  • Thx!!

    neked is!

    Nem tudod véletlenül, hogy lehet megtudni, mit jelentenek
    ezek a goddamn smile-ik?
    Jópofák, csak nem merem intenzíven használni, nehogy valaki
    megsértve érezze magát.
    Mutasd a teljes hozzászólást!
  • Irígyellek hogy olyan főnököd van akit meg lehet győzni!
    Jó munkát!

    W
    Mutasd a teljes hozzászólást!
  • Szia Whalaky,

    úgy néz ki, hogy az általad talált PWM-es kapcsolás tökéletesen meg fog felelni, elképzelhető hogy a kérdéseimbe nem voltam elég korrekt. A FŐNÖK belátta, hogy felesleges az elképzelése, mert a hívandó mellékek számai fixek, csak a jelentés programozható át a telefon alközpontba. Összesen van kb.10 különböző szám, amit úgy néz ki 4 láb felhasználásával meg tudok oldani (pl. értéke 0001, akkor tárcsázza *721-et, értéke 0000, tárcsázza *744 ...)
    Köszönöm szépen még egyszer a segítséget mindenkinek!

    Üdv:
    MG
    Mutasd a teljes hozzászólást!
  • Egy ekkora projetcnél a dsPIC33 ami jellemzően 64 lábú nem hiszem hogy komoly fejtörést okozna hogy kevés a láb, inkább az lesz a gond hogy milyen karácsonyfát csináljanak a maradék lábakkal. Ez már majdnem az amerikai légierő egy veréb ellen kategória. Szerencsétlen program el fog tévedni abban a hatalmas memóriában.
    Igaz hogy a CCS nem egy agyon optimalizált valami, de nagyon kényelmes és eddig mindent megtudtam vele gyorsan oldani (jó, néhol van benne kevés asm, de tényleg csak kevés)
    Amikre én használom edig tökéletesem megfelelt. Egy ethernetes vagy USB-s chipet asm-ban felprogramozni az azért már kórós elváltuozásra utal.
    Nemrég küzdöttem a Microchip MPLabos USB kezelésésel, hát majdnem duplája a CCS féle primitív USB kezelésnek, arról nem beszélve hogy sokkal egyszerűbb volt belepiszkolni. Amire nekem szükségem volt - hihetetlen módon adatokat küldeni és fogadni - tökéletesen megfelelt a CCS.
    Szóval annyira azért nem gyagyi. Ha az lenne nem lenne ekkora fejlesztői tábora.
    Mutasd a teljes hozzászólást!
  • Meg. Link Ugye az ellenállások lehetnek a belső felhúzók is a PIC lábain, így azokat is meg lehet spórolni. A kontroller egyesével lehúzza a Vx vezetékek egyikét, míg a másik hármat nagyimpedanciás állapotban tartja (vagy a belső felhúzóval húzza felfelé, a lényeg, hogy nem húzza magasra kimenetként kapcsolt lábbal). Ha nincs gomb lenyomva, akkor az összes többi vezeték a felhúzás miatt magas. Ha viszont le van nyomva valamelyik gomb, akkor az az alatt levő Vx láb alacsony szintre kerül. A diódák ajánlatos, hogy schottky tipusok legyenek, bár 5V-ról működő kontrollernél sima szilíciumdiódával is működik.
    Mutasd a teljes hozzászólást!
  • 3x4-es Mátrix megoldható 4 lábbal, csak kell hozzá négy dióda (az AD-hez meg ellenállások, úgyhogy kb. ugyanaz árban).


    Árban lehet. De az ellenállásokat meg a diódákat néhány voltban marékkal szórják a vevő után.
    A lábszám viszont fix dolog. De 4 lábbal hogyan lehet megoldani? Tudsz nekem linkelni egy kapcsolást róla? (Én most hét lábbal oldottam meg a sajátomban. Amikor csináltam, eszembe sem jutott az A/D konverter, most meg már nehéz átépíteni, de jó lenne, ha 3 láb felszabadulna...)
    Mutasd a teljes hozzászólást!
  • 3x4-es Mátrix megoldható 4 lábbal
    Mutasd a teljes hozzászólást!
  • 3x4-es Mátrix megoldható 4 lábbal, csak kell hozzá négy dióda (az AD-hez meg ellenállások, úgyhogy kb. ugyanaz árban).

    A CCS-t én sem szeretem, de én amiatt, hogy ott az int 8 bites, míg más fordítóknál 16 bites, CCS-ben unsigned az alapértelmezett, míg máshol a signed, alapból nem enged a regiszterekhez direktben hozzáférni, pl. írok valamit egy port-ra, akkor ahhoz az adatirány bitet is módosítja. Persze mindenről leszoktatható, de akkor se szeretem. Viszont a HI-Tech fordítói (ami ma már a microchip tulajdonában van) és a C18 nevű Microchip fordító által generált kód elég szép. Meg van még az SDCC is, mikroelektronika C fordítója, stb. Szóval van választék, nem csak CCS létezik. 18F-re C18-at, kisebbekre meg a Hi-Tech fordítói használom.
    Mutasd a teljes hozzászólást!
  • Én jó ötletnek tartom az A/D átalakítót a mátrix-szal szemben.

    Egy 3*4-es mátrix lefoglal 7 lábat még egy ugyan ekkora A/D konverterrel csak egy lábat szed meg magának.
    Ha jól emlékszem, 12 bites A/D konverter van a PIC16F690-ben, ami egy elég alap típus, de már ezzel is gond nélkül lehet kezelni 12 gombot, jó nagy hibahatárral számolva.
    A tapasztalataim alapján elég pontos és stabil az A/D átalakító értéke, úgyhogy nem látom be, miért lenne rossz ötlet a gombok érzékelésére.

    Én két trimmerrel vezérlek egy kurzort egy kijelzőn. Mindegyik trimernek van 16 állása, és a kurzor magától nem ugrál. (Persze ehhez két A/D konvertert használok, trimerenként 1-et.)

    Egyébként valahol van egy jó cikk, hogy ASM-ből hogyan lehet szinuszt csinálni. Emlékeim szerint ha az első negyedben felveszünk 12 konstans értéket, és összekötjük őket lineáris interpolációval, akkor a hibahatár 1% alatt van. (A többi negyedet pedig erre le lehet bontani.)

    Egyébként egyszer megnéztem, hogy mit fordít a CCS C. Úgy döntöttem, inkább maradok az ASM-nél.
    (Persze ha van a PIC-ben hely, akkor gyorsabb vele a fejlesztés.)
    Mutasd a teljes hozzászólást!
  • Mondjuk én CCS C-ben nyomom, arra is van ötlet
    itt
    Ez már közel szinuszos kimenetet gyárt, ez még kap egy minimális símítást és tutti jó.
    Bár szerintem a nagyobb bajod a bemeneti A/D átalakítókkal lesz, de majd kiderül. Én inkább egy mátrixal kezelném a billentyűket mint egy A/D átalakítóval, de a főnök szava szent és sérthetetlen, akkoor is ha .....
    Mutasd a teljes hozzászólást!
  • Szia Whalaky,

    először is engedd meg, hogy megköszönjemnagyon szépen a segítségedet.
    Ahogy én látom, a programba a 2sinust egyszerűen úgy állítják elő, hogy a előre manuálba kiszámolt összeg értékekkel határozzák meg a PWM impulzusszélességét, ezt pedig lekerekítik a szűrővel (mondjuk lehet hogy kicsit szögletes lesz...).
    Eszembe nem jutott volna!
    Ha tévedek, vagy hülyeséget írtam (sűrűn elő szokott fordulni), akkor javíts ki nyugodtan!

    Köszi:
    MG
    Mutasd a teljes hozzászólást!
  • Azért a gugli találatai közt is van sok használható, mint pl ez is
    Mutasd a teljes hozzászólást!
  • http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&node..
    ezen a helyen a la alján zip-be vannak:
    dsPIC DTMF generation library,
    Azt szeretném tudni, vajon melyik program képes a DTMF
    generálására, és az esetleges tárcsázandó számokat hogy tudom megváltoztatni, illetve magát a program meghívását hogy tudom megoldani C-ben,
    ja és továbbra sem világos, hogy a program minek #include-ol a preproceeszornak annyi heather-t, ez gondot jelent, mert meg kell
    sajnos vennem. (meg lehet ezeket esetleg szerezni...)
    Mutasd a teljes hozzászólást!
  • Ezúton szeretnék elnézést kérni, azt hittem, hogy ez egy olyan oldal, ahol a programozók igen nagy százaléka nem feltétlenül ilyen eszközökkel fejleszt, hanem Linux kernel, tűzfal, grafikai motor, weboldal meg ilyesmi...naiv kis agyam eltévedt, bocs még egyszer.


    Itt aztán mindenki fejleszt mindent. Régebben volt saját varázserdőnk is, csak mindenkit elátkozott, ezért kivágták a modik.

    De amíg nem linkelsz egy kódot, amit nem értesz, addig komoly tudásbázis ide vagy oda, nem hiszem, hogy komoly segítséget várhatsz.
    Mutasd a teljes hozzászólást!
  • Szia Whalaky,

    Teljes mértékben igazad van, az A/D-re azért van szükség, mert
    a FŐNÖKNEK ez az elképzelése. Én is úgy szeretném megoldani a feladatot, hogy pl. 1 DIP kapcsolóval, vagy jumperrel ki lehessen választani, milyen VIP(pl. 1:nővérhívás 2:elestem a fürdőben, 3.eltaknyoltam a WC-ben...) melléket tárcsázzon (ezek ugyanis előprogramozott számok a Bosch Integral telefon alközpontokban). A másik, hogy ezek a "Wahlgeberek"
    tudtommal ellenállásokat kapcsolnak, és az ellenállás változást kell észlelnem, a kapcsoló sajnos adott és bagóba kerül. Nekem is sokkal egyszerűbb lenne egy lábra fixre bekötni a kontaktot (erre kérni a megszakítás kérést), és a DIP megmondaná, merre van éppen a kapcsoló elhelyezve (ágy, WC, fürdőszoba, egyéb helyiségek, nem kéne szórakoznom az A/D-val.

    A gondot a DTMF konverzió jelenti, mivel ilyesmit nem tudok assembybe megírni (egyik lehetséges megoldásom az lett volna, hogy egy uC-t, melybe van 2 D/A, azzal állítom elő a 2 frekit, és a kimeneten összekeverem őket (vagy csak összekötöm), csak az ilyen kontroller kissé húzós). Úgy láttam, hogy a dspic33f meg van spékelve DSP-vel, és van hozzá egy komplett C-ben írt DTMF driver, másikat nem nagyon találtam...

    Amúgy abban is igazad van, hogy a program icipici méretű.
    Ezúton szeretnék elnézést kérni, azt hittem, hogy ez egy olyan oldal, ahol a programozók igen nagy százaléka nem feltétlenül ilyen eszközökkel fejleszt, hanem Linux kernel, tűzfal, grafikai motor, weboldal meg ilyesmi...naiv kis agyam eltévedt, bocs még egyszer.

    Üdv:
    MG
    Mutasd a teljes hozzászólást!
  • Nem egészen értem mi a gázos, de gyanítom hogy maga az egész koncepció....
    Figyeled az AD-t, ha 0 akkor nagyom happy vagy és nem csinálsz semmit. Ha nem 0 gondolom az AD értéktartománynak megfelelően megvan hogy melyik tartomány minek felel meg, számolsz belőle egy frekvenciát (időzítést), és nagyon ügyesen elkezded vadul rángatni az egyik kimeneti lábat a számított időzítéssel.
    Amit nem értek, hogy ha ez segélyhívó vagy mifene, akkor minek az AD átalakító? Ha valaki halálán van nem tök mindegy neki hogy az AD átalakítóra menő ellenállás mátrix gombjait paskolja vagy a telefon gombjait????
    Az meg hogy minek erre egy dsPIC33F mikor egy 12F-be is elveszne a program és halálra unná magát, azt végleg nem értem....

    Nem tudom pontosan, hogy hányan hallottak a mikrokontrollerekről

    Azért hidd el vannak egy nagy sárga tállal....
    Mutasd a teljes hozzászólást!
  • Szia KisJ,

    sajna most egy elég sürgős meló miatt el kell húznom a csíkot,
    majd elküldöm a linket jó eséllyel a mai nap folyamán.

    Üdv:
    MG
    Mutasd a teljes hozzászólást!
  • oksa.

    Akkor melyik forrassal van problemad?

    Linket kuld ide!
    Mutasd a teljes hozzászólást!
  • Azta
    Mutasd a teljes hozzászólást!
  • Szia KisJ,

    Tudatában vagyok, hogy létezik ilyen célIC, ( 8880-as pl.), az a gond, hogy önmagában többe kerül egy ilyen IC, mint a pic uC
    , ezzel csináltam meg a demo verziót, a 8880-ast egy Texas MSP430F123-as mikrokontrollerről hajtottam meg, működik a dolog, de a főnököm szerint olcsóbb lenne megcsinálni dspic-el, nagy tételben lenne gyártva. Egyébként az MSP430-ast assemby-be programoztam fel, kellett csinálnom külön egy 4 vezetékes buszt, mert a 8880-asnak 4 vezetékes "busza" van, D0,D1,D2,D3 (pl. első szám=1 D3 (állapota)==0 D2==0, D1==0, D0=1 így kell összerakosgatni, ezzel kezdtem, lényegében a 4db uC lábat kell O-ra tenni (output) és 0-ba vagy 1-be kell billentgeni, ezt nem kunszt...), csak az a nem mindegy, hogy a 8880-as 1100 Huf, az MSP pedig 3,6 Euró, a dspic 1000 alatt is kapható.

    Nem vagyok notórius önszivató, nem szívnék a C-vel ha nem lenne muszály!

    Üdv:
    MG
    Mutasd a teljes hozzászólást!
  • Ha nem megy a C es uC akkor miert hasznalod?
    Kaphato parszaz forintert DTMF koder/dekoder
    Mutasd a teljes hozzászólást!
  • Sziasztok!

    Nem tudom pontosan, hogy hányan hallottak a mikrokontrollerekről (továbbiakban uC) van egy elég nagy problémám. Szeretnék egy dsPIC33F családba tartozó uC-t felprogramozni, hogy a benne lévő A/D konverter különböző bemeneti ellenállás értékeire más DTMF "kódot" adjon ki a uC az analóg kimeneten, mellyel én egy analóg telefon mellékről a telefonalközponton keresztül elérek egy melléket. A készülék egyébként segélyhívó feladatot lát el. A gondom az az, hogy a uC DSP-műjére (a uC ki van egészítve egy célDSP-vel) irt DTMF algoritmus C nyelven íródott, és gőzöm sincs, hogy hogyan és mit csinál a program (ez az egyik problémám). A másik hogy nem tudok C nyelven még egy olyan programot sem írni, hogy a képernyőn írja ki 1-100-ig a számokat (egyszerűen nem megy, nem esik le a logika, vagy én nem tudom... uC-eknél Assemby-be nem volt nehéz egyáltalán, úgy vettem észre ezzel többen szívnak, mint a C-vel). Amennyiben valaki otthon van a C-ben, annak szívesen elküldöm a forráskódot, amit letöltöttem a ChipCad-ről, szeretném tudni, hogy a r_kba működhet a program.

    Segítségeteket előre is köszönöm!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd