MPLAB X a knihovna XLCD ( zacyklí se na while(busyXLCD()) )

Zdravim,

už po několikáté se snažím naučit Cčko. a asi to zase brzo zapíchu :smiley:

no ale k věci. v prvních pokusech se mi povedlo procesor nastavit a spustit. byla snaha s ledkama, adc, komparátor, přerušení s prioritama… takovej základ řekl bych. a tak nějak se i dařilo. ted po dlouhej době sem se k tomu vrátil a že pokročim. takže import knihovny a pokus něco napsat na LCD :slight_smile: mám na to MPLAB X a importoval sem XLCD.h (podle návodu studentcompanion.co.za/post/ … roller-XC8 to vypadalo jednoduše) ale mě to prostě nic nedělá.

takže otázka: zkoušel ste někdo tuhle knihovnu a funguje vám to ???

krokovánim sem se dostal k tomu že při zavolání funkce OpenXLCD(FOUR_BIT&LINES_5X7); se mi zacyklí na prvnim volání funkce while(BusyXLCD()); dál sem teda vysledoval že to sleduje na datovym portu na pinu D7 signál. Když sem psal obsluhu LCD v assembleru tak sem nikdy ten pin nesledoval. dycky sem na všecko používal jen zpoždění, takže ani nevim že by alfanumerický displeje měli nějakou funkci že udávaj na nějakym pinu že sou zaneprázdněný.

ono asi bude nejfajnovější si napsat vlastní knihovnu, ale jak sem psal, učim se to a nechci zase moc machrovat a rovnou začít psát knihovny když ani nevim jestli s ní správně pracuju.

mnoo, takže už sem asi našel kde je ten problém. nevim jak to popsat aby to dávalo smysl, takže předem omluva za ten popis :slight_smile:

vzal sem soubou XLCD.h a nakopíroval do složky s projektem. v main.c sem napsal #include “myLib/xlcd.h” (v origo používal na data PORTB, ale já chci PORTD, takže v souboru ve složce s projektem sem to přepsal. v mplabu to načetlo dobře ten muj přepsanej soubor) a dále koukám že se funkci openXLCD.c se znova načítá #include <XLCD.h> ale tady to nenačte ten muj upravenej soubor ale ten originální kerej má nastavenej PORTB.

Takže jak timdle ostatnim funkcim vysvětlim aby taky používali ten muj přepsanej soubor ?? možná mám jen nějak blbě přidaný soubory do projektu. tak jestli mi můžete nějak poradit ??

neni v openXLCD.c includovanrj jeste ten XLCD.h ?, nebo je to nastaveny nekde v projektu, ci je to jeste nekde naincludovany v jinych souborech

popripade ten original prejmenuj a vyhodi ti to chybu a uvidis , podle toho se to da pak najit

edit: nebo si uprav te origina aby ti treba pri decinici “moje_porty” pouzit ty tvoje (ifdef/ifndef)

jojo, přesně tak. to sem se snažil popsat :smiley: v souboru openXLCD.c je znova naincludovanej <XLCD.h> ale nenačte to ten muj upravenej na jiný porty ale ten originál. skusil sem to přepsat na “myLib/XLCD.h” jako to mám v main.c a načítá to ten muj soubor s přepsanejma portama, ale to mi vyhodí chybu že nemůže najít soubor.

vzhledem k tomu ze tu nejses po1 tak by si moch napsat tu chybu co to hlasi… :unamused:

skus ten tvuj prejmenovat
----//--------- hodit do slozky kde mas hlavni *.c

no ono to normálně žádnou chybu nehlásí. chybu že nelze najít soubor to vyhodí jen v případě když sem se pokusil v souboru openXLCD.c přepsat řádek #include <XLCD.h> na #include “myLib/XLCD.h” v domnění že by to mohlo začít používat ten muj soubor s přepsanejma portama.

skusim teda ještě přejmenovat muj upravenej soubor a dát do složky přímo k main.c a nedávat do další složky.

ano.To udelej . A napis chybu

to sem udělal a vyhodilo to chybu že nemůže najít uvedenej soubor. a už když sem to psal tak mi to ani nevyhazovalo nabídku na to moje umístění ale jen na ten original. ale dobrá, jak dorazim dom udělám to znova a dám to sem.

