PIC problém s kompilací

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
nop
Příspěvky: 158
Registrován: 18 kvě 2007, 02:00

#16 Příspěvek od nop »

Takže ten oscilátor na 64MHz se mi nějak nepodařilo rozchodit vypadalo to že se PIC nějak blokl a že je po něm,tak jsem to nastavil na iterních 8MHz a namísto čínskýho Pickitu3 jsem použil český PRESTO a procesor ožil což mi spadl kámen ze srdce neb není nikde 18F26K80 k sehnání xc.h nestačí vložit jen v main.c musí být i v hw_set.c jinak to nezná názvy registrů co se týká displeje tak už fakt nevím objednal jsem z číny nový a jestli nepomůže ani to dám tam ledkový 14 segmenty

Tak uz to chodí jen doladit časování protože po náběhu napájení to neudělá nic ale když to po chvilce resetuju tak to zobrazuje.Asi to bylo tím oscilátorem a časováním.Ještě mi není jasná jedna věc když napíšu LCD_PUTCH("A"); tak to vypíše nesmysl ale když dám LCD_PUTCH(0x41); což je ascii kod pro A tak to zobrazí správně.Jak se v c zapisujou ascii znaky? v asm stačilo napsat něco jako a'A' a pochopil to ale v c nevim.

Uživatelský avatar
Ruprecht
Příspěvky: 1114
Registrován: 28 zář 2005, 02:00
Bydliště: ZČ + JM

#17 Příspěvek od Ruprecht »

Co lcd_putch('A') s jednoduchýma uvozovkama?
Kampaň, účelovka, nepodepsal, Palermo, ODS, Kalousek, je líp a jsou na to čísla, nastudujte si to.

Uživatelský avatar
ondraN
Příspěvky: 209
Registrován: 16 srp 2022, 02:00
Bydliště: Roztoky

#18 Příspěvek od ondraN »

V C je pro znak nutné použít jednoduché uvozovky. Pro řetězec jsou to dvojité. Řetězec se zásadně předává odkazem, takže proto ti to vypisovalo blbosti.

Uživatelský avatar
nop
Příspěvky: 158
Registrován: 18 kvě 2007, 02:00

#19 Příspěvek od nop »

Díky bylo to těma uvozovkama při jednom znaku to chce ty jednoduchý.

Uživatelský avatar
nop
Příspěvky: 158
Registrován: 18 kvě 2007, 02:00

#20 Příspěvek od nop »

Ještě pro Mahonyho ten oscilator INTIO2 byl nastavanej dobře teď jsem koukal do datasheetu a tam píšou na straně 48

When the oscillator is configured for the internal
oscillator (FOSC<3:0> = 100x), the PLL can be
enabled only when the HF-INTOSC frequency is
4, 8 or 16 MHz.


Otázka je proč ten displej nefungoval.Ledka blikala jak měla.

Uživatelský avatar
nop
Příspěvky: 158
Registrován: 18 kvě 2007, 02:00

#21 Příspěvek od nop »

Tak poslední info a otázka.Vypadá to že jsem narazil na rychlostní limit těch displejů když PIC jede na 8Mhz tak to chodí spolehlivě ale při zvýšení na 16Mhz už to nejede setkali nebo zkoušeli jste to někdo?

Uživatelský avatar
ondraN
Příspěvky: 209
Registrován: 16 srp 2022, 02:00
Bydliště: Roztoky

#22 Příspěvek od ondraN »

Problém může být příliš krátký čas na init displeje. Tady je to skryté v modulu xlcd, takže není jasné, jak se určuje čas po který trvá init. Jedině se podívat na osciloskopu, za jaký čas tam jdou data při 8MHz a 16MHz. Ale problém může být i v jiném časování signálů. Pokud je modul nepředkompilovaný, šlo by šáhnout do zdrojáku a upravit to.

Uživatelský avatar
nop
Příspěvky: 158
Registrován: 18 kvě 2007, 02:00

#23 Příspěvek od nop »

