Fórum témák
» Több friss téma |
Én egy helyen 50 - 2000 láb hatótávolságot olvastam, de ott külső antenna rászereléséről is szó volt...
Szia!
Nekem első blikkre programhibának látszik a kijelzés elcsúszása. 3510i LCD-nél és a Siemens LCD-nél is sikerült megkavarnom a regiszterek tartalmát, ami ahhoz vezetett, hogy rossz memóriacímről olvasott a program.
Nem elcsúszik, hanem egymásra írja a karaktereket. Magyarul, amikor ugyanarra a pozícióra írok a régi karakter ott marad.
Lassacskán abba kellene hagynom a fórumozást, mert már csak hülyeségeket írok... Nem olvastam el megint a pontos hibát, és rosszul emlékeztem erre.
Ha esetleg ugyanarra a területre, ugyanazzal a rutinnal írsz ki más adatot, akkor is jelentkezik ez a hiba? Például a hőmérő értékét.
Igen, és csak úgy tudom eltüntetni, hogy mielőtt újra írok karaktert, a hátteret is újra írom.
Értem... Nem tudok semmi támpontot adni, nem ismerem a programod felépítését. Feltételezéseim vannak csupán, de gyanítom, hogy azok sem helyesek. Van három karakterméreted, ránézésre ezek egy karakterkészletet használnak, a legkisebbet, majd ezt nagyítod fel szoftverrel. Ehhez a nagyításhoz én használnám a RAM-ot, bár én még nem foglalkoztam kimondottan ilyennel. Csupán abban a szekcióban tudom elképzelni, hogy a kijelzőre kerülő adat "rávagyolódjon" az előző tartalomra, nem hinném, hogy ilyenre képes a kijelző meghajtója... Szvsz valahol a kép generálásakor üríteni kéne a RAM azon részét, ahová a kész képet teszed, majd innen kiteszed a kijelzőre. Nyilván a RAM-ot gyorsabban és kevésbé látványosan tudod törölni, mint magát az LCD-t. Ugyanakkor, amiért nem érzem helyesnek az állításomat, mert feltételezem, hogy hasonló logikát alkalmaztál a legnagyobb méret előállításához is, viszont akkor ott miért nem jelentkezik a hiba?
Egyelőre nem tudok - ma kaptam meg, nem tudom még, mikor lesz időm foglalkozni vele.
Mondjuk még SPI-vel nem foglalkoztam, de szerintem egyszerűbb lesz mint az I2C... - a címzés miatt biztosan, Ill. várom még a Nokia kijelzőmet, ahhoz is az kell - szerintem ezután keltem majd életre, ha addig nem unatkozom nagyon. Amúgy én is az ára miatt néztem ki magamnak, kíváncsi leszek rá. Nem szántam nagy távolságokra - ha nem kell átfúrni a plafont az összes szükséges helyen, már jó. A túloldalra úgyis vezetéken jön majd a jel. Megpróbálom majd nagyobb távolságon is azért. Amúgy rajzolt antenna - nem a legjobb, de lehet azért egész használható. Pl. kihajthatós antennájú PCMCIA wlan-kártyát lekőrözte egy USB-s apróság múltkor ~80 cm vastag födémen át - ha ezt tudja, már szeretem.
Ebben a hozzászólásodban megtaláltam a kiíró függvényedet
Ebben az if (font[c - 0x20][col] & bit) feltételes résznek nincs else ága, azaz csak azokat a pontokat írod felül, ahol a karakter képe '1'-est tartalmaz (tintaszín). Ahol a karakterkép '0' tartalmaz (papír szín, azaz háttér), oda nem írsz semmit. Ez csak akkor jó, ha előtte kitöltötted a helyet papírszínnel. Így többszöri felülírás esetén érthető a kifehéredés jelensége...
Szia,
Nem futtatni kell rajta programot, hanem csak megfelelően vezérelni, ami tisztán egy UART. Vagyis RX/TX pontokon keresztül sorosan.
Köszönöm szépen. Ez fel sem tűnt.
Tehát az "else" ágban a "háttért" egyszerűen az épp adott színnel kell kitölteni, valahogy így:
De ez nem működik, ha a betűket felnagyítom, hisz azt már egy másik függvény dolgozza fel.
Ezek szerint ezt a függvényt, teljesen át kell alakítanom. Köszi még egyszer!
Megoldottam !
Köszönöm szépen még egyszer!!! Így néz ki a kiíró függvény most:
Gyors, és nem "vibrál, szaggat, vagy mittudomén".
Örülök, hogy megoldódott. A kódon még volna mit optimalizálni, mert nekem úgy tűnik, hogy a font[c - 0x20][col] értéket is szükségtelenül sokszor veszed elő, s a drawPixel (vagy a betu_meret) függvények meghívását is szükségtelen így duplázni, ha úgyis paraméterként adod át a színt. Végeredményben még gyorsabb lehetne a kiírás.
Ezt a függvényt nem én írtam, csak a betű méretező részét. A függvény, és az eredeti lcd vezérlő program jogos tulajdonosa és írója RobG. De tulajdonképpen jórészt már az egész vezérlést átírtam. (Sajnos nem működött rendesen. A működészavar vélhető oka, a vezérlő ic típusa. ST7735, ST7735B, ST7735R stb...Én a B típusút használom, és az inicializálásnál voltak komoly gondok. )
Most egyenlőre, örülök, hogy ilyen jól működik. (Erre is ráment egy hetem.) Biztos, hogy tovább fogom optimalizálni, de most foglalkoznom kell a program többi részével, mert azzal nagyon elmaradtam. Egy kis videó a működésről.
Pont most szívok spi-vel, bár mostanság feladtam, mert nincs rá időm. Kellene egy teszt nyák, mert annyi zavart kap, hogy az átküldött adat kb fele zagyvaság. Bár nem tudom milyen modullal szaratnéd én usi-vel próbálkoztam. Az árnak meg nem tudtam ellenálni így hát rendeltem én is.
A hozzászólás módosítva: Okt 5, 2012
Idézet: „Pont most szívok spi-vel” Ezért nem akartam még nekiállni a rádiós kommunikációnak, amíg nincs legalább egy működő kijelzőm SPI-n - tehát lássam, hogy működik a kommunikáció és a kód többi részében van hiba, mintsem álljak tanácstalanul, hogy most mi is a gondok forrása - egy fokkal már közelebb leszek a sikerhez. A kijelzőt szeptember 15-én adták postára, lassan már illene itt lennie. Idézet: „Bár nem tudom milyen modullal szaratnéd én usi-vel próbálkoztam.” Én is USI-vel szeretném megoldani, mert USCI-re majd menne egy RS485-ös illesztő is. Remélem, zavarokkal nem lesz gondom - érzékenyebb mint I2C esetén? Idézet: „Az árnak meg nem tudtam ellenálni így hát rendeltem én is.” Akkor ugyanúgy jártál mint én. Amúgy DX-en is láttam ilyen modult (ma valamikor), ott kb. 10 métert írt rá az egyik értékelő (kb. ilyen panelon volt az is) házon belül és kb. 50-et szabadban.
Azt tudom, hogy feszültséget mérek és a mért értékeket küldöm át a másik uC-nak, de meglehetősen "vibrál" a kijelzés (gondolom a sok zavar miatt hülyeségeket is kiír nem csak a jó értékeket) és mikor a kezem is közeledik akkor a teljes káosz lesz úrrá a szerkezeten.
Ja meg így utólag jöttem rá, hogy rf modullal érdekes lesz a szinkron kommunikáció lezavarása.
Sziasztok
Dögöljön meg a lovam ha értem. Egyszerüen nem jövök rá hogy itt
Majdnem. TASSEL_2 miatt itt SMCLK az órajel forrása, ami 1 MHz. Be van állítva azonban egy 1:8-as előosztás is, tehát a timer órajele 125 kHz, ami pontosan 2500-szorosa a 20 ms-hoz tartozó 50 Hz-nek. Tehát 2500-1-et, azaz 2499-et kell a TACCR0 regiszterbe írni.
Számolhatsz úgy is, hogy 1 MHz-en 20000-1 kellene bele, itt pedig a nyolcada, azaz 2500-1 kell. Ja, az 1-et mindig a végén kell levonni, az osztás után!
Ok ez igy már érthet, köszönöm. De ezt a nyavatt "e" változot ezt hogy számolom mert ugyebár ezzel szeretnék mérni egy bejövö jelet ami változik 1ms és 2ms között. Mert ha jol értem akkor valami felfelé számolást kell csinálni, vagy nemértem az egészet.
Jólsejtem hogy esetleg egy sima számolást berakok a 18. sorba akkor azzal már tudok számolni "e" változót (frekit)?
Teljesen más kérdés, ezt az egészet egy modell motorjához szeretném csinálni és az a kérdés hogy hogyan tudom csatlakoztatni a modell vevöjét mert ha jól tudom a jel is 5V-on müködik és az már sok lenne. Esetleg egy ellenállással korlátozom? A hozzászólás módosítva: Okt 6, 2012
Kár, hogy a fele, tényleg csak dísz...pléj. Sajna fogalmam sincs, hogy kéne őket vezérelni. Amelyik i2c-s vagy spi-s, még csak-csak menne, de a többi sok kivezetésű......
Én ezt az elejétől nem értettem, mit szeretnél az e-vel.
A program elején deklarálod - de értéket soha nem kap -, majd vizsgálod, hogy értéke 1-e. Lehet, jobb lenne, ha konkretizálnád, mit szeretnél csinálni. A lenti hozzászólásod alapján gondolom, az egyik lábon szeretnéd mérni, hogy van-e 5V vagy nincs (?). Tehát akkor bemenetként kellene definiálni az egyik lábat (P1DIR/P2DIR), az 5V-os jelet pedig egy feszültségoszón keresztül figyelni. Ha "nincs" 5V, akkor GND-n van a jeled? Az 1ms és 2ms közötti változást sem értem - fent 20ms-ra szeretnéd időzíteni a figyelést, de 1-2ms-os változásokat szeretnél figyelni vele? - ez a kettő szerintem nem passzol egymással. Lehet, hogy én értelmezem rosszul, de nem igazán tudom ebből egyértelműen kibogozni a lényeget. A hozzászólás módosítva: Okt 6, 2012
Ha bejövő jel szélességét akarod mérni, akkor a timert szabadonfutó módba kell állítani, megszakítást sem kell engedélyezni (TACTL TAIE bitje =0). A Capture/Compare egységek valamelyikét (amelyik bemenetére beköthető a mérendő jel) Capture módba kell állítani (TACCTL0 vagy TACCTL1 CMx bitcsoportja nullától különböző legyen). CMx = 01: jelelfogás a felfutó élnél, 10: jelelfogás a lefutó élnél.
Pozitív impulzusnál én a felfutó élre érzékenyíteném először, majd a megszakításban egy változóba rögzíteném az értéket. Pl. így: first_time = TACCR0; Utána (még mindig a megszakításban) átállítanám lefutó élre (CMx = 2), majd a következő megszakításnál képezném a TACCR0 és a first_time különbségét. Lehet ennél egyszerűbben is csinálni, ahogy pl. John Davis: MSP430 Microcontroller Basics c. könyvének mintapéldái között a press1.c csinálja: élfüggetlen capture beállítás (CMx = 3), s minden megszakításban képezed a TCCR0 - Last_Time különbséget (majd a főprogramban eldobod, amelyil nem 1-2 ms tartományba esik...), utána frissíted Last_Time értékét. Én még nem csináltam ilyet, úgyhogy ebben a témában neked kell kivágni a rezet. Idézet: „Én még nem csináltam ilyet,” Én már csináltam, igaz PIC-el és ASM-ben. De mikor megláttam, hogy egy "gyári" dc motor szabályzó $1.90, akkor kerültem infarktus közeli állapotba. Mert kb. egy hónapom ráment.
PIC mikrovezérlőkkel én is csináltam már, de ez nem az a topik....
Ez igaz, bocsi érte.
De a program struktúrája ugyan az: Megmérni a bejövő jelet -> 1,5mS-nál (ha híddal vezérli a motort!) a kimenő PWM jel kitöltése nulla -> 1mS teljes kitöltés (pl. előre) -> 2mS-nál teljes kitöltés (pl. hátra). Természetesen a kitöltési tényező 1-1,5mS és 1,5-2mS között arányosan változik. Szerintem Kovabe fórumtársunk, valami ilyesmit szeretne megvalósítani. De lehet, hogy tévedek.
Nem tévedsz tökéletesen igazad van. Csak mint kezdö (tudom ez kutyát se érdekli) sajna belegabajodtam és ezért kértem utbaigazitást. Ezt szerencsére icserny segitségével meg is kaptam, mostmár talán lesz miböl kiindulni mert ez a méregetés kicsit bonyi volt igy számomra.
PIC hez van egy gyári programom de az egyuristennek nem megy és ezért is szeretném megtanulni itt, mert ugy vettem észre, hogy itt még mindenki segitökész.
Köszönöm a kimeritö válaszod, remélem ebböl már lesz egy ugrodeszka amiböl tovább tudok dolgozni.
Kb 1 éve nap mint nap dolgozok ezzel a nyavajás szabályzoval de nem jövök rá mi a lényege a benne lévö programnak, ezért is szeretnék egy sajátot hogy tudjam mi miért van. |
Bejelentkezés
Hirdetés |