Fórum témák
» Több friss téma |
Egy felhúzó ellenállás elég lett volna a RA4 vonalra.
Itt van!! Már megvehető!! A ChipCad -nál rendelhető az ICD 4 !! Az ára:
Mármint az ICE 4 Emulátor a szóbanforgás tárgya?
A hozzászólás módosítva: Jan 24, 2022
hobbi kategória...
Olyan egységesen nevezik, min a M$ a Windows -t:
ICD2, ICD3, ICE4 A hozzászólás módosítva: Jan 24, 2022
Sziasztok! Azt meg lehet mondani az LCD kijelzőnek, hogy ha stringet, szót ír, akkor azt ne karakterről karakterrel írja lomhán, hanem egyszerre, hogy úgy tűnjön, hogy egy időben van? Tudom, hogy a valóságban ennek így kell történnie, de ez így nagyon lassú.
Ha az adatlap szerinti időzítéseket használod, nincs az az isten, hogy az emberi szem észrevegye a késleltetést.
Hát én MikroPascal-ban írtam LCD kezelést de ott aztán nem látszott semmi.
De itt egy MikroC leírás példával. A hozzászólás módosítva: Jan 25, 2022
A programot a vasárnap 18:49-es bejegyzésemben találod.
És Itt egy kis videó.
Láthatod, ahogy megkapta a tápot azonnal ott a felirat az LCD -n. A videó oldala ahol a forrás kódot is megtalálod. A hozzászólás módosítva: Jan 25, 2022
Idézet: „5 és 15 us-okat használok és mégis.” Az a baj, hogy nem 5uS-et, hanem 5mS-et használsz minden karakter után:
Ide elég 40..50uS
És ezeket a várakozási időket az LCD művelet után kellene kivárni, mert az 1 karakter kiküldésre kell 40..50uS, de ha előtte egy teljes törlés van, arra meg kellene 17mS, ott az 5ms-el sem fog jól működni.
Igaz ugyan, hogy én assemblyben programozok, de amikor azt szerettem volna, hogy látható legyen a beírás menete, külön kiíró rutint kellett hozzá írnom, hogy karakterenként írja ki a szöveget. Egyszerűen a kijelző nem tudott olyan lasan megjeleníteni.
Úgyhogy szerintem hibás a kijelző, amit használsz.
Én mindig olyan módszert használtam a sima karakteres LCD-hez, hogy a kijelző karaktereinek számával egyező méretű tömbbe (hívhatjuk frame buffernek is) írtam a megjelenítendő szöveget, amit a háttérben timer megszakításban folyamatosan küldtem ki a kijelzőbe. Így a kiíró rutin nagyon gyorsan végrehajtódott (hiszen csak memória írást kellett neki csinálnia), a háttérben meg mindig csak egy karaktert küldtem a kijelzőnek, így nincs szükség várakozásra. Ezzel a módszerrel a villogó karakterek is megoldhatóak.
Köszönöm, megoldódott azzal, hogy a msec helyett usec-ben adtam meg a várakozást. Jó lett.
Még egy kérdés: ha két nyomógomb is tartozik egy PIC-hez, aminél használok belső felhúzó ellenállást, akkor ezek közül csak egy lehet aktív, egyszerre két nyomógomb nem "nyomható meg" programozás ügyileg?
Ezt most nem igazán értem.
Miért ne lehetne egyszerre több nyomó gomb állapotát lekérdezni?
Csak arra gondoltam, hogy egy közös felhúzó ellenállás van-e, vagy minden bemenetnek sajátja. De kiderült, hogy valóban benyomható egyszerre két nyomógomb is.
Az LCD kijelzőn szeretnék egy stoppert is megjeleníteni, szépen ki is írja a 00:00:00-t, majd szépen elindul a másodperc. De amikor be akarom korlátozni, hogy 60 sec után legyen 0 és a min növekedjen eggyel, azt már nem fordítja le.
Mi lehet a gondja?
Ezt írja ki hibaüzenetként: LEAN SUCCESSFUL (total time: 6ms) make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf make[1]: Entering directory 'C:/Users/Lajos/MPLABXProjects' make -f nbproject/Makefile-default.mk dist/default/production/MPLABXProjects.production.hex make[2]: Entering directory 'C:/Users/Lajos/MPLABXProjects' "C:\Program Files\Microchip\xc8\v2.32\bin\xc8-cc.exe" -mcpu=16F627A -c -mdfp="C:/Program Files/Microchip/MPLABX/v5.50/packs/Microchip/PIC16Fxxx_DFP/1.2.33/xc8" -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -DXPRJ_default=default -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -o build/default/production/eredmeny.p1 eredmeny.c ::: advisory: (2049) C99 compliant libraries are currently not available for baseline or mid-range devices, or for enhanced mid-range devices using a reentrant stack; using C90 libraries eredmeny.c:25:9: warning: '__delay_ms' macro redefined [-Wmacro-redefined] #define __delay_ms(x) _delay((unsigned long)((x)*(8000000/4000.0))) ^ C:/Program Files/Microchip/MPLABX/v5.50/packs/Microchip/PIC16Fxxx_DFP/1.2.33/xc8\pic\include\pic.h:101:9: note: previous definition is here #define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0))) ^ eredmeny.c:369:10: warning: implicit conversion loses integer precision: 'int' to 'char' [-Wconversion] ch = (ch << 4); ~ ~~~^~~~ eredmeny.c:384:10: warning: implicit conversion loses integer precision: 'int' to 'char' [-Wconversion] ch = (ch << 4); ~ ~~~^~~~ 3 warnings generated. "C:\Program Files\Microchip\xc8\v2.32\bin\xc8-cc.exe" -mcpu=16F627A -Wl,-Map=dist/default/production/MPLABXProjects.production.map -DXPRJ_default=default -Wl,--defsym=__MPLAB_BUILD=1 -mdfp="C:/Program Files/Microchip/MPLABX/v5.50/packs/Microchip/PIC16Fxxx_DFP/1.2.33/xc8" -fno-short-double -fno-short-float -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -mwarn=-3 -Wa,-a -msummary=-psect,-class,+mem,-hex,-file -ginhx32 -Wl,--data-init -mno-keep-startup -mno-osccal -mno-resetbits -mno-save-resetbits -mno-download -mno-stackcall -std=c99 -gdwarf-3 -mstack=compiled:auto:auto -Wl,--memorysummary,dist/default/production/memoryfile.xml -o dist/default/production/MPLABXProjects.production.elf build/default/production/eredmeny.p1 ::: advisory: (2049) C99 compliant libraries are currently not available for baseline or mid-range devices, or for enhanced mid-range devices using a reentrant stack; using C90 libraries :0:: error: (1347) can't find 0x8 words (0x8 withtotal) for psect "clrtext" in class "CODE" (largest unused contiguous range 0x3) Non line specific message::: advisory: (1493) updated 32-bit floating-point routines might trigger "can't find space" messages appearing after updating to this release; consider using the smaller 24-bit floating-point types :0:: error: (1347) can't find 0x4 words (0x4 withtotal) for psect "idataBANK0" in class "CODE" (largest unused contiguous range 0x3) (908) exit status = 1 nbproject/Makefile-default.mk:138: recipe for target 'dist/default/production/MPLABXProjects.production.hex' failed make[2]: Leaving directory 'C:/Users/Lajos/MPLABXProjects' nbproject/Makefile-default.mk:91: recipe for target '.build-conf' failed make[1]: Leaving directory 'C:/Users/Lajos/MPLABXProjects' nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed make[2]: *** [dist/default/production/MPLABXProjects.production.hex] Error 1 make[1]: *** [.build-conf] Error 2 make: *** [.build-impl] Error 2 BUILD FAILED (exit value 2, total time: 2s)
Felüldefiniáltad a '__delay_ms makrot: A pic.h -ban már definiálták, a eredmeny.c -ben van a tied.
Arra figyelmeztet még, hogy a ch = (ch << 4) automatikus konverziója elveszti a byte-ból kiléptetett 4 bitet. A többi észrevétel arról szól, hogy a programodnak nem talál már elég összefüggő helyet a program memóriában. Szószátyár egy fordító az az XC8 midrange kontrolleren főleg free módban.... A hozzászólás módosítva: Jan 25, 2022
Akkor itt a delay a kritikus, amit javitok és a leglényegesebb, hogy 97%-os kihasználtságon van. Valahogy nem lehet tömöríteni? Vagy egy másik PIC a megoldás? (Kezdhetem elölről a konfugurálást.
Biztosan lehet rajta "tömöríteni" azaz optimalizálni. Az XC8 fordító licenc lehetőségeit kell megnézni. Régebben volt lehetőség (egy gépen egyszer) 30 napig ingyenesen használni a teljes verziót.
Ami belefért assembly -ben megírva a 16F628 -ba (2k), azt nem tudta belepréselni 8k -ba sem. A 16F628 -ban 2k a programtár és ugyan az a konfigurálása. Ha nem titkos, töltsd fel (küld el) a programot, megpróbálhatom "összenyomni". A hozzászólás módosítva: Jan 25, 2022
Köszönöm, holnap elküldöm. De még nem végleges, mert apránként csinálom és mindig tesztelem. De most a hibaüzenet miatt megakadtam. Tehát ha Te összetömöríted, akkor utána én tudom folytatni?
Virtuális gépen egész könnyen megoldható a havonta vagy kéthavonta történő telepítés (csak egy mentést kell ugye csinálni a telepítés előtti merevlemez képfájlról).
Az a legegyszerűbb, ha átírom 16F628-ra, mert az kétszer nagyobb programtárral rendelkezik és akkor nem kell neked sem ezzel vesződnöd.
Köszönöm! |
Bejelentkezés
Hirdetés |