Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Üdv
Igen const -al lehet állandót beírni és byte[x][y]-al lehet többdimenziós tömböt declarálni, csak én mindig féltem hogy nem fér bele ennyi adat a PIC-be, mert például egy 8x8-as ledmátrix egy képéhez 64 bit kell vagy 8x8x8 és akkor 8x8 a LED-ek állapota és az utolsó 8 a kép száma, ekkor 255 kép fér bele, ami 64x256bit = 2048 bájt + programkód és az ottnani változók tárolása, ami már egy 16f628a-ba nem fér bele... Mindegy, max kevesebb képet kell beleírni.
Meg van bocsátva!
Hol találtad a CNC áramkört(link?), nem volt ott hex állomány?
Hát lehet, hogy nem 628-at kell ilyen célra használni. Jobb ha körülnézel a 18F-es családban, azok között vannak elég nagy flash területü példányok.
A külső memóriának még tán az az előnye is megvan, hogy viszonylag könnyen cserélhető, vagy oldható meg, hogy több chip közül jumperekkel lehessen választani, így más megjelenítendő képeket betenni a program alá. A PIC-ben lévő programhoz meg nem is kell hozzányúlni.
Sőt! Több darab is összefűzhető és nem kell jumper sem, mert címezhető...
Sziasztok
Vettem két 64128F LCD kijelzőz 128x64es. Ez az adatlapja: Bővebben: Link De nem akar életrekelni sehogy sem, a régebbi kijelőzmmel még elboldogultam (az is 124x64es volt), de ez nagyon szivat. Már több napja próbálgatom de egyik sem indul el. Az egész kijelzőn az összes pont világít, ha a kontraszt maxon van. Az E jel időzítését próbáltam már többfélekppen, 5ms-30ms ig, de semmi. Vagy az LCD meghajtófesz bekötésem nem jó (a Vout és a V0 közzé egy potméter, ahogy az adatlap mutatja) vagy időzítés vagy már fogalmam sincs... Én kifogytam az 5letekből, a bekötés biztos jó, 5x átnéztem, de holnap tiszta fejjel nekifutok mégegyszer. Esetleg nincs ötlete valakinek?
Sziasztok!
Fel merült bennem egy-két nagyon kezdő kérdés, miközben a 44pin demo board példáit nézegettem. A kód:
Kezdeném is: 1. Delay1, Delay2 az mi szerint késleltet? Nincs meg adva sehol a kódban, a késleltetés értéke. Legalábbis én ezek után keresném. 2. A Display-t sem értem, hogy miért van az csak úgy ki írva az elejére, ráadásul semmi sincs utána. A többi "részt" nagyjából értem. Még az érdekelne, hogy ha már bemásoltam ebben a kódban, hogy hogy lehetne megoldani azt hogy ne az egész portD legyen használva, hanem mondjuk csak az első 4bit? Szóval 8 helyett, egy 4 LED-es futófényt kapjak. Bocsi az amatőr kérdések miatt!
Pont ugyanazekről volt szó itt a témában nemrég. Olvass vissza néhány oldalt vagy használd a keresőt.
Tényleg volt róla szó, kerestem is. De nem kifejezetten az alapoktól, hanem inkább az alkalmazásáról. Igazam van hogy a Delay1 1ms-et késleltet? Vagy ez nem így működik?
A CBLOCK utáni címkék egy-egy egybájtos változó részére rezerválnak helyet az adatmemóriában. Delay1 és Delay2 értéke azért nincs beállítva, mert az első használattól eltekintve nullától nulláig pörögnek körbe, azaz egy-egy 256 ciklust leszámláló programhurok ciklusváltozói lesznek.
Idézet: Nem, de oda van írva a ciklus mellé a megoldás: amíg Delay1 "körbefordul, 256 ciklus történik, s mindegyik három utasításciklust igényel. Ha 4 MHz-en fut a CPU, akkor ez 768 us, azaz 0,768 ms. „Igazam van hogy a Delay1 1ms-et késleltet?” Idézet: „A CBLOCK utáni címkék egy-egy egybájtos változó részére rezerválnak helyet az adatmemóriában.” Tenyleg tavol alljon tolem, hogy beleszoljak, de hadd jegyezzem meg, hogy a CBLOCK-kal epp a legnagyobb problemam, hogy az nem foglal le semmit a memoriaban. Az csupan egy konstans deklaralo direktiva (Constant Block --> CBlock), amit mellesleg szoktunk hasznalni a RAM cimek kiosztasara is. Ez ugyan megkonnyiti, de egyaltalan nem garantalja, hogy a generalt konstans ertekek valos RAM cimeket fognak kijelolni.
Az asm-ban nem lehet lefoglalni semmit, ezért nem értem miért emeled ezt ki. Itt nem árt, ha az ember tudja mit csinál, de ez benne a szép.
Linker scripttel lehet Tulajdonkepp az az egyetlen modja ennek. (Tudom, hagyjak mar fel ezzel mindorokre, de hat ez van )
Lehet lefoglalni, ha linker scriptes módon írod a programodat. Ott majd a linker adja a címet a változóknak, és sikít, ha esetleg többet akarnál foglalni, mint amennyi hely van.
Nekem egy dolog nem világos még. Hogyan kezeli le a linker az olyan dolgot, hogy ha a változó mondjuk bank2 területre kerül, akkor a kód előtte kiválassza a bank2-t, mielőtt hozzá akar férni?
Csak C-ben használom a linkert, ott se szívesen. Jobban szeretem, ha minden ott van ahol én akarom.
Egyreszt BANKSEL makrot kell hasznalni, masreszt egy-egy data szekcioban garantalni lehet, hogy az egyetlen bankra fog esni. Tehat:
Itt garantalt, hogy 'Counter' es 'adjust' mindig ugyanarra bankra fog kerulni, es az is, hogy 'temp1' ugyanarra amire 'temp2' illeve 'dLay200ms'.
Engem egyre kevesbe erdekel Ha sehol sem hasznalom ki, hogy kikenyszeritett cimre keruljon valami, akkor nem lehet baj -- ill ha igen akkor meg ott van a lehetoseg protected teruletek es szekciok letrehozasara.
Ettől féltem, hogy muszáj BANKSEL. Csak az meg több kódot csinál, mint amit muszáj. Gondolom valamit valamiért...
Az MPLAB helpjeben igy van a pelda program:
Idézet: „This program demonstrates the udata directive, which declares the beginning of a section of uninitialized data. udata does not set (initialize) the starting value of the variables; you must do this in code.”
UI: Watt, nezd meg hogyan kenyszeriti ki a group1-nel, hogy a 0x20-as cimre keruljon a csoport -- mint CBLOCK... Idézet: „a CBLOCK-kal epp a legnagyobb problemam, hogy az nem foglal le semmit a memoriaban.” Abban az értelemben "lefoglal", hogy ha elkezded, hogy CBLOCK 0x20, és egymás után írogatod a címkéket, akkor automatikusan növeli a címeket, és nem fogja három változónak is ugyanazt a címet kiosztani (ami az EQU-val történő definiálásnál figyelmetlenségből megeshet). Ennél többet nem is várok tőle, s a három-négybájtnyi változóterületet használó LED villogtató assembly programok megértéséhez ennyi talán elég is. A linker script tényleg jó dolog, csak annak az átlátásához nagyobb tudás, vagy több tapasztalat kell. Főleg, amikor testre kell szabni egy linker scriptet...
Igazad van ilyen ertelemben, egyszeru dolgokhoz egyszerubb egy CBLOCK -- bar en ugy latom az egyszeruseget inkabb az okozza, hogy a forras file-on kivul nem kell mas, mig egy linker script eseteben kell a szkript file is.
A problemak a CBLOCK-kal amik igy hirtelen eszembe jutnak: - CBLOCK kezdo cimet el lehet szurni (bar ugyanigy a linker szkript eseteben is lehet hibazni persze) - Ha tul sok valtozot teszel oda, akkor nem veszi eszre, hogy a RAM teruletnek mar vege (pl. atnyulsz az overlay teruletre, ill 18F eseten epp kiesel belole, a fordito nem jelez hibat, azonaban a szoftver hibasan fog mukodni, vagy ami meg rosszabb latszolag helyesen) - Ha tobb CBLOCK is van, akkor mar egyaltalan nem garantalhato, hogy a teruletek jol lesznek kiosztva (magyaran a kezdo erteket nehez jol beallitani, mindig figyelni kell ra az elozo CBLOCK hol ert veget) - Tobb bank eseten nehez atlatni, hogy melyik CBLOCK tartozik mihez (legalabbis szerintem) - Nehez overlay teruleteket definialni es azokat karban tartani
Szia!
A fenti egy 16 byte-os buffert és három byte-os változót definiál ... Szia
Sziasztok!
Watt! A kapcsolásom a neten találtam, de nem volt melette a PIC vezérlés codja. A nyákot már 3/4-ig megterveztem aztán szitázom és marom. Az alkatrészeket, már félig meddig beszereztem, de mitsem ér a kari a PIC vezérlés nélkül. ebben a "pdf" ben van a kapcsi rajz. Segítséged előre is köszi. Üdv szabolcs
Sziasztok!
Lehet,hogy baromságot kérdezek, de az iménti códot nem lehet egy logikai változóval manipulálni?! "mint a java-ban" Ez alatt a "Boolean"- ra gondolok ami lehet "true" vagy "fals" és mindig telyes értéket ad vissza illetve, hogy tuti legyen a cód használaható e esetleg setter, getter lekérdező és beálitó ami utalhat egy osztályra "Class", vagy egy csomagra" is. üdv szabolcs Idézet: „Lehet,hogy baromságot kérdezek, de az iménti códot nem lehet egy logikai változóval manipulálni?!” Egy szavadat sem értjük, ha nem használod a Válasz gombot, hogy tudjuk kinek és melyik írására válaszoltál.
Ha jól látom a rajz fejlécében a www.hobbycnc.hu oldalra hivatkoznak. Ott kell kódot keresned, mert mi nem tudunk adni nagy valószínűséggel, hacsak valaki meg nem építette ezt a kapcsolást közülünk, aminek kicsi az esélye.
Közben keresgéltem és ezt találtam: Bővebben: Link Itt elvileg minden megvan... |
Bejelentkezés
Hirdetés |