Fórum témák
» Több friss téma |
Na jó, az I/O részlegen a 42 meg az 50.oldalon találod meg a megoldást.
A hozzászólás módosítva: Jan 2, 2015
Szívesen elolvasom az "I/O részleget", de nem tudom, ezzel mire akarsz utalni.
Én elismerem, hogy kezdő, sőt alulinformált vagyok, de azért kérek segítséget, mert magamtól nem találtam a megoldást. Az A/D megnézés javaslatot sem értem, mert nem akarok ezen esetben A/D konverziót indítani. Az A/D kikapcsolását szerintem megtettem.
Nem tetted meg az A/D kikapcsolását. A TRIS regiszterekkel az adott láb adatirányát állítod be, az ADCON-t meg akkor kell használnod ha A/D átalakítást akarsz csinálni. Az ANSEL/ANSELH--val lehet beállítani hogy egy láb analóg bemenet vagy digitális I/O legyen. Azért nem mondtam meg rögtön a megoldást, mert meg kell tanulnod adatlapot olvasni.
Köszönöm, ez volt a megoldás. És megtaláltam az IO részleget is, a megoldás leírását a 42 és az 50. oldalon.
Ez se rossz online:
Bővebben: Link
Ezzel a makroval inicializalsz egy megfelelo valtozot. Valoszinuleg strukturat.
struct xxx_t valtozo = SETUP_MESSAGES_CONTENT; Ennek csak akkor van ertelme, ha ismered az adott strukturat.
Ez véleményed szerint elfér egy struktúrában?
Gondolok itt a különálló 0x00-ákra. Ebből a definícióból csak a hosszabb sorok az értékes adatok, ezeket az adatsorokat egymás után kell elküldenem, így a külön álló 0x00-ák nem lehetnek közöttük.. Esetleg egy példát tudnál nekem írni? (Az adott struktúrát ismerem és mindig ugyan olyan vagy is konstans lesz) A hozzászólás módosítva: Jan 3, 2015
Idézet: Teljes mertekben:„Ez véleményed szerint elfér egy struktúrában?”
De ugyanezt leirhatod maskepp is, csak az nem szep:
De ugyanez az inicializator jo lehet egy struktura tombhoz is:
A hozzászólás módosítva: Jan 3, 2015
Köszönöm szépen, ebből már ki tudok indulni..
Annyit had kérdezzek meg, hogy az elnevezés végén mi az a "_t" jelzés?
A példában az "xxx_t" a struktúra típusa, az "xxx" meg a "valami[]" tömb pedig a példányosítása. A típus megadást szokták T végződéssel megadni, hogy meg lehessen különböztetni a példányosítástól. Ha simán létrehozol egy karakter típusú változót,
Megjegyzem a példában a második tömbnek csak 7 eleme volt, ezért killbill példájából csak a második húzható rá változtatás nélkül, de right.data tömb méretét 7-re kell cserélni.
Szerintem az "xxx" meg a "valami" a valtozo neve. Ez a peldanyositas honnan jon? Ilyen a C-ben regen nem volt. Ezt deklaracionak neveztek.
Az _t a UNIX-bol jon, ott szokas a tiposokat igy elnevezni. Idézet: Ez nem igy van, mert egy tomb eseteben (de egy struktura eseteben is) a nem inicializalt elemek nullaval lesznek feltoltve. „Megjegyzem a példában a második tömbnek csak 7 eleme volt, ezért killbill példájából csak a második húzható rá változtatás nélkül, de right.data tömb méretét 7-re kell cserélni.” A hozzászólás módosítva: Jan 3, 2015
Jogos, a példányosítás az objektumorientált részből jött. Maradjunk a deklarációnál.
Köszönöm szépen a kifejtést.
Végül a 3. megoldást választottam a rugalmassága miatt.
Összesen 9 sorozat van amelyek byte-onként 32 byte-os kódsort fognak tárolni. A hozzászólás módosítva: Jan 3, 2015
A fix szélességű változótípusoknál a _t végződés állítólag a C99 szabványból jön (stdint.h definiál int8_t, uint8_t, int16_t, uint16_t ... stb. típusokat). Bővebben: Link
A _t végződés használata - szintén állítólag - saját típusdefiníciókban POSIX környezetben ellenjavallott, mert ott a _t végződés fenntartott. Bővebben: Link
Elkészült egy újabb epizód az oktató videókból:
Bővebben: Link Remélem tetszeni fog. (A folytatása következik...) ![]() Idézet: Igen, ami azt erositi meg, hogy a UNIX-bol jon. Nyilvan azert ellenjavallott, mert time_t es sok tarsa definialva van a kulonbozo header-ekben. Szerencsere ez mikrokontroller programozasban nem okoz gondot. „A _t végződés használata - szintén állítólag - saját típusdefiníciókban POSIX környezetben ellenjavallott, mert ott a _t végződés fenntartott.”
PIC18F2423
A Microchip oldalán csak egy kivonatos adatlapot találtam, ami a 12 bites ADC-n kívül szinte semmi érdemi információt nem tartalmaz. Igaz, éppen emiatt vetettem rá szemet, de azért érdekelne még pár dolog. Van valahol valamilyen közös adatlap, amiről nem tudok? A hozzászólás módosítva: Jan 3, 2015
Rögtön a 3. oldalon a keretben:
Idézet: „This document is supplemented by the “PIC18F2420/2520/4420/4520 Data Sheet” (DS39631). See Section 1.0 “Device Overview”.” A hozzászólás módosítva: Jan 3, 2015
Kár, hogy nem szúrta ki a szemem. A végén kerestem ilyen megjegyzést... Köszi!
Tudom, hogy foglalkozol mással is, követem a "munkásságodat" itt az oldalon. Ezért írtam, hogy gondolom nincs idő a kurzust folytatni, vagy a videókat nyomni töménytelen mennyiségben. Én sem tanulok programozást (egy elektronikai középiskolában, végzős vagyok, de a négy év alatt szó sem esett a programozásról). Igazából nem egy bonyolult dolog, csak jópár dologgal tisztában kell lenni, anélkül nem megy. Mint írtam, már ezért a pár fejezetért is hálás vagyok, mert anélkül még most sem tudnám, mi fán terem a mikrovezérlő programozás.
Hp41C, köszönöm a könyvet, le is töltöm, majd olvasom.
Az a könyv, tényleg jó. Érdemes lesz a kezed ügyében tartani, mert szerintem majd menet közben többször belelapozol. (Az új videót már láttad?)
Köszi a visszajelzést! Jó tudni, hogy nem csak a magam szórakoztatására dolgozok ennyit... ![]()
Sziasztok!
PIC18-as mikrovezérlőn egy teljes LCD vezérlő rutint átraktam az 1-es lapra. Ahol a főprogramban használok valamit az LCD rutinból ott használtam a pagesel-t a lapváltáshoz, de amikor fordítottam a programot akkor olyan figyelmeztetést dobott ki hogy ennél a mikorvezérlőnél nem szükséges a lap vagy bankváltás így azokat a kódokat nem fordította bele a programba. Miután kivettem az összes lapozást és az LCD rutint is visszatettem az eredeti helyére a program működött, de amikor megnéztem a program memóriát, az LCD rutin fele átlógott az 1. lapra. A főprogramban használok olyan rutinokat amik az 1. lapon vannak és működnek is. Akkor nem értem miért van ez a lapváltás ha egyszer használni sem kell?
Szia !
Én is köszönöm a videókat, és az oldaladon lévő "C" kurzust. Szerintem nem csak a magad szórakoztatására készíted a videókat ! Aki most ismerkedik vele, az rengeteget tud így tanulni. Várom majd a folytatást. ![]()
Láttál a chip adatlapján lapokat? Nem is láthattál, mert nincs (vagy felfoghatjuk úgy is, hogy a teljes programmemória egyetlen lapon van).
Idézet: Ebbol a kijelentesedbol arra kovetkeztetek, hogy meg mindig nem tudod, hogy mi fan terem a programozoas. Az a jopar dolog, az azert nem keves. Bit, byte, memoria, stack, binaris szamok, aritmetika, stb... Es ez meg csak az alapok egy resze, hol van meg a programozas maga. „Igazából nem egy bonyolult dolog, csak jópár dologgal tisztában kell lenni, anélkül nem megy.”
Ha előbb lettek volna ilyen videók, fenébe is
![]() Nagyon jó... Pár észrevétel, hogy ne legyen félrevezető a dolog.. Elkezdted felírnia lábak számait és a lábak jobb szó híján neveit. Ez félreérthető is lehet hiszen a PIC típusát nem adtad meg. Gondolom nem minden PIC-nek egyforma a lábkiosztása. Ilyen eseteknél a PIC típusát is ad meg, hogy az adatlapból visszaellenőrizhető legyen az amit mondasz, így elősegítve a tanulást és az adatlap használatát.. Ezek már csak szőrszálhasogatások és csak nézőpont kérdése: És még egy dolog, a CSS-ben sok esetben előre vannak definiálva a portok állapotának állításai, így egy-egy beállítás pofon egyszerű. De ha valaki nem ezt a fordítót használja, akkor annak ezek gondot jelenthetnek. (nekem is probléma volt, persze hamar rájöttem, de akkor is) pl.: ki és bemenetek beállításai, portok alacsony vagy magas szintre való állításai ...stb Ez a kézzel rajzolós kapcsolás zseniális ötlet volt.. + pontot ér...
A pagesel makro egészen másra készült. A 16F -eken a call és a goto utasítás kódja nem tartalmazza a cím felső 2 bitjét, az a PCLATH regiszterből veszi át az ugrás végrehajtásakor. A 18F goto és call utasítása 4 byte -os és tartalmazza a cím összes bitjét.
A kiszámíott ugráskor (movwf PCL) a címszámláló a PCLATU : PCLATH : WREG értéket veszi fel. (16F -en PCLATU nincs.) Mivel az olyan utasítás, aminek az eredménye a PCL regiszterben keletkezik (addwf PCL,f), nem kezeli az átviletl a PCLATH (PCLATU) felé, így csak egy 256 szavas területen (16F), 256 byte-os területen (18F) belül lehet egyszerűen "ugrani". 18F -en a movf PCL,w feltölti a PCLATU : PCLATH regiszter párost. ezután csak a PCL módosítását kell elvégezni. Amenniben a módosítás átvitelt okoz a PCLATH vagy a PCLATU regiszterekbe, azt a programban meg kell oldani a PLC írása előtt. Pl. PCLATH -ba törénő átvitel kezelése:
A hozzászólás módosítva: Jan 4, 2015
Húúú, nagyon köszi! Tényleg igazad van! A manóba! Ezért jó ez a közösség, mert olyan dolgokat szúrtok ki, ami nekem tök egyértelmű, de mégsem jó. Persze, keveregnek az infók a fejemben és próbálok mindent elmondani érthetően. Úgy, hogy egy nagyon kezdő is értse. Köszi a visszajelzést!
![]()
Szia!
Nem láttam lapokat az adatlapban. Pár napja kértem segítséget egy másik prblémámmal kapcsolatban és ott írták hogy lehet hogy átlóg a program egy másik lapra ebből következtettem, hogy kéne lapozás. |
Bejelentkezés
Hirdetés |