takže věc se má takhle, at sem dělal co sem dělal tam se mi nijak nepovedlo dostat ten stav aby mě to vyhodilo tu hlášku co včera. že nemůže najíst soubor. takže sem chvili hledal a přemejšlel a jaksi se mi povedlo to rozject a už to funguje a ukazuje :slight_smile:

udělal sem to tak, že sem ve složce s projektem vytvořil složku myXLCD a do tý sem vložil hlavičku XLCD.h ale přejmenoval sem si jí na myXLCD.h, dám sem do týhle složky nakopíroval ostatní soubory (openXLCD.c busyXLCD.c atd) v hlavním main.c sem napsal #include “myXLCD/myXLCD.h” a ve včech souborech openXLCD.c busyXLCD.c atd sem přepsal #include <XLCD.h> na “myXLCD.h” no a v hlavičce myXLCD.h sem eště přepsal první dva řádky
#ifndef __XLCD_H
#define __XLCD_H
na
#ifndef __myXLCD_H
#define __myXLCD_H

jen si teda vůbec nejsem jistej tim co přesně dělej ty dva řádky
#ifndef __myXLCD_H
#define __myXLCD_H

no a vyhazuje mi to ted několik varování že sem předefinoval porty:
myXLCD/myxlcd.h:34: warning: (111) redefining preprocessor macro “DATA_PORT” (C:\Program Files (x86)\Microchip\xc8\v1.33\include\plib\xlcd.h: 34)
to můžu v klidu přehlížet? je možnost tyhle varování vypnout jako to šlo v assembleru ?

Rek bych ze ti to pored bere ten starej h. V tom varovani mas na konci cestu k tomu souboru tak si ho otevri a koukni se na radek co je na konci pred dvojiteckou .34 radek.
Asi bych zalozil novej projekt.Je mozny ze ty cesty sou nastaveny v tom projektu (nekoukal sem na ten odkaz) . v ostatnich souborech uz neni vlozenej oreginal h ?

kdyby to bralo starej tak mi to na LCD nic neukáže. v ostatních souborech sem to přepsal a taky to používá tu mojí přepsanou hlavičku. spíš bych to viděl na založení novýho projektu. přeci jen se s tim peru už několikátej den a lecos sem už naklikal. a na tom řádku jak to vypisuje tak je definice portu a na dalších řádních definice řídících pinů. takže to vypadá jakoby to porovnávalo ten muj přepsanej soubor s tim origo.

založení novýho projektu nijak nepomohlo. program funguje, je to hlásí varování.

To bohužel zřejmě není chyba, ale vlastnost :confused: To IDE je bohužel dost nestabilní a často si dělá co chce (a pokaždý něco jinýho). Někdy neuloží soubor, jindy spadne, někdy přestane ukazovat proměnný v simulátoru ve Watch, pak zas třeba přestane akceptovat volby projektu - stalo se mi, že volbu “Build in absolute mode” to zničehonic začlo odmítat, nešel přeložit projekt, což se povedlo až po odstranění tohoto zaškrtnutí, přestože projekt (v ASM) byl psanej ve statickým kódu… Jindy např. zamlčuje interní chyby v Javě - dole v pravým rohu se rozsvítí na liště malinkatý červený mínus (čehož si sotva všimnete) a až když na něj najedete a kliknete, tak teprv chybu vypíše… atd apod.

Je to škoda, protože to prostředí je jinak poměrně pěkný, ovšem tahle “náladovost” až k skoro k nepoužitelnost to celý hodně shazuje. Neumím si představit a úplně mě děsí, že by se stávalo pravidelně, že bude člověk půl dne, celej den něco kódit, pak klikne “Save” a jde třeba spát, a druhej den tam ten kód prostě nebude. Přistupovat k tomu primárně s nedůvěrou, dělat tomu prostředí pořád arbitra, policajta a watchdog zároveň (co chvíli to vypínat a znova pouštět), tak jak to teď aktuálně potřebuje, je velmi únavné. Pod Linuxem to navíc ani neumí běžet v userspace, vyžaduje to pro běh práva správce systému - opět špatně (tohle konkrétně je přímo hnus).