Fórum témák
» Több friss téma |
Nem tudok vele mit kezdeni, alább látható a kijelző programja.
Megköszönném, ha valaki tudna szolgálni valami épkézláb evilág magyarázattal.
A 'de' az szerintem az EEPROM-ba tud tenni adatot !
A hozzászólás módosítva: Márc 24, 2013
Gondolom 18-asról van szó... Itt a programmemória 2 byte-os --> word egységekből van kialakítva, ide nem tudsz úgy adatot tenni, hogy "elfelezed" a fizikai egységeket !
Steve
Elméletileg a poll megoldaná a dolgot, de a fordító azt mondjra rá, hogy undefined dentifier.. Ez most mi, benne van a doksiban, hogy mir ejó, hogy kell használni séa fordítónak fogalma sincs róla, hogy mi az... Valaki mondjon már valamit... Megőrjít ez a gagyi program.
A 'poll', azaz a 'polling' az azt jelenti, hogy folyamatosan lekérdezed, azaz nem megszakítással szolgálod ki, hanem "folyamatos figyeléssel"! Ez nagyon erőforrás pazarló, ritkán van ennyi felesleges idő egy komolyabb projektben !
Steve
Akkor ez nem az amit én akarok. Ettől még továbbra sem értem, hogy a frászba lehet az, hogy a fordítónak fogalma sincs róla, hogy mi az...
Ha meg van adva, hogy a slave cuccnak mi a címe, akkor miért reagál mindenre? Egyszerűen olyan ez a fordító, mintha a fele nem működne, vagy nem érdekelné, hogy mit ír bele az ember. Nem tudom mit kezdjek már vele, teljesen nonszensz ahogy viselkedik az egész. Gondoltam kipróbálom a mikroC-t erre még a szöveg hátterét sem állítja át a sötétzöld betű elég nehezen olvasható feket hátteren. Őrület.
A mikroC-t elég sokan használják ( én nem! ), így alapvető hibái nem hiszem, hogy lennének, legfeljebb még nem ismerted meg eléggé és nem jól közlöd vele, hogy " mit Te akarni" !
Steve
Bocs, a 'poll' nem 'pull' akart lenni, azaz felhúzó ellenállás ?!
Steve szerk.: ezt 'agressiv' kollégának szántam ! A hozzászólás módosítva: Márc 24, 2013
Nem. Az más.
A hozzászólás módosítva: Márc 24, 2013
Ez egy függvény, amit ha meghívsz, akkor a visszatérési érték alapján el tudod dönteni, hogy van-e beérkezett adatod, kell-e kiolvasni ( ha ritkán hívod meg, akkor "ráfutás" következhet be, ha sűrűn, akkor erőforrás pocsékolás az előzőekben leírtak szerint ) !
Steve
Koszi mindenkinek, de sajnos nem valt be egyik sem.
A de es a db tok ugyanazt csinalja. A de ugyanugy mukodik a kodteruleten is. Vesszovel a vegen sem javul. A dt pedig ugye a tablazat, tehat az RETLW-kkel pakolja tele minden masodik byteot. A rohadt c persze meg tudja csinalni siman... most azon filozom, hogy forditas kozben lehet-e procit valtani, mert hatha valami regi 16-os neveben jol csinalna...
Szia!
Sehogy... Használj páros számú byte megadást és írd át a kommentet...
Úgy néz ki, most jó. Külön veszem az adatot és két változóba tárolom a két számjegyhez, valószínűleg túl sokáig foglalta le a buszt, ha van ilyen egyáltalán, viszont kétszer kell elküldeni. Ami úgy van megoldva, hogy egyszer a hangerőszabályzónak megy az érték, egyszer pedig direkt a slave piknek címezve, de mind a kettőt veszi, mert nem különösebben érdekli, hogy kinek van címezve az adat... És a küldések között egy ack-nyi késleltetést kellett berakni a meghajtó program részéről, különben megintcsak meghűlyül az egész. Ez mind teljesen véletlenül jött így össze és közben húsz évet öregedtem. Az ack-t szívesen fogadnám, mert küldi a hangerő IC, de ha beírom a programba szokásos undefined identitfier fogad, szóval több sebből vérzik ez az egész,de már nemérdekel, legalább azt csinálja, amit szerettem volna.
Isten áldja a cél IC-ket.
De ha lehetne, kozel 500 sort nem szivesen irnek at. Csak KELL lennie valami megoldasnak.
A c siman megcsinalja. Egyebkent a forditoban lehet a hiba, mert megcsinaltam 10f206-ra, 16f628a-ra is es teljesen ugyanaz. Valamiert a sor vege miatt wordon kezd mindig. Nem lehet valami NOALIGN parametert megadni? (neten mar kerestem, de nem foglalkoznak a problemaval.
De mit értesz azon, hogy a 'C' simán megcsinálja ?! Valamit neki is tenni kell oda, mutasd már meg, hogy mit szeretnél ( és milyen PIC-en ?!) !
A 'c' alatt az mplab fejlesztorendszer C18-as reszet ertem.
Eredetileg egy c progit (USB HID joy kezeles) irok at assemblyre. Minimalisan ertem a c-t, valami strukturakat definial, de siman ott vannak egymas mogott a byteok a forditott hexben. Nagyon sok descriptortabla van igy odarakva es ezeket szeretnem az asm-be betenni. Fontos, hogy pl. egy cim vagy hossz ne egy masik felword utan jelenjen meg nekem a listaban. Egyszeruen nem tudom elkepzelni, hogy egy ilyen egyszeru problemara nincs megoldas... Regen, amikor meg nem hasznalt mindenki c-t, akkor is valahogyan ezt meg kellett oldani... Esetleg valami regebbi mpasm?
18-as PIC-nél egy-egy programmemória rekesz MINDIG páros számon kezdődik ( 2 byte-os egységeket alkotva!) ! Nem tudok úgy adatokat belerakni, hogy nem töltöm fel mind a két byte-ot, mindig lesz ott valami a másik byte-on is ( legfeljebb 0 ! ) ! Ezért nem értem, hogy mire mondod, hogy bezzeg a C meg tudja oldani és ezért kértem, hogy mutasd meg ( pl. kép! )!
HP41C kolléga is írta, hogy használj páros számú megadást, pl. a nem használt részre tegyél '0'-t ! Steve
Egy utolsó kérdés. Hogy tudnám azt megoldani, hogya számláló lemenjen nulláig, de ne is akadjon ki, mert akkor nagy dráma van. Most őgy áll a dolog, hogy csak -1dB-ig lehet szabályozni, nulláig nem. Hogy lehetne azt kimatekozni, hogy megálljon a nullánál?
Jelenlegi megoldás.
A hozzászólás módosítva: Márc 24, 2013
Igen, de ha továbbtekerem, akkor lemegy fogalmam sincs hova és meghűlyül a dolog. De most gondolkodok azon, hogy egyszerűen 1 és 80 között számoltatok és kijelzés, illetve adatküldés előtt kivonok a matekból egyet.
Ne bonyolodjunk bele ilyen melyen, nem errol van szo.
A lenyeg, hogy nem tudja folytatni egy UJ SOR eseten az adatmemoriat. Ez a bajom. Tehat nem tudom bytekent kezelni. Az ertheto, hogy egy program eseten mindig paros szamrol indul. A PICet belul LEHET bytekent kezelni, gondolj csak a TABLAT utasitasra, ami felvehet paratlan erteket is. A bajom a forditoval van, ami nem erti, hogy ha volt egy cim, ahol abbahagyta, akkor az uj pontot onnan folytassa a KOVETKEZO SORTOL. Miert tudja megtenni akkor, ha azt irom, hogy db 1,2,3,4,5,6,7,8 Ilyenkor gyonyoruen PONT azt csinalja, amit akarok, tehat akarhany bajt eseten folytatja a hi/low ordernek megfeleloen. De ahogy vege a sornak, kiegesziti wordre. Ez paratlan szamu byte eseten gond. A C forrast most nem tudom beidezni (cegnel van en meg otthon vagyok), de barmelyik USB-s forrast megnezed, a descriptor tablak igy vannak leirva.
És így jó is. Amikor számolja az értékeket a kijelzéshez kivonok belől egyet, majd utána hozzáadok egyet és meg is van.
Sziasztok.
PIC18F4550 CCSC hogyan lehet aktiválni a pullup funkciot az RB0-RB7-ig mert csak az RB2-RB7 -ig sikerült #define NO_ANALOGS //minden benemet digitális I/O set_tris_b(0b11111111);//minden bemenet port_b_pullups(0xff); //minden bemeneten aktiv a PULLUP és a RB0 és RB1 bemenet csak lebeg és nem akarja bekacsolni a felhuzó ellenállást.Sajnos az adatlapon már nincs a portokról részletes kapcsolási rajz mint a 16F-eknél és nem találom hogy melyik reget kellene még beállitani.Ezek még beleszolnak ha IN az I/O INT0 FLTO SDI SDA de nem látom hogy még mit kellene kikapcsolnom Elöre is köszi.
Akkor már a rotary érzékelésébe kellene belehekkerkedni a dolgot és nem merek belenyúlni. Nem lényeg, most jó így, felmegy 0-ig és 79-ig is, nincs vele gond.
Akkor így csináld !
Szia!
A C fordítóknak a minimális egysége egy C utasítás, deklaráció stb. Ezeket ez egységeket egyben kezeli. Ha egy rom területre szóló deklaráció páratlan számú byte -ot tartalmaz, a C által fordított kódban is kiegészítődik párosra egy 0 -val. Annál is inkább, mert a C is assembly -re fordít, csak nem látszik... Az assembly meg ilyen... Egy sor egy egység. Ha páratlan számú byte -ot írsz elő a program területre, kiegészíti párosra. Hiába erőlködsz... A következő sor lehetne akár utasítás is, ott nem lehet páratlan címmel kezdeni... A hozzászólás módosítva: Márc 24, 2013
Szerintem nézd meg az előző hozzászólásomat, létezik rá fordítói direktíva assemblerben ( én sem használtam még ,most kerestem rá a help-ben! ), úgy látom azt csinálja, amit akart a kolléga !
Steve szerk.: hiszen itt csak a fordítónak kell figyelembe venni, hogy mit akarok, nem kell megerőszakolni a hardware-t ! A hozzászólás módosítva: Márc 24, 2013
koszi, hogy fogalalkozol a bajommal, de
Egyik esetben adja, hogy tul hosszu utasitas es levagta a felesleges reszt (2 byteon tuli reszt) A masik esetben: Error[149] : Directive only allowed when generating an object file En egy lepesben szoktam letrehozni a HEX filet, nem hasznalok linkert. Kellene?
Mondjuk ettol feltem, mert ezzel nem lehet vitatkozni, nincs kibuvo alola:
hogy 'ez ilyen'. Eddig a pic programozot nekem kellett megirni, mert ugyanezzel szembesultem. Assemblert nem nagyon akarok irni...de ha kell, hat kell.
Jellemzően én is abszolut kódban programozok, de ( szerencsédre ? ) ezt most pont egy relokálhatóba írtam be és én úgy látom, hogy ott jól működik!
Steve A hozzászólás módosítva: Márc 24, 2013
OK, errol irnal nekem bovebben?
Ahogy lattam, az org helyett kell code-ot irni. De ebbol hogyan lesz fizikai memoriacim? Tehat nekem az kellene, hogy az adattablak 0x0100, a kod pedig 0x0400 cimen kezdodik Illetoleg latom, ott a codepack vegen de akkor mitol relokalhato, ha megadod a cimet? A hozzászólás módosítva: Márc 24, 2013
|
Bejelentkezés
Hirdetés |