Fórum témák
» Több friss téma |
Aki ismeri, együtt használja.
Aki nem ismeri, nem kell bántani, ha már segíteni nem tudsz rajta.
Jó!
Kapcsolok neked lámpát! A viccet félretéve. Akkor fogok majd magasabb szintű programnyelvet használni, ha már olyan szinten tudok asm.-ben programozni, hogy csak időmegtakarítást jelentsen nekem a C és társai. Ha beleolvasol az asm.es topicba, ott leírtam, miért választom mindíg a nehezebbik utat.
Hardverközeli programozásnál az assembly nyelvű program a legtöbb esetben előnyösebb, könnyebben megérthető.
A magas szintű nyelvek előnye ott van, ahol komplikáltabb számításokat kell végezni. A hozzászólás módosítva: Okt 13, 2015
Az alapok elsajátítása nem a nehezebb út, hanem a kezdet, a minimum.
Az asm néhány tucat utasítása, pár fogalom és a szokásos algoritmusok viszonylag hamar megtanulhatók és remek lehetőség az alkotásra. Idézet: „Az alapok elsajátítása nem a nehezebb út, hanem a kezdet, a minimum.” Ez így van, ahogy mondod. Épp ezért nem értem, hogy a legtöbb C-ben, vagy egyébben programozó, miért nem tud egyáltalán asm.-ben programozni. Idézet: „pár fogalom és a szokásos algoritmusok viszonylag hamar megtanulhatók” Na itt van a kutya elásva. Innen válik nehezebb úttá. Amikor már nem a megtanult "szokásos" algoritmusokkal akarsz dolgozni. Vagy mert nem elégítik ki az igényeidet, vagy mert úgy érzed, tudnál jobbat. És elkezded megírni a saját algoritmusaidat, függvényeidet, a programkörnyezethez igazítva. Azután jönnek sorra egyre nagyobb felbontású GLCD kijelzők, amikhez asm.-ben nincs könyvtár. A vezetékes, és vezeték nélküli adatkapcsolatok. (jelenleg ennek az elején tartok) A linearizációs ciklusok. (Még példaprogramot sem találtam róluk) Ez utóbbihoz még annyit, A ciklus első számítási részét, igazából csak egyszer kell elvégezni, mégis minden PLC, minden futtatásnál végigküldi az egészet. Processzoridőt veszítve ezzel. Gyanítom, a C sem tesz másként. Viszont asm.-ben remekül leválasztható. Nos, azt hiszem, mostmár tényleg kiveséztük a témát. Üdv mindenkinek! Idézet: „_asm és az _endasm parancsok közé kell az asm kódrészletet beírni” Nem mindegyik fordito tamgatja ezt a valtozatot. Peldaul XC16-ban eleg macerás beilleszteni az ASM kódrészletet, főleg, ha több sorrol van szó.
[quote]A magas szintű nyelvek előnye ott van, ahol komplikáltabb számításokat kell végezni./quote]
... amennyiben támogatja a számábrázolást. 32 bitnél hosszabb (nem 64 bites) egészekkel való számolás. Pl. 48 bites egész aritmetika van a frekvenciamérőmben (összeadás, kivonás, osztás szorzás és BCD kóddá alakítás ill. BCD binárissá alakítás) - természetesen assembly -ben. Az egész műszer programja (nincs 4k) röhögve belefér A 18f242 -be is.
Az asm rákényszerít, hogy regiszter és bit szinten legyél tisztába a hardverrel, a C-nél gyakran elég, ha fekete dobozként bánsz vele, ismersz pár alapfogalmat, és tudod melyik dróton mikor mi van.
Ezt nem értem: Idézet: „A ciklus első számítási részét, igazából csak egyszer kell elvégezni, mégis minden PLC, minden futtatásnál végigküldi az egészet. Processzoridőt veszítve ezzel. ” Egy ciklus magja C-ben és asm-ben is mindig végrehajtódik, ha teljesül a feltétel. A PLC teljesen más eszköz, nem keverném ide. Egy programot megtervezel fogalmi és logikai szinten, majd az egyes részeket megvalósítod, összekapcsolod. A C némi áldozat árán lényegesen több lehetőséget kínál mindezeknek a gyors megvalósításhoz. Ha van időm, néha ujjgyakorlatként megírom ugyanazt C-ben és asm-ben is és gyakran utólag mindkettőn egyszerűsítek a másik nyelvben szerzett tapasztalat alapján.
Néha nem árt megnyitni a Disassembly ablakot, és a leghosszabbra fordított forrás sorral kezdve egyszerűsíteni a sorokat, hogy gyorsabb kódot kapjunk.
Most a PIC12F1822-n én csak 32 bites aritmetikát használok, nálam is van bőven hely. Csak a menüszövegeket kell szűkszavúan megfogalmazni.
![]()
Mit lehet tenni akkor, ha kifogytam a PIC I/O lábaiból?
A DIP tokozásnál sűrűbb lábkiosztást nem nagyon merném bevállalni. ![]() Létezik-e valami bővítő ami pl I2C-vel vezérelhető, vagy olyan adapter ami emberibb lábkiosztást csinál valami "sűrűbblábú PIC"-nek?
Létezik I2C portbővítő: Például ez.
Megnéztem ezt a portbővítőt. Nem is tudom. Én inkább mégegy PIC-et használnék.
A feladattól függően a portbővítőnek használt PIC-et akár munkára is foghatom.
Pl: Ha a bővítőn van egy encoder, teljesen lekezelheti, csak az eredményt küldi át. Ha van rajta PWM, csak utasítom, a többit elvégzi. Ugyanígy beolvashat analóg jelet, és küldi az eredményt. Mindössze be kell állítani, melyik adat mi.
A ChipCad árul SMD -> DIP adaptereket is.
Na igen, de ha csak 20 ledet vagy 20 nyomógombot tesz rá akkor minek egy drága PIC? Nem írta, hogy mi a feladat.
Én ilyen feladatra egy olcsó picet választottam (16F1513 kijelző). Nem sok különbség van árban a portbővítőhöz képest.
Urak!
Szeretnék egy sebességmérőt/fordulatszámmérőt készíteni. Arra gondoltam, hogy a megszokott digitális kijelzések helyett analóg mutatós megoldásban gondolkodom. A kérdés, hogy mivel mozgassam a mutatókat? Gondoltam léptető vagy szervó motorra, de egyikkel sincs tapasztalatom. Az elképzelés szerint kb. 240° -ot kellene mozognia és kellene legyen két végállása. Ötlet vagy tanács?
Kicsit fura elgondolás, de ha mindenképp ezt akarod, használj modellszervót.
Kicsíped belőle a határolókat, egy ellenállást sorbakötsz a potijával, így átverve a vezérlést a kitérés megnövelhető. A bennük lévő poti általában 270 fokos kitérésű.
És azt hogyan tudom normálisan vezérelni? Ahogy néztem ismertetőket, a magas szint impulzusszélességére fordul. 1,5 ms-re 90°-ot, 2 ms-re megint 90°-ot. De hogy lehet mondjuk csak néhány fokos fordulásra bírni?
Így macerás elmagyarázni, de holnap készítek egy példaprogramot.
Egy hasznos cikk erről a modell servo-s dologról, hogy milyen jelre milyen helyzetbe mozdul a kar vagy tengely. A néhány fokos fordulatot a nagyjából 1-2ms kitöltésű PWM jel adja meg(kitöltésnek megfelelően fordul), de ezt "cikkben" elég pontosan elmagyarázzák.
A hozzászólás módosítva: Okt 13, 2015
Srácok, LCD-nél 4bit-es üzemmódban nem lehet olvasni igaz?
ST7920-al szenvedek, de úgy látom csak 8bit-es módban lehet olvasni.. Jó látom?
Köszi, ezt már én is megtaláltam, de nem lettem sokkal okosabb. Nekem az jött le belőle, hogy a gyártmánytól függően 1-1,5 ms magas impulzusra fordul a megadott szögre. Bár egyértelműen leírva nincsen, de elképzelhetőnek tartom, hogy ha egy nagyságrenddel kisebb mértékben változik a magas jel hossza, akkor kisebb elmozdulást produkál.
Gyári megoldásokban kereszttekercses műszert (air core gauge) vagy léptetőmotort használnak. Meghajtó ic. Ilyen műszert tudsz bontani pl egy BMW E34 ből, abban tuti az van azt tudom biztosra. Hoztam a méhtelepről egyet. Gondolom még elég sok autóban előfordul.
A hozzászólás módosítva: Okt 13, 2015
|
Bejelentkezés
Hirdetés |