Fórum témák
» Több friss téma |
Szia!
Mikroc-ben programozok, illetve most tanulgatok én is. A c-t is most kezdem tanulni. Az RB0-RB7 a regiszterek lábait jelenti mikroc-ben bizonyosan, de a c-ben is. Ahogy pl. a Porta.RB0 az A port 0. bitjét jelenti. Szerintem az RB a regiszter bitet jelenti, de ha nem majd kijavítanak és ebből mindketten tanulunk. A hozzászólás módosítva: Dec 25, 2018
?.? Porta.RB0 ?.?
Inkább nayg betükkel PORTA.RA0 illetve PORTB.RB0
Azt hiszem félreértés történik,
Azzal érthető, hogy az "ADCON1.RA0" az a PORTA0 digitális vagy analóg beállítását teszi lehetővé csupán azzal nem vagyok tisztában, hogy van e erre bármilyen "tananyag" ami részletezi, hogy ezt így össze lehet párosítani,hogy ADCON1.RA0. Mert az adatlapban így nem tér ki rá főleg hogy assembly-ben vannak a példák. A C90-es fordítókörnyezet megengedi hogy csak "RA0 = 1;" használj nem kell külön leírni, hogy "PORTA.RA0 = 1;" pl. A tizennégyes szám mikéntje pedig továbbra sem értelmezhető nekem. ADCON1 = 14; Ebben az esetben hogy fog alakulni a teljes adcon regiszter tartalma binárisan? Már pedig amit írtál működik... A hozzászólás módosítva: Dec 26, 2018
Idézet: „ADCON1 = 14; Ebben az esetben hogy fog alakulni a teljes ADCON1 regiszter tartalma binárisan?” A 14 ebben az esetben decimálisan értendő. 14 = 0x0E = b'00001110' Azaz a ADCON1 regiszter tartalma binárisan 00001110 lesz az utasítás végrehajtása után. ADFM = 0; ADCS2 = 0; PCFG3 = 1; PCFG2 = 1; PCFG1 = 1; PCFG0 = 0; // RA0 analóg, RA7.. RA1 digitális A C (-k)ben az egyes regiszterek bitjei struktúrában vannak definiálva. Az olyan hivatkozások, mint "PORTA.RB0" vagy "ADCON1.RA0" szerintem hibásak, mivel a struktúrásukban nincs olyan mező, amire hivatkozunk.
A fordítóprogram include mappájában jellemzően szokott lenni minden mikrovezérlő típushoz header fájl (pl. pic16f876a.h). Abból ki lehet puskázni az elnevezéseket. Hogy melyik mit csinál, azt meg a konkrét chip adatlapjából lehet kilesni.
A mikroc-ben van egy ilyen fájl PIC18F46K80.cp. Ebben úgy látom minden regiszterről leírást végez. Ebből úgy értelmezem, hogy pl. a PORTA regiszter 5. lábára, ha hivatkozunk, ezt megtehetjük a PORTA.B5, vagy az RA5_bit, de nálam a fordító elfogadja a PORTA.RB5-öt is meg az PORTA.RA5-öt is.
Idézet: „Azzal érthető, hogy az "ADCON1.RA0" az a PORTA0 digitális vagy analóg beállítását teszi lehetővé...” ADCON1.RA0 már hibát dob.
Nálam simán fordul. Bár, hogy program futás alatt mi történik azt nem tudom.
Na igen erre voltam kíváncsi, de a többiek is sokat segítettek. A header file-okat át szoktam nézni ha pl egy kijelző vagy uart vagy egyéb dolgokkal próbálkozom. De a legegyértelműbb a PIC header-ét meg soha....pedig ott van minden. Köszönöm egyenlőre mindenkinek.
Sziasztok. Sajnos megöltem egy F876A RB6 portlábát. Minden más működik rajta, sajnos csak a .hex fájl van hozzá meg. Így nem tudom átírni más portlábra a funkcióját, az a kérdés, hogy a .hex -t visszafejtve van -e esély mégiscsak átírni? Ezen a portlábon csak a menübelépés gombja volt programozott felhúzóellenállással... Szabad láb lenne RA3 -4, de eredeti forrásnál nem lenne nagy kaland, de ilyen visszafejtettnél esélytelen egy olyan kezdőnek mint én, jól gondolom?
szerk: Hát most látom az rb6 az rossz ómen, mert már így programozni sem tudom a hibája miatt... Ó A hozzászólás módosítva: Dec 26, 2018
Üdv!
A mellékelt képen látható h hidat szeretném meghajtani egy DSPIC33FJ16MC102 típusú mikrokontrollerrel, ami tartalmaz MCPWM(Motor Control PWM Modul) modult. Ennek segítségével állítom elő a PWM jeleket. A hidat úgy vezérelem, hogy egyik forgásiránynál a jobb oldali meghajtó IC kapja meg a PWM jelet és a bal oldali fix logikai jelet kap és ezáltal az alsó oldali FET-et fixen kinyitja. Ellenkező forgásiránynál ezt pont fordítva valósítom meg. Abba a problémába ütköztem, hogy a PWM1L2 vonalon az oszcilloszkópos képen látható jelalak jelenik meg. A másik forgásiránynál a PWM1L1 vonalon tökéletes PWM jel jelenik meg. Tudna esetleg valaki segíteni, hogy mi lehet a probléma? Sajnos én most azt se tudom eldönteni, hogy szoftveres vagy hardveres probléma lehet.
Sziasztok!
Mint már korábban írtam a c-vel is és mikroc-vel is most ismerkedek. Egy 4x20 karakteres LCD-re szeretnék kiíratni különböző szövegeket. A kiírandó szöveget struktúrába szervezném és a kiírást a program különböző, a program által meghatározott helyein, függvényből meghívott Lcd_Out(sor,oszlop,kiírandó szöveg) rutinnal íratnám ki. Egyenlőre a struct sem akar összejönni.
fordításkor a fomenu.text1 nek való értékadáskor hibaüzenettel leáll.
Pointerrel vagy tömbként [] kell deklarálnod a text-et.
Bővebben: Link Ez a megoldás elegánsabb: Bővebben: Link
Assemblyre vissza tudod fordítani. PICDisasm
Bocs, az első sort nem figyeltem, azokat a mutató deklarálásokat tedd be a struct-ba.
Ugyanúgy leáll a fordítás.
Viszont nézegetem ezt Idézet: „Ez a megoldás elegánsabb: Bővebben: Link” ebben a deklarálásban elég lenne a sports[5][9] is nem?
Nem erre gondoltam, hanem a következőre példára. Kevesebb helyet foglal.
Világos. Épp ezért kérdeztem, csak addig még nem jutottam.
Folytatom az ismerkedést.
Rakj a kettő közé egy ULN2003-as tranzisztormezőt, az bírja. Esetleg DM13A igaz, kicsit macerább beszerezni és 16 kimenete van...
Ez jó lenne, csak mikorra és honnan?
Az ULN2003 az beláthatóbb, de még az is kérdés mikor így szilveszter környékén. Bár lehet, hogy valamilyen ULN-em van itthon maradék. Van itthon 74HC541 vonali meghajtóm, de adatlap szerint össztápáramban az meg még annyit sem tud mint az 595 . Nem értem akkor miért meghajtó.... Na mindegy, megnézem, ezt az STP-t mikorra tudom beszerezni, vagy előkotrom milyen ULN-em van. Köszönöm a linkeket. A hozzászólás módosítva: Dec 27, 2018
Erre gondoltam én is, csak nehezen emészthető a visszakapott asm kód, főleg annyi tudással amennyi nekem van. De mivel a cél az elrontott kontroller megmentése lett volna, más portlábra helyezni a hibásat. Csak sajnos a PGC láb halt el, így értelmetlenné vált, mert nem lehet újraírni a programját ez miatt.
Idézet: „Ugyanúgy leáll a fordítás.” Szerintem globális a struct, akkor így iniciálhatod:
Ha nem adod meg NULL mutató lesz. Hozzárendelést függvényen belül tehetsz: fomenu.text1= "MenuX";
Köszi!
Ez a jó. Idézet: „struct kiir fomenu={"Menu1","Menu2"};” Ez lefordul hiba nélkül. A másik leáll hibával. Idézet: „struct kiir fomenu={.text1="Menu1",.text2="Menu2"};”
Nem tudom melyik ANSI C szabványnak próbál megfelelni a fordító. Ha C89 akkor értető, hogy nem fogadja el az utóbbi inicializálást.
Sziasztok!
Le tudná írni valaki ennek a működését? Nem bírok adatot kihozni belőle, valószínűleg valamit nagyon nem jól értek. Örülnék ha valaki el tudná mondani mit kell tennem ahhoz, hogy például az "TLC" első analóg lábát beolvassa egy tárolóba. A "#define PORTx" sorokat természetesen hozzá igazítottam az áramköröm felépítéséhez. MplabX-et használom C90 fordítókörnyezettel. A kód pedig egy állítólag működő dolog.A PIC pedig 16F876
Köszönöm azoknak türelmét akik belenéznek!
Helo!
Nem tud valaki valami jó könyvet / egyetemi jegyzetet 8 bites PIC-ek programozására C vagy assembly nyelven? Leginkább magyar nyelven lenne jó. Köszi! |
Bejelentkezés
Hirdetés |