Současný stav je v příloze na 8Mhz to chodí na 16Mhz někdy projde init ale zobrazuje to nesmysly někdy ani neprojde init.
Přílohy
LCD.rar
(4.42 KiB) Staženo 20 x

Uživatelský avatar
ondraN
Příspěvky: 209
Registrován: 16 srp 2022, 02:00
Bydliště: Roztoky

#24 Příspěvek od ondraN »

Měnil jsi při nastavení na 16MHz i tohle v hw_set.h?
#define _XTAL_FREQ 8000000
Myslím, že podle téhle konstanty se vypočítává zpoždění ve funkci __delay_us(). Stejnou definici máš i v main.c tak ji tam odstraň.
Já dělám s STM32, takže tyhle vnitřní záležitosti okolo picu neznám, ale je to u těch MCU dost podobné.
Pokud to nezabere, tak bych zkusil všechny časy v tom delay při práci s displejem zvojnásobit.

Uživatelský avatar
nop
Příspěvky: 158
Registrován: 18 kvě 2007, 02:00

#25 Příspěvek od nop »

jj to jsem měnil všude bez efektu ty časy zkusím prodloužit

Uživatelský avatar
nop
Příspěvky: 158
Registrován: 18 kvě 2007, 02:00

#26 Příspěvek od nop »

Tak už jsem podezříval i kompilátor XC8 že mrší kod jak někde na foru microchipu psali,tak jsem to přepsal do asm a opět nic problém byl v HW.Mám tu 7 displejů a vypadá to že 6 z nich je k.o protože ten 7 se stejným kodem funguje.

Uživatelský avatar
ondraN
Příspěvky: 209
Registrován: 16 srp 2022, 02:00
Bydliště: Roztoky

#27 Příspěvek od ondraN »

A víš kolik bys ušetřil času, kdybys měl USB analyzátor za pár stovek a viděl co tam leze?
Na druhou stranu, procvičení JSA není taky na škodu :P

Uživatelský avatar
asdf
Příspěvky: 64
Registrován: 06 říj 2022, 02:00

#28 Příspěvek od asdf »

Ještě mě napadlo, jestli by nestálo za to zkusit tohle:

void LCD_STROBE(void)
{
__delay_us(10);
E_PIN = 1;
__delay_us(10);
E_PIN =0;
__delay_us(10);
}

Uživatelský avatar
nop
Příspěvky: 158
Registrován: 18 kvě 2007, 02:00

#29 Příspěvek od nop »

To ondraN ten analyzator jsem nakonec vytáhnul,ono to totiž ze začátku vypadalo že ty displeje 2x20 na kterých jsem to testoval budou chodit,protože fungovaly-nefungovaly.Nakonec byli asi nejaky načatý a chcíply ůplně.

To asdf díky ale nakonec to byla nejspíš chyba HW a to že 6 displeju ze 7 bylo chcíplejch,i když jen ležely nepoužitý..

No a nakonec mám tu sdisplej Raystar RG12864B-BIW-V ten nebyl nikdy použitej a skladovanej v normální pokojové teplotě,a včera jsem ho chtěl otestovat a po připojení na napájení ten displej buď chudáka 7805 přetíží nebo zkratuje protože ledka která je za 7805 zhasne.Setkal jste s tím někdo? Je možný že by ty LCD takhle chcípaly jen tím že někde třeba 3 roky leží?

Ještě tu mám displej 240x128 kompatibilní s T6963 neznámého původu ten jsem chtěl testnout s arduinem a knihovnou U8glib ale ten můj displej má jaksi navíc pin MD2 takže zatím to odkládám.Leda by jste někdo měl plnou verzi mikroC a byl ochoten mi zkompilovat exampl co tam k tomu mají.

termit256
Příspěvky: 10071
Registrován: 06 pro 2007, 01:00

#30 Příspěvek od termit256 »

Osobne bych to videl spis na nejakou chybu v casovani signalu. Kdyz jsem rozbehaval jakesi graficke lcd od winstaru, taky mi to delalo. Nektere jely, vetsina ne. Az jsem chybku nasel a opravil, jely vsechny.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“