Fórum témák
» Több friss téma |
Ezt próbáld megszerezni!
Nekem úgy rémlik, lehet, hogy hibásan, hogy ezt a könyvet nagyon nem javasolják kezdőknek.
Köszi!
De ez meg van nekem is! ![]() Meg a Ruzsinszky féle is! Csak gondoltam hátha van ezen kettőn kívül valami más.
Egyébként ajánlanád kezdőnek? Én most ismerkedem a PIC-kel.
Annyira nem mélyedtem még bele még, de így első ránézésre tényleg nem annyira kezdő szint.
Egy próbát megér, ha megveszed, nem olyan drága: Bővebben: Link A másik könyv pedig ez: Bővebben: Link Szerintem ez elég érthető kezdőknek is. Az elején egy kis C gyorstalpaló is van. A hozzászólás módosítva: Jan 1, 2019
Sziasztok!
Megint van egy problémám! Számolás eredményeként van egy float szám. Ezt a számot meg szeretném jeleníteni lcd-n, kerekítés után 4 karakteren, egy tizedes pontossággal. Az egész része 20 és 30 közé esik. Sehogy nem akar 4 karakteren a kijelző megállni.
a kerekit függvény
Az lcd-n megjelenik a szám, de utána még kiírja azt is ami nincs a kiíratási parancsban, az eredeti txt-ben levő számot. A program mikroc-ben íródik. Mondjátok hogyan csináljam?
1. Ha négy karaktert szeretnél használni, akkor legalább 5 bájtos karaktertömböt hozz létre, hogy a lezáró nulla is beleférjen.
2. A FoatToStr jó eséllyel túlírja a 4 bájtos karaktertömbödet, csoda, hogy nem ír felül minden mást. A megoldás: - használj akkora karaktertömböt amibe biztosan belefér a FloatToStr eredménye - A tömb 5. elemét (aminek 4 az indexe) nullázd ki, így az Lcd_Out úgy veszi, hogy ott vége a string-nek.
Sziasztok!
Megoldódott! A napit változó számolásánál követtem el hibát. Régi más program nyelvekből megmaradt rossz beidegződés miatt nem fordítottam kellő figyelmet a változók kikényszerített előjelességére, így megint a korábbi unsigned hiánya okozott hibás kiértékelést.
Köszönöm a tanácsot, de mint írtam sikerült a hibát megtalálni. A FloatToStr is csak egy kényszerűség volt.
Sziasztok!
Csak egy apróság, hátha más is belefut kezdőként C nyelven. MPLAB X v5.10 - XC8 v1.45 Én BASIC-ben szoktam, így néha fejtörést okoz a C, mint most is.
Korábban működött, de most nem fut rá a program, nem is fordítja le és nem is reklamál érte.
Így működik.
Ez a sor C nyelven azt jelenti, hogy a I2C_Master_Start eljárás címét kellene eltenni valahová, de a cél nincs megadva. Egy rendes fordító / optimalizáló a sort értelmetlensége miatt kiveszi a kódból. Értemet pl. akkor kaphatna, ha ezt a függvény belépési címet átadnánk egy pointer típusú változónak vagy egy másik eljárásnak un. függvény paraméterként.
Ez a sor az eljárás meghívását írja elő. A hozzászólás módosítva: Jan 2, 2019
Ebben nincs semmi meglepő, ahogy Hp41C is írta. Ki is tudod íratni a címet:
Ez így teljesen oké. Csak könnyen lemaradhat, ha nem figyelünk kezdőként. A fordító ki is vette, nem volt a listázásban, csak éppen azt nem írta le sehova, hogy miért.
Ezt is kiveszi az optimalizáló pedig lenne értelme. Az USART vevő bufferből kiolvassa a hibás karaktert. Mivel hibás, az értéket úgyis eldobjuk...
Ez csak azárt magad a kódban, mert a WREG volatile kulcsszóval definiált.
Sziasztok! Frissen regisztrált tag vagyok itt, köszönöm a befogadást! PIC C-ben való programozással kapcsolatban lenne kérdésem. ASM-ben már használtam PIC-et , hobbi szinten nagyobb dolgokat is csináltam, de most C-ben szeretnék elkezdeni PIC-et Programozni. PIC16F877-el dolgozok, MPLAB 8.92-est használok, jelenleg a CCS C compilert használom, a próba verziót (demo), ami még 42 napig ingyenes és utánna meg kellene vennem. Tudna valaki segíteni, hogy honnan tudnék letölteni egy nem demó , de ingyenes CCS C compilert a fent írt MPLAB-hoz, és hogy a PIC16F877 et tudjam vele prgramozni /debugolni? Probaltam a googleval már megoldást keresni de sajnos nem jön össze. Más c fordító is szóba jöhet, csak az MPLAB megszokott környezetemhez és a PIC16F877-hez rakaszkodnék.. Előre is köszönöm a segítségeteket!
![]()
Nem demo CCS fordítót a CCS honlapjáról lehet letölteni a megfelelő díj kifizetése után.
Más megoldás a Microchip XC8 fordítója, ami néhány napig teljes módban működik, utána Free módban használható. Hátrány, hogy nincs annyi előre megírt könyvtára, mint a CCS -nek, hogy meglehetősen hosszú kódot fordít az ingyenes módban. Továbbá a régi MpLab 8.xx -hez 1.33 vagy 1.34 körüli verzió használható.
Sziasztok!
Meg mindig az eepromokkal küszködök! A fejlesztő rendszer mikroc. Van egy do-->while ciklus, ami után ki kell olvasni az eepromból adatokat. Ez után a ciklus után csak úgy hajlandó helyes adatokat kiolvasni az EEPROM_Read, hogy az utasítást, 100 ms késleltetés után adom ki. Miért van ez?
Nem, hanem amikor kiléptem a do-while ciklusból.
Az MPLaB 8.92ben nem tudtam beallitani forditokebt az XC8at, mert a legurdulo listaban csak C8at latok. Ez miert lehet? LEhet hogy masik mplab verzio kell?
Ha megis ccs c forditot szeretnék akkor megszerezhető valamilyen feltort verzió ha igen honnan? Hobbi celra nem fizetnék ki ilyen osszegeket. Köszi!
Kilépsz a do-while-ból, utána írsz bele és már olvasod is ?! Az EEPROM íráshoz idő kell, jelzi egy bittel, hogy mikor van kész, azt figyeld !!
Itt nem nagyon tolerálják ha feltröt dolgokat kérsz.
A do-while alatt van eeprom írás ami switch ciklusban történik, majd az írás befejezése után van egy if vizsgálat ami azt nézi meg, hogy az összes eepromba történő írás meg volt e. Ha igen akkor a do-wilele ciklus elhagyásához szükséges változó átírása történik meg, majd kilép a do-while ciklusból és kezdene az eepromból olvasni.
A hozzászólás módosítva: Jan 3, 2019
A Mikro C kézikönyve fel is hívja rá a figyelmed, hogy amíg nem fejeződött be az írás, nem kapsz vissza jó eredményt.
Idézet: „Ensure minimum 20ms delay between successive use of routines EEPROM_Write and EEPROM_Read. Although PIC will write the correct value, EEPROM_Read might return an undefined result.” Ha nem akarsz fix ideig várni, akkor ahogy mondták, figyelned kell a EEPROM írás befejezését jelző bit-et (adatlap).
Köszi ezt én is olvastam! De azt gondoltam, hogy írás után van néhány lépés ami elég kéne legyen időben, hogy tudjon jó eredményt adni. Lehet a figyelést próbálom még meg.
Ne gondold. Számold ki az órajelből. Bár C-ben nem könnyű. Nem tudom a mikroc készít e disassembly fájl-t.
Nem is kell számolgatni nagyon, kb 8ms lehet az EEPROM írási ciklus. Belátható, hogy ez azért elég hosszú idő.
|
Bejelentkezés
Hirdetés |