Fórum témák
» Több friss téma |
Azt hiszem printf("%s",sptr); a megoldás, de ez a tok kicsi a feladathoz.
Nem a láthatósággal van baj?
Persze a ROM csak konstanst tartalmazhat:
Köszi, sikerült, rossz helyen volt az __attribute__ ... de simán engedte úgy is lefordítani.
Szia!
Neked sikerült lekezelni C18-ban a double long-ot? Nekem csak long méretű (4bájt) változót hajlandó kreálni akkor is, ha a double-t eléteszem. Esetleg valami beállítás kell hozzá? Lefordulni lefordul...
A "double", az egy lebegőpontos típus. Szerintem nem azt keresed, hanem a "long long" nevűt. Hogy a C18 tud-e ilyet, azt nem tudom.
Létezik long double is, de tudtommal azt sem ismeri a C18, mint ahogy a long long-ot sem.
Igen, kevertem, köszi! De ahogy potyo írja nem ismeri. Könnyű megnézni a watch ablakban hogy hány bájtot foglal, sajnos max a 4 bájtos vátozókat kezeli, legyen az lebegő, vagy sem. A gond, hogy lefordítja hiba nélkül...
Nem mélyedtem bele, de nem lehetne erre lib-et készíteni? A hozzászólás módosítva: Máj 13, 2013
Nyilván lehet, a kérdés, hogy van-e sok értelme egy 8-bites mikrokontrolleren 8-byte-os számokat kezelni. Persze a dolog nagy mértékben függ az elvégzendő műveletektől is, meg hogy mennyire fáj, ha ezek lassúak lesznek.
Igazad van. Akkor okoz gondot a 4bájt korlát, ha nem fér bele egy szám, és felbontáscsökkenést okoz, vagy egyéb kerekítési, túlcsordulási problémát. Elég hamar szűk lehet a 4bájt, ha pascalban, kelvinben kell számolgatni...
A hozzászólás módosítva: Máj 13, 2013
Én azt szoktam csinálni, hogy elosztom, számolok, majd megszorzom pár digittel, nagyságrenddel. Persze ez okoz némi pontatlanságot, de nekem eddig belefért. Ha ez nálad valami miatt nem kivitelezhető és mindenképp szükséged van a nagy tartományra, akkor a 32 bites (pl. CORTEX-M0 magos) mcu-k környékén érdemes szétnézned, mert azokhoz általában van olyan fordító, ami kezeli a 64 bites változókat.
A hozzászólás módosítva: Máj 13, 2013
Szia! Én is ezt csinálom, megoldható vele. Egyébként már a PIC24-től van 64bites lebegő és egész típus is a C-ben.
Lehet onnan kellene kilesni a libraryből a kódjukat, hátha le lehetne fordítani 8 bitesre is.
A 16-bites PIC-ek nekem árazásilag nem jönnek be. Ha már csere, akkor vagy PIC32, vagy valami Cortex M0 (pl. a Chipcad által forgalmazott Nuvotonok igen jó árban vannak).
A C18 ról ezen a helyen (Bővebben: Link) azt írják, hogy nem ismeri, csak a 32 bites float és double típusokat. Én az XC16 ot használom a PIC24F-ekhez, de gondolom az XC8 is hasonló. Érdemes megnézni az újabb fordítókat, és a 16, 32 bites PIC-eket.
Keresek egy nagyon egyszerű C nyelvű programot egy ilyen modul (Bővebben: Link) felprogramozásához.
Igazából nem okoz nagy gondot, ha igen, PIC-et cserélek.
Emellett, sok esetben hócipőm tele van a gyári rutinokkal, nem bírom, mikor egy putcUSART1 függvény elágazásokat meg felesleges vizsgálatokat végez, eleve ennek külön függvényhívást szentelni a drága időből, ráadásul sokszor, miután ezt használjuk a legtöbbet... Inkább úgy csinálom, mint ha asm lenne (TXREG1=a; )
Ha jól látom ez egy SPI portos WIFI illesztő. Nincs mit felprogramozni rajta(talán néhány belső regiszter beállítása), csak tolni kell bele az adatokat és fogadni, ami jön.
Ezt nézd meg, van letölthető példakód több platformra. A hozzászólás módosítva: Máj 13, 2013
A Sparkfun oldalán van PIC mintapélda, de Google barátod biztosan mutat többet is. Egyébként a gyári adatlap a kiindulási adat, az SPI kommunikáció pedig akár szoftveresen (bit bang), akár hardveresen egyszerű feladat.
Kedves watt és icserny!
Köszönöm! Nézegettem már néhány dolgot, de ezeket még nem. Szerettem volna elkerülni, hogy bit szinten megismerjem a modul működését és ahány program, annyi fordítót használjak, de úgy tűnik, mindez elkerülhetetlen. XC16-al, PIC24F-el szeretném megcsinálni. Azt hiszem az adatlap és az SPI lelki világa a kiindulópont.
Itt találsz dspic-re írt prgramot is. De azt ne várd, hogy sültgalambok röpködjenek! Az adatlapot nem fogod megúszni...
A sült galambot csak úgy szeretem, ahogyan én készítem
Tehát nekem nem valami kész holmi kell, mert én nem lopni akarok. A nyelvvel és az eszközzel is most ismerkedem, ezért az adatlapon tűrhetően leírtak fizikai reprezentációját szeretném valamilyen programnyelven megfogalmazva látni. Az adatlapokkal többnyire nincs gondom, csak a szegényes, silány változatokkal. A hozzászólás módosítva: Máj 14, 2013
C nyelvet próbálom tanulmányozni. Ehhez letöltöttem egy RTCC példa programot a a Microchiptől.
Szépen le is fordul, de 2 dolgot nem értek benne. Miért nem látszik az MPLAB projekt ablakában az rttc.h header files? Azt gondoltam így le sem fordul, nekem kell megkeresnem. Mikor van az, hogy megtalálja magától, és mikor kell manuálisan bebrowsolni? Másik kérdés az, hogy az rtcc.h ban az alábbi union került definiálásra:
Ebben a Ebben a year is byte hosszúságú. Mégis, mikor a szimulátorban futtatom az rtcc.c alábbi sorát:
a watch ablakban láthatóan nem lesz a year változó a megadott értékű. Ha átírom pl. max 07 re akkor azt felveszi. Valami a BCD kóddal lehet összefüggésben, de hogyan? Csak byte típust látok. Még az sem egy lehetőség, hogy a felső byte nől egyel, mert az union b, w, l tagjaiban sem látok változást. És csak érdekesség, hogy a fordító assemblyre a kérdéses sort
így fordítja, tisztán zérusra állítva a regiszter tartalmát. Mi lehet itt a magyarázat?
A fejléc állományokat csak azért szoktuk felvenni a projektben, hogy egy esetleges módosítás után az MPLAB tudja, hogy újra kell fordítani a projektet. A gyári fejléc állományokat viszont nem szokás babrálni (néha muszáj, különösen hibát talál bennük az ember) . A fejléc állományoknak valójában a becsatolással (include) lesz közük a projekthez. Az MPLAB akkor "találja meg" a fejléc állományt, ha az benne van a keresési útvonalban.
Ez a BYTE típus szerintem unsigned char, amit egyszerűen BCD-ként használnak.
Az
azért nem jó, mert az oktális 9-et jelentene. Ott 7 a max. Ha 10-es az alapértelmezett számrendszer, 2013 at így célszerű megadni
Sziasztok,
Én szöveg összefűzésében kérnék segítséget. Szintén, RTCC-ből szedem le az év,hónap,nap adatokat ezt egy char tömbbe szeretném összefűzni, majd így tovább passzolva fájlt létrehozni memóriakártyán Láttam példát sprintf és strcat -al is, én utóbbival próbálkoztam. Sajnos a cél tömb mérete nem akar összejönni. 2 szélsőség van: - egyszerűen kicsi, az strcat "elszáll" - nagy és többször kerülnek bele az adatok
+1 kérdés: az így létrejött fname dinamikus tömb értékét miért nem látom MPLAB alatt? se local se watch alatt környezet: pic24h128gp504, mplab 8.89, c30 Köszönöm!
Sziasztok! Hogy tudok egy integet típusú változót az LCD számára megjeleníthető formátumba konvertálni?
Szia!
ha a szám negatív ( előjelet a legfelső bit hordozza), kettes komplemensével kell dolgozni, ha pozitív, akkor csak ez: Először átalakítod binárisan kódolt decimális számmá, (egy byte csak 0-9 ig vehet fel értéket) így kapsz belőle 5db számot (max.: 06 05 05 03 05) majd átalakítod őket ASCII karakterekké azaz mindegyikhez hozzáadsz 48-at, és mehetnek a számok az LCD-re. üdv: Foxi A hozzászólás módosítva: Máj 20, 2013
Legegyszerűbb az itoa függvényt használni, ha elérhető. Az nagyjából ugyanazt csinálja, amit foxi63 írt.
|
Bejelentkezés
Hirdetés |