A privát üzenet rendszerben karbantartásokat végzünk. Lassulások előfordulhatnak!
Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Nem nagyon ismerem a CCSC-t, de abban ha jol latim "#fuses" kulcsszoval lehet megadni a konfiguraciot. A Devices konyvtarban vannak a header file-ok, es ott ha megnezed az elejen a megjegyzesben ott vannak a hasznalhato Fuses kulcsszavak, tehat pl ha latod, hogy INTRC is ott van, akkor:
#fuses INTRC, NOWDT, NOMCLR, NOPROTECT (persze a NOWDT -nek, meg a NOMCLR stb is ott kell legyen emlitve, hogy azt ismeri az adott eszkoz) Nekem csak egy heralt CCSC van amit az MPLAB melle adnak, abban van egy help file, amibol azt olvasom, hogy van egy View menu, es abban egy Valid fuses nevu menupont amiben meg lehet nezni mik hasznalhatoak es az egyes fuse-ok rovid leirasa is alkkor ott van. Ha nincs akkor marad a header file es a jelentesek kitalalasa a DataSheet-bol...
Pedig jobb lenne, ha asm-ben kezdenél. A CCS elég elrugaszkodott nyelv, ráadásul egy csomó mindent nem lehet/másképp kell, mint a rendes C-ben.
Egyébként nézz bele a header fájlokba, ott benne van a lista a konfig bitek elnevezéseiről.
Sikerült kihámoznom!
Ha érdekel valakit kérdezzen, nem akarom rátukmálni a részleteket senkire...(épp most volt szó hibakezelésről amúgy...) Még annyi infót az elsőre belinkelt kalkulátorhoz, hogy ott is lehet hex formátumban bevinni adatot, csak elé kell írni bájtonként egy % jelet.
Engem erdekelne, szerintem sokunknak okulas lenne
Oké. Ha délután nem felejtem el, akkor felteszem azt az exel táblát, amiben kézzel számolgattam bitenként két bájt crc-jét, az mindent elmond.
Például tök lazán kijelentik, hogy reverse byte mode, aztán találd ki, hogy ez mit jelent! Én először azt hittem hogy a bájtokat és azokon belül a biteket is megfordítják érkezésileg. Aztán mikor ez nem jött be, azt gondoltam, hogy akkor csak a bájtok érkezési sorrendjét fordítják meg. Mikor így sem jött ki, akkor úgy próbáltam, hogy a bájtok sorrendje nem vátozik, csak minden bájton belül a bitek sorrendje cserélődik fel. Na így már jó lett, csak akkor mi a rákért hívják bájt reverse-nek? Na ennyit előzetesben. Egyébkén össze fogom foglalni a lényeget konyhanyelven(ahogy már a táblázatos megoldásnál megtettem), és felteszem azt is az oldalamra. Nem sokat akarok a polinomokról írogatni, mert szerintem nem attól érti meg valaki, hogy hogyan írjon hozzá rutint, hanem abból a folyamatból, ahogy gyalog levezeti az osztást(mod2 módban, azaz XOR). Akkor délután visszatérek erre...
Csatoltam az excel táblát.
A polinomokról talán néhány szót: A CRC-16 szabványos polinomja az x16+x15+x2+1, ahol az x=2. Ez tehát egy binásris szám. 1-1000-0000-0000-0101 Látható, hogy ott van 1, ahol a polinom elemei jelzik. A műveleteknél észre lehet venni, hogy az x16 helyiértékét nem használjuk, mert az mindig egy. Ezért a számításokban használt polinom generátor kód, a 0x8005h (1000-0000-0000-0101). Ezt láthatjátok a táblázatokban is. A polinominális osztáskor nem kezeljük az átviteleket, azokat egyedül jelzésre használjuk, amikor is a XOR műveletet kell elvégezni a soron következő 16biten. Ezeket más színnel jelöltem a táblában. Amikor többet lépek ,akkor ott jelzem, hogy éppen hanyadik shiftelésnél járunk. Ez az egész tologatás egyébként nem más, mint bináris osztás mod2 módban. Erről részletesen ezen a linken olvashattok. Remélem tudjátok használni valamire a táblát! watt.
Szeretnek epiteni egy olyan szerkentyut, ami nagy mennyisegu szoveg tarolasara kepes, es megjeleniteni azt megfelelo felosztas szerint namarmost az a kerdesem, hogy hogyan lehet eltarolni kb 5MB-nyi adatot, amit PIC segitsegevel dolgoznek fel majd jelenitenek meg egy LCD-n
valami linket nem tudnal adni, h ennek pontosabban hol lehetne utananezni?
Most hirtelen nem tudok konkrét címet, de van komplett példa a microchip oldalán, ha jól emlékszem. Az oldalamon meg van leírás az MMC és SD kártyákról.
Elkészült a kis leírás az oldalamon is... WATTMEP
Sziasztok !
PIC-el szeretnék megoldani egy analóg jel mérését. De sajnos nem csak pozitiv hanem negatív is lehet. Ebben az esetben a VREF- pontra köthetek mondjuk -5voltot a VREF+ ra monduj +5 voltot és az analóg bemeneten mért érték ha 0 akkor -5V ha pedig 1024 akkor +5V ? Vagy ha ez így nem működik akkor hogyan lehetne megvalósitani negatív feszültség mérést ?
Nem igazán kellene GND alá vinni az analóg bemenetet...
Inkább tegyél elé egy műveleti erősítőt, összeadóként használva. Ha a max. bemenő jel 5 V, a min. pedig -5 V, akkor állandó 5 V-hoz kell hozzáadni az analóg jelet, így 0 ... 10 V-ot kapsz, amit ellenállásosztóval már 0 ... 5 V-ra tudsz alakítani (vagy ami a Vref alapján szükséges).
Sziasztok!
Lenne egy újabb kérdésem a GSM modullal kapcsolatban. Caller ID funkciót szeretnék vele összehozni. A modul miután azonosította a hívószámot kiküld egy ASCII adatsort ami tartalmazza a hívószámot és még pár adatot a hívásra vonatkozóan (hívásformátum...stb). Az RCREG be eleve csak 8 bit fér el, ez jóval több és ezen már elakadtam. A küldött adat így néz ki: +CLIP: "+3622123456",145,"",,"",0 Kérdésem hogy ebből az adatsorból hogyan lehet "kirostálni" csak a hívószámot, hogy aztán az RCREG ből át tudjam rakni egy regiszterbe bitenkénti összehasonlításhoz? Előre is köszönöm.
Szerintem először válogatás nélkül kiolvasni mindent RCREG-ből, ahogy telik, és inkrementálisan regiszterekbe pakolni; a lezáró nulla után már tudod, melyik bitek hordozzák a számot, kilépteted a felesleget, és kész.
Igen de már a hívószám is több mint 8 bit... És előtte utána is van "felesleg".. Bocs ha túl láma a kérdés de ilyet még nem csináltam.
Emlékeim szerint ha RCREG megtelik az első byte-tal, RCIF bebillen, és megszakítást is okoz, ha RCIE 1-ben van (erről neked kell gondoskodnod). Ekkor kiolvasod RCREG-et, közben veheti a második byte-ot, stb., a lezáró karakterig (CR, LF, vagy ami jön). Minden kiolvasott byte-ot átmásolsz egy blokkba, és ha kész az összes vétele, akkor már eldöntheted, mire van szükséged; ha kell a +36 is, akkor a legelsőként írt regiszterben kezdesz, ha nem kell, a másodikban, az alsó byte-tal, és annyi byte kell még, amennyi a számot hordozza, elvileg az első vessző-karakterig tart a telefonszám, vagyis ASCII 0x21-ig, ha jól emlékszem a kódra.
Idézet: „a másodikban, az alsó byte-tal” Félbyte-ot, nibble-t akartam írni...
Köszönöm, nekifutok. Remélem összejön, bár így elsőre nekem nehéznek látszik.
Köszi
Hali mindenkinek!
Szeretnék C-nyelven programozni ezért kerestem könyvet. Találtam kettő könyvet: Programozzunk C nyelven Programozzunk C++ nyelven Kérdésem az lenne, hogy tanulta valaki ezeket a nyelveket könyvből és lehet e így megtanulni, illetve ezek a könyvek jók e erre. Ha nem, tudna valaki ajánlani nekem könyvet? Ezeket a könyveket a Libribe találtam (remélem nem baj hogy leírtam az áruház nevét nem reklámnak szántam!). Előre is köszönöm a segítséget!
A lehető legjobb könyv csatolva.
Megpróbálom elolvasni mert látom elég sújos anyag!
Azért kösz a doksit!
Az általad említett könyvek szerintem nagyon jók - bár az ilyen minősítések mindig szubjektívek. Én több programozási nyelvet tanultam meg Computerbooks könyvekből, nekem bejönnek. Igaz, több könyvet is olvastam, de önmagukban is jók. A C++ -ról megjegyzem, hogy 8 bites kontrollerekhez nem hiszem, hogy fogod használni, az picit nehéz és alapvető különbségek vannak a C és C++ között, az utóbbi inkább a OOP miatt érdekes. Kezdetben elég, ha C-vel foglalkozol.
Én nekem arra kéne ez a nyelv hogy PIC-eket programozzak másra egyenlőre nem ez is elég nehéz dolog.
Tehát szerinted érdemes ezt a könyvet megvenni? Nekem nagyon alapról kéne megtanulni mert ismereteim a programozásról = a 0-val.
Én azt tanácsolom, asm-el kezdj.
Bocsanat, hogy kozbe szolok, de mikor mikrokontrollerre fejleszt az ember gyakran olyan a feladat jellege, hogy PC-re is kell egy alkalmazast hozza fejleszteni. Ehhez pedig a C++ jol jon.
Firmware fejlesztesnel is mar kezdenek amugy C++ implementaciokat behozni, ezek nyilvan a nagyobb kontrollereknel hasznalatosak, es egy nagyon nagy elonye van a sima C-hez kepest, nevezetesen, hogy a C++ -ban erosebb tipus ellenorzes van, igy elmeletileg kevesebb hibalehetoseg adodik a fejlesztes soran. Nyilvan ez meg mindig nem Pascal es foleg nem Ada, de hat ha mar ennyire mazochistak vagyunk, hogy C-ben irunk mindent akkor elkepzelheto, hogy C++ fele menni nem butasag.
Hát, ez egyelőre nekem még magas...Ott indult a dolog hogy megszámoltam a küldött adat ASCII karaktereinek számát, ez 32. Tehát létrehoztam 4 regisztert mondván abban pont elfér. Aztán jobban átgondolva rájöttem hogy nem igazán jó ez az út mert ahhoz hogy az összes ASCII karaktert ábrázolni lehessen binárisan, ahhoz biza 1 bájt kell karakterenként. Ezt még "rágnom kell" míg megértem hogyan kell csinálni.
Igen, de azt írta, hogy teljesen kezdő.
Azt is megjegyzem, hogy hiába csak PIC miatt szeretne valaki programozást tanulni, szerintem gyorsabban lehet eredményt elérni, ha az alapokat PC-n tanulja meg és utána tanulja hozzá a PIC-es dolgokat. |
Bejelentkezés
Hirdetés |