Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Idézet: „Mennyi lenne az a "gyalázatosan alacsony" ?” PIC25FJ128GA010 (ez az Explorer16 kártya egyik MCU-ja) Endurance = Min. 100, Typ 1000 A tipikus 3,3 V, 25 C fokon érvényes. A minimum a teljes hőmérséklettartományra vonatkozik.
Ha még mindig a PIC16F690-ről van szó, akkor a rossz hír az, hogy a Microchip nem gyártott hozzá más fordítót, csak az assemblert.
A jó hír pedig az, hogy a telepítő könyvtárban eddig is mellékelték a HiTech C fordító ingyenes vátozatát, a közelmúltban pedig a Microchip megvette a céget, tehát feltehetően foglalkozni fog vele, hogy még jobban integrálják bele. Vannak más, ún. Third Party ingyenes fordítók is - ilyen-olyan korlátozásokkal: CC5X, BoostC, MikroC, stb.
Köszi.
Meg is nézem a HiTech ami érdekel ![]()
Üdv!
PIC konfigurálásnál mondjuk egy lábon van adatlap szerint: "RA5/AN4/SS/HLVDIN", és ebből én RA5-öt szeretném digitális lábként használni bemenetnek, akkor ezt hogyan kell inicializálni, azon kívűl, hogy "bsf TRISA5"? ![]()
Megézed az adatlapon, hogy milyen belső perifériák tartoznak a lábhoz, és a hozzá tartozó regisztereket úgy állítod be, hogy ki legyenek kapcsolva. Mást nem kell tenni, ha a TRIS rendben.
Az adatlapon az I/O ports szekcional meg az is ott szokott lenni hogyan kell a portot digitalisra kapcsolni - persze nem mindig tokeletes ami ott van mert az csak egy fajta inicializalasi mod, de tipikusan a PORTA-nal bevalik. Ha esetleg nem assemblyben programozol akkor is azert ki tudod venni meilyik SFR-re mit tolt.
Köszönöm, rendben van.
Más: ha nem akarom mindíg a portlábat írni, hanem elnevezném valaminek az hogy lehetséges? Tehát pl: led felkapcsolás "bsf PORTB, 3" helyett lehet azt, hogy "bsf led"? Odáig megy, hogy mondjuk "led equ 3" és akkor "bsf PORTB, led" de még így is feleslegesen nehézkessé teszi a dolgot, mintha egy szóval hiatkoznék rá. Természetesen assembly. Persze lehetne ez is:
de ez meg nem valami szép megoldás, ráadásul feleslegesen ugrál a program is.
Valami ilyesmi: #define LED PORTB, 5
A kódban pedig BSF LED utasítást kell kiadni.
Sziasztok!
Lehet,h.azért nem volt jó nekem ez a C-s dolog, mert eddig 8.00-s MPLAB-ot használtam? (már updatelve 8.30) ![]()
Sziasztok
a kérdésem az lenne amivel hozzátok fordulok hogy egy pillanatra sikerült egy Pic16F877-re 10v feszültséget adni és ezután már egyáltalán nem tudtam programozni. ilyenkor a Pic teljesen tönkrement vagy még van némi remény arra hogy használni lehessen? Üdv
Ha utána nem lehet programozni, akkor tönkrement.
250 ns-ot kellene késleltetnem, de nem vagyok benn biztos, hogy hogyan kell kiszámolnom.
20 Mhz órajel, PIC18. Javítsatok ki ha tévedek: 1 utasításciklus 4 órajelciklus. Tehát 1 utasításciklus= 1/20000000*4=0,0000002mp=0,2us=200ns Tehát 2db nop elég kell, hogy legyen ugye? Azért kérdezem mert leellenőrizni nem tudom, hogy valójában mennyit vár.
A két NOP 400ns. Ha ez megfelel, akkor más gond nem lesz.
Nekem megfelelne, de mégsem jó.
Szóval egy 4x16 karakteres LCD-t próbálok használni, és az adatlap szerint az ENABLE lábat 220ns-ig kell minimum High szintre tenni. De ez így nekem mégsem elég. Ha sokkal többet várok akkor jó. Lehet valamit félreértek az LCD adatlapon? Displaytech 164A. Na vegyük át az lcd-re kiírást: 1. RS beállítása 2. RW beállítása 3. PORT-ra teszem az adatot 4. E-t High-ra teszem 5. Várakozás 6. E-t vissza Low-ra Ebben akkor most mennyit kéne konkrétan várni minimum? Idézet: „Szóval egy 4x16 karakteres LCD-t próbálok használni, és az adatlap szerint az ENABLE lábat 220ns-ig kell minimum High szintre tenni. De ez így nekem mégsem elég. Ha sokkal többet várok akkor jó. Lehet valamit félreértek az LCD adatlapon? Displaytech 164A.” Nehany LCD kicsit elter a szabvanytol, tehat nyugodtam lehetne tovabb varni. Amugy hogyan varsz 220ns-t? Mert ha 20MHz-es orajelet hasznalsz akkor 200ns-os lepcsokben tudsz haladni, ha 10-MHz-est akkor 400ns-osban stb. 18MHz lenne a legkozelebb.
Én is azt mondom, hogy akkor várj annyit, amennyi már elegendő.
Csináltál cellafrissítést rendszeres időközönként?
Nem csináltam, kellett volna?
Az hogyan nézne ki?
Lehet, hogy kellett volna. Adatlap EEPROM-ról szóló részében keress rá a Using the Data EEPROM címre!
Sziasztok!
Lenne pár kérdésem mire még keresem a válaszokat... 1.) Azt tudom már,h. C-be lehet assemblyt beleilleszteni ezzel a módszerrel: #asm MOVLW 0x55 #endasm Fordítva hogy lehet(Assembly-be C kódot)??? 2. ) Ha van egy C forráskódom, azt hogy tudom lefordítani MPLAB-bal??(gondolom új projekt és megadom a fordítót) char spi_transfer(volatile char data) { SPDR = data; while (!(SPSR & (1< } return SPDR; } Eddig még nem sikerült, mi lehet az oka?? Köszönöm!>>
Idézet: „char spi_transfer(volatile char data) { SPDR = data; while (!(SPSR & (1< { } return SPDR; }” Ugye nem ennyi a forráskód, mert ennek se füle, se farka. ![]()
Nem ennyi, csak kiszedtem belőle egy részletet és felét meg kitöröltem közben
![]() char spi_transfer(volatile char data) { SPDR = data; while (!(SPSR & (1< } return SPDR; } >>
Szívesen elolvasom helyetted a Quick Start Guide-ot, de félek, hogy az nem segít rajtad...
A legegyszerűbb "program" így kell, hogy kinézzen. Tehát kell egy main nevű függvénynek lennie a programban, és be kell csatolni a htc.h állományt.
Idézet: „Fordítva hogy lehet(Assembly-be C kódot)?” Nem tudom, a konkrét esetben ez hogy megy, de az általános elv az, hogy küldő eljárásként kell deklarálni azt a C függvényt, amit meg akarsz hívni. Ismerni kell a C hívási szokásait (paramétereket/visszatérési értéket hol adja át). A paraméterek odarakása után CALL vagy LCALL-lal meg kell hívni a függvényt. De mondd, miért akarod kihívni a sorsot magad ellen, miért nem írsz inkább C keretprogramot, assemly betétekkel (ahol kell)? ![]()
Vagyis levágja a végét a kódnak, mert mint látom másodszorra sem jött össze a beillesztés
![]() itt a levágott rész: 1 < < SPIF ) ) )>>
Oksa, köszi, ezek megvannak eddig.
Amúgy nem akarok nagyon ilyen módon asm-be C-t keverni, mert inkább írok az egyikben sinán, csak érdekelt,h.van-e visszafele út is ![]()
Amúgy szeretném kipróbálni ezt Bővebben: Link a programot és ehhez kellene némi segítség,h.miként tegyem.
Eddig nem sikerült. ![]()
Idézet: „Amúgy szeretném kipróbálni ezt” A programban világosan benne van az útmutató: cc5x fordítóval kell fordítani.
Van rá valami módszer, hogy megmérjem akár szimulátorral egy kódrészlet futási idejét?
MPLAB-ban: Debugger menü/Stopwatch. A kvarc frekvenciáját át kell állítani a project tulajdonságoknál a megfelelő értékre.
|
Bejelentkezés
Hirdetés |