Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Az igazi programozó így írja: COPY CON: PIC_PROGRAM.HEX
Módosítani akartam a PIC18F14K50 HID bootloader konfigurációs beállítását. Mivel az ingyenes C18 fordítóval nem tudom beleszuszakolni a programot az első 4 kB memóriába,a gyárilag előfordított HEX állományt szerkesztettem át. Az egyszerűség kedvéért Notepad Editorral... A konfigurációs bitek módosítása után a sorvégi ellenőrző bájtot is aktualizálni kell. Amennyivel az előtte levő bájto(ka)t megnöveltük, ugyananyival kell az ellenőrző bájtot csökkenteni (modulo 0x100). Ha pedig csökkentettük az adatbájto(ka)t, ugyannyival növeljük az ellenőrző bájtot. A gyárihoz képest az alábbiakat módosítottam:
Egyelőre gyűjtöm a tapasztalatokat...
Ha visszaállítod a géped dátumát, akkor ismét teljesverziósan működik a C18
Bővebben: Link
A C nyelv erősen típusos ezért egy változó létrehozásakor meg kell határozni, hogy milyen típusú. A float jelöli a lebegőpontos (floating point) változókat, vagyis az olyan számokat, amelyeknek tört részük is van. Mind az int , mind a float számok pontossága az adott számítógéptől függ. A PDP-11 -en például az int 16 bit-es előjeles szám, vagyis olyan szám, amelynek értéke -32768 és +32767 között van. A float szám 32 bites mennyiség, ami körülbelül 7 értékes számjegyet jelent, 10-38 és 1038 közötti nagyságrendben. char - karakter egyetlen byte, short - rövid egész, long - hosszú egész, double - duplapontosságú lebegőpontos szám. ...etc.
A bootloader egy olyan program, ami a PIC-ben fut, és a PIC programmemóriáját tudja írni. A bootloader programon keresztül így fel lehet tölteni a PIC-be tetszőleges felhasználói programot programozó nélkül.
Természetesen a PIC minden indításkor ugyanúgy indul, és a bootloader programnak rá kell jönnie valamiből, hogy neki kell aktiválódnia vagy a felhasználói programot kell hagyni, hogy fusson. Ez a valami lehet pl. az egyik I/O láb állapotának vizsgálata, így pl. egy megfelelően kialakított jumperrel lehet beállítani, hogy bekapcsoláskor a bootloader aktivizálódjon. A bootloader program sokféle kommunikációval juthat azokhoz az információkhoz, ami alapján a PIC programmemóriáját fel kell töltenie. Például lehet írni olyan bootloadert, ami soros porton kommunikál, és az azon keresztül megkapott hex állományt programozza a PIC memóriájába, de lehet olyan program is a bootloader, ami USB-n kommunikál a PC-vel, és egy, a PC-n futó speciális program adja át neki az adatokat.
A bootloader egy olyan speciális program, ami képes a mikrokontrollert felprogramozni (már amelyik PIC alkamas a flash programmemória programból történő módosítására!) például a soros vonalon, vagy USB-n bejövő adatokkal. Természetesen lehet SPI, I2C, vagy CAN buszon keresztül is fogadni a beírandó programot.
A "float" változótípus olyan számok tárolására való, amelyek törtrészt is tartalmaznak és/vagy "csillagászati méretű" számok (amelyeket a gyakorlati életben "normál alakú számok" formájában szoktunk felírni - lásd pl. Avogadro-szám). A számítástechnikában a normál alakú számokat is binárisan ábrázoljuk, +/-mmm x 2^+/-nnn alakban. (tehát az exponens rész 2 hatványa, a mantissza jegyeinek helyiértéke pedig 1/2, 1/4, 1/8, 1/16... stb. A "normalizált" számnál az 1/2 helyiértéken 1 áll (nem nulla). A 32-bites (egyszere pontosságú) számábrázolásnál egy egybites előjelből, 8-bites "eltolt" (127 többletes) kitevőből, és 23 bites mantisszából áll a lebegőpontos (float) szám, ami kb. 6-7 értékes jegyre pontos. Idézet: „Az igazi programozó így írja: COPY CON: PIC_PROGRAM.HEX” Es vajon a "COPY PIC_PROGRAM.HEX COM1" az igazi programozo egeto szoftvere?
Ha van RS232-es bootloader a PIC-ben, akkor akár még lehet is
A carry bit "decf" utasítkor alul csordulás esetén 0 vagy 1 lesz?
16F nem valtoztatja, csak a Z flaget -- de inkabb nezd meg az adatlapban, az a biztos!
Üdv
Többször programoztam már PIC-et és az a folyamatos problémám hogy hogyan tudok benne tárolni adatot? Tehát hogy van egy programom például egy 3x3x3-as LED mátrix vezérlése, és különböző formákat kell kihozni, de ha minden képek külön-külön tárolok akkor az minden egyes képnél 3x3x3 = 27bit + a megjelenés ideje szóval minden kép kb 32bit, 5x5x5-ös led mátrixnál meg már 125 bit/kép, ezt hogy lehet beleprogramozni a PIC-be? Vagy ilyen esetben mindenki egy külső EEPROM tárolót használtok? Köszi
Itt van egy 5x5x5-ös LED kocka leírás. Ebben külső EEPROM van.
Az 5x5x5-ös kocka "képeit" (egy kis pazarlással) 25 bájtba tárolja, úgy egyszerűbb bánni vele.
Üdv
Igen a kapcsolást megcsináltam, PIC is van hozzá és fejleszthető. Rendeltem is egy EEPROM-ot, akkor majd hozzákötöm. Köszi
Egyes PIC-ek többtíz kbyte programmemóriával rendelkeznek, ezekben elég sok minta eltárolására van hely külső eeprom nélkül. A programmemória nem csak programot, hanem a program számára előkészített adatokat is tárolhat, mint pl. táblázatokat.
Attila 18F-et programoz, de sejthető a kérdésből, hogy a C állítódik, csak nem értette, miért nem 1-lett egy alulcsurdulástól.
Nekem egy 10x15-ös mátrix képei vannak 18F-es PIC program memóriájába letárolva sorban(egy programrekesz a 18F-eknél 16bites, így elfér egy rekeszben egy fénysor.) A kapcsolás fenn van az oldalamon, forrásprogrammal.
sziasztok!
érdeklődnék, hogy tud -e valaki PIC16F87-hez vezérlő programot?! assemblis hex file amit bekéne égetni. CNC 3.2 unipoláris vezérlőhöz kéne a chip programja. a progim megvan (WinPic) a beégető is készen 16-illetve 40 lábú "Pic"-hez szóval már csak a hex cod hiányzik. a válaszokat és a segítséget előre is köszönöm. üdv szabi. java programozásban picit jártas vagyok, ott a bit léptetések így néznek ki. boolean =logikai típus byte= 8bites egész szám short=16 bites egész szám int=32bites, lebegő pontos szám (-2147483648- +2147483648) long =64bit (-9223372036854775808 - + -//- ) float =32bit double =643 bit na ezeket már nem írom ki egyszerüen nem tudom hasznát venni a HEX generálásban. segítségeket előre is köszi.
Egyszer már kérdezted, ha jól emlékszem, és ha nem kaptál választ, biztos lehetsz benne, hogy nem tudunk(vagy az írásod miatt, nem akartunk) segíteni!
Nem tudjuk milyen áramkörhöz kell a program, és ha valamit utánépítettél, akkor ott kellene lennie a forrásprogramnak is! Kérlek írj normálisan(nagybetűs mondatkezdés, írásjelek, tagolás), ha azt szeretnéd, hogy egyáltalán szóba áljunk veled! Köszi!
És milyen módon tároljátok el az adatokat? Létrehoztok egy tömböt (array) és abba egyenként beírogatjátok kettes vagy tízes vagy tizenhatos számrendszerben?
Idézet: „java programozásban picit jártas vagyok, ott a bit léptetések így néznek ki...... egyszerüen nem tudom hasznát venni a HEX generálásban.” Hat igen, PIC-et nem Java-ban programozzuk... Amugy nem ertem ezt a bit leptetest? Leirtad a valtozo tipusok mereteit, de bit leptetesrol nem is teszel emlitest... Mindegy is, a Java csak OFF tema lenne
Mi lenne, ha megnéznéd a programban, amit ajánlottam?
Ja és az sem ártana, ha elárulnád milyen fordítóval dolgozol!
Üdv
mikrobasic-ben programozok. ASM-hez, C-hez, Pascalhoz nem értek, forráskódból sem.
Igen, például úgy. De hogy ezt a microbasicben hogy oldod meg, azt neked kell megkeresni. Esetleg ha valaki benéz ide, aki használ microbasic-et, akkor ő tud mondani valamit, én csak asm-ben és C-ben tudnék segíteni.
Nem értek a MikroBasic programozáshoz, de szerintem a konstansok környékén keresgélj! Egydimenziós tömbre egy példa:
Úgy sejtem, hogy ezt többdimenzióssá kell fejleszteni...
Szia Attila!
Használd a szimulátort, ilyenekre is nagyon jó ! Steve
Üdvözletem!
Sziasztok! megkövetem magam és elnézést kérnék mindenkitől akinek esetleg bántódást okozott a kérdésem. (watt) én igazándiból azért jöttem ide, mert a nálam okosabb emberkéktől akartam tanácsot, illetve némi műszaki segitséget kérni. sajna nagyon amatőr vagyok, de viszont nagyon lelkes és ezért kerestem fel ezt a fórumot, ahol szakavatott emberekkel megvitathatom a problémámat és talán megtalálom a "miértjeimre" a választ. egyépként próbálok építgetni egy hobby CNC gépet unipolaris vagy bipoláris vezérlő kártyával, de lehet, hogy legyártom mindkettőt aztán majd amelyik jobb az marad. szóval ez a tervem és ezért kotyogtam bele a fórumba a segítségeket előre is köszönöm. üdv szabolcs
Úhhhhhhhhh!!!
Na csak most látom mi is volt a vétkem valójában. (Kérlek írj normálisan(nagybetűs mondatkezdés, írásjelek, tagolás), ha azt szeretnéd, hogy egyáltalán szóba áljunk veled! Köszi!) "Még szerencse, hogy a szürke szín alig látszik a monitoromon" Úraim! Mindent értettem, figyelni fogok!! üdv Szabolcs |
Bejelentkezés
Hirdetés |