Fórum témák
» Több friss téma |
Az a trend Microchip -éknél, hogy vegyél új gépet, sok9 memóriával, legyen sok türelmed a legkisebb feladatokhoz is.
Üdv!
Van egy csomó tömböm amik különböző méretűek. Szám szerint 60db, 6x4 byte és 11x4 byte között mozog. Vagy mondhattam volna úgy is, hogy kétdimenziós tömbök amiknek az egyik dimenziója mindegyikben 4, de ez szerintem most nem fontos, a lényeg, hogy egy-egy ilyen tömböt egy blokként akarok majd kezelni. pl:
Legyen mondjuk a második verzió. Na most ezeket szeretném újabb "tömbbe" rakni, hogy egy ciklusban egymás után elérhessem őket. Mivel az egyik dimenziójuk nem egyforma hosszú ezért ez problémás. Mi erre a lejobb megoldás? A hozzászólás módosítva: Aug 14, 2018
Ne haragudj, de nem igazán értem ezzel mire akarsz kilyukadni. Kifejtenéd?
Szerk: Bár van egy sejtésem. A hozzászólás módosítva: Aug 14, 2018
Én úgy értelmeztem a ciklusodban tudnod kellene a tömb dimenzióját, mert kölönbozőek...
Szóval ha beteszed minden tömböd első két elemébe a méretét akkor a ciklusban kiolvasod, és már tudod is a tomb méretét
Vagy én értelek félre vagy te engem.
Minden tömb mérete ismert. A baj az, hogy nem egyformák, így nem tudom még egy dimenzióba rakni, hogy pl 3 egymásba ágyazott ciklusban el tudjam őket érni. Az egészet ki akarom küldeni SPI-re majd. Viszont támadt egy ötletem, nem biztos, hogy a legjobb, lehet, hogy csak bonyolítom, de ha mindegyik tömbböt a maximális méretbe rakom, és az első elembe az eltérő dimenziókat írom be, és az a ciklus csak az első elemben tárolt értékig fog futni. Vagy még valami tömbstruktúrán gondolkodom, de azt nem tudom hogy lenne a legjobb. szerk: Ehh, fáradt vagyok. Ugyanezt írtad le kb. ![]() A hozzászólás módosítva: Aug 14, 2018
A tombjeid elejébe beleteszed az aktuális tömb hosszát.
Csinálsz egy egydimenziós tömbre mutató pointert. Csinálsz egy fő tömböt, ami tartalmazza a különboző tömbjeid kezdőcímét. A ciklusodban a pointerbe fő tömb következő eleméből kikapod a tömb kezdőcímét, első elem a méret, és mehet az SPIre a megadott számú sorozat...
Sziasztok!
Egyszerű villogót szerettem volna csinálni PIC12675-ös PIC-el. A nyomógomb kezelésre próbáltam több megoldást keresni, de nem jön össze. Kérlek benneteket, hogy segítsetek, hogy hogyan csináljam, hogy működjön? Segítséget előre is nagyon köszönöm!
Szia!
ANSEL és CMCON regiszter beállítása hiányzik.
Szia Mate_x!
Köszönöm a segítséget! Nem tudtam hamarabb géphez jönni, ezért elnézést, hogy most válaszolok! Az ANSEL-el már próbálkoztam, majd este még megpróbálom a CMCON-t is. Köszönöm mégegyszer!
Üdv!
Egy int16 típusú változót hogyan tudok bitenként összeállítani? Konkrétan a feladat az, hogy a PORTB és PORTC bemenetekre érkező 10 bites számot kell tárolni egy változóban. PORTB-re A0-07-ig PORTC-re pedig a legfelső 2 bit. Előre is köszönöm a segítséget!
Ha csak a ket PORT-ot akarod osszerakni, akkor azt sime bit muvelettel meg lehet oldani.
Ha bitenken akarod osszerakni, akkor bitmezot (bitfield) lehet hasznalni, ez viszont kicsit bonyolultabb. A hozzászólás módosítva: Szept 20, 2018
Köszönöm a válaszod! Utánanéztem a bitműveleteknek, így már érthető a kód.
Használjatok u n i o n -t a sok felesleges kód helyett.
Sajnos a fórum motor nem engedi ezen C nevet egyben leírni.... Miért???
Az első sorból az "_" karakter törlendő! A hozzászólás módosítva: Szept 20, 2018
Sziasztok!
Ahogy időm engedi próbálkozok ezzel a kis programmal. Megcsináltam, hogy digitális jelet tudjon fogadni (ANSEL, CMCON). Próbáltam átírni PIC12F629-re is, de újabb hibára áll ki, visszaállítottam 675-re, hiába csinálom nem megy végig, most meg a záró teggel van baja. Vajon mit rontok el?
Köszönöm a segítségeteket előre is! A hozzászólás módosítva: Szept 21, 2018
Elnézést, de ezt elmagyaráznád nekem?
Mármint, hogy ebből hogy lesz rövidebb kód egy bitshiftelés helyett? Ezt mire fordítja a fordító?
Mi az az '1' a sor közepén? Ránézésre az okozza a galibádat.
Hianyzik egy }.
PIC12F629-ben nincsen ANSEL.
Sosem használtam mikroC-t, de mi benne a nagy és a kisbetűs GP3 ?
Így próbáld:
Megjegyzések: 1:Használj bekezdéseket a kódban, különben bele fogsz keveredni(különösen egy bonyolultabb kódban), hogy hol van zárójel és hol nincs(ahogyan most is lemaradt egy). 2:Ha nem használsz analóg bemenetet akkor az ANSEL-t nullázni kell, így minden láb digitális lesz. 3:CMCON regiszter utolsó 3 bitje 1 legyen, ahhoz, hogy digitálisak legyenek a lábak(adatlap 39. oldal) 4:Az if feltételénél nem igazán értem, hogy ott mit akartál.
Sziasztok!
Nagyon köszönöm a gyors segítséget Mate-X-nek! Kipróbáltam és így jó lett!! Igazad van, mert így valóban át lehet látni a program kódot! Az if-parancsot valóban elszúrtam, az akart lenni amit Te is beírtál, hogy ha a GP3 nem egyenlő eggyel, akkor indul a program. Felcseréltem az ANSEL és a CMCON kódolását is, tehát csináltam pár baklövést. Még egyszer nagyon köszönöm, hogy időt szenteltél rám!
Szia Icserny! Átnéztem a PIC-ek adatlapjait, csupán azért próbáltam 629-es PIC-el, hogy mit szól a compiler az ANSEL-hez. Természetesen hibára lépett, letiltottam utána jött a következő hiba amiben a Mate_X-segített!
Köszönöm a segítséget!
Szia Killbill! Igazad van valóban hiányzott egy záró } elnéztem.
Köszönöm a segítséget!
A fordító körmére kell nézni: view/disassambling
Az ajánlott, rövid, de nem működő megoldás:
A felső byte mindig 0 lesz. A C a legelső paraméter típusának megszelelő műveletekkel végzi el a sor többi műveleteit is. Ez már jól működik, de hosszú:
Ez így mégis rövidebb... A hozzászólás módosítva: Szept 22, 2018
Az elso programmal az a baj, hogy elobb shiftel, aztan and-el, mivel a << magasabb precedenciaju muvelet, mint az &. Ezert a PORTC-t 0x300-zal and-olja, ami ertelemszeruen 0 lesz. A masodik program nem az (int)-tol jo, hanem a helyes zarojelezestol. Eleve minden char int-re konvertalodik, nem kell kulon kiirni.
A felső byte ebben az esetben is garantáltan 0 lesz. A hozzászólás módosítva: Szept 22, 2018
Akkor ez a fordito hibas... Bar, legalabb kiolvassa a PORTC-t, and-olja is 3-mal, csak az eredmenyt nem teszi le 0xfdd-re, pedig azt kellene tennie. Mellesleg az 5. sorban mit csinal?
A fordító nem rossz, csak nem minden kifejezést számol 16 bitesen. Üdvözöllek a Microchip C világában.
Azt hiszem, hogy ez már sokszor volt. Egy C fordító, ami nem tartja be a C nyelv legalapvetőbb szabályait, az vagy rossz, vagy nem C fordító.
|
Bejelentkezés
Hirdetés |