tak asi chyba kompilátoru,měl jsem tam verzi 1.33 a zkusil jsem kompilaci verzí 2.36 a prošlo to což je nějaký divný.Pokud by jste někdo měl tušení proč prosím napište mi to.Děkuji
No ono sestavení programu v C probíhá podle nějaké logiky (make), kde moderní IDE pomáhají nějakým způsobem...
Občas pomůže vytvořit nový projekt a .c, .h soubory tam nasypat znova.
No co jsem vyčetl kdesi na foru microchipu tak nejsem jeinej komu to tohle dělalo a pokud jsem to dobře pochopil tak někdo u microchipu naprosto ženijálně vymyslel že ke starší verzi kompilátoru dá o něco novější knihovny a pak si to takhle nerozumí.Ale ono už je to jedno protože si tu hraju se starším LCD displejem 2x16 znaku nechce to chodit a datasheet od něja taky není je to typ OM1628-GNN a furt to nechce chodit až teď jsem našel prastarej program v asm o kterým vím že to s ním chodilo a nepoužíval jsem tam časování jako teď,ale čtení BUSY flagu tak to přepíšu..
Jj dík našel jsem ho na jednom starym dvd ale furt to mrcha nechodi a nevím proč.Přitom jsem jen přepsal starej asm program o kterym na beton vim že chodil na pic16f876 do C pro pic18f26k80.
Tak jsem se k tomu zas na chvilku dostal,desku s 16F876 už nemám takže tenhle způsob ozkoušení je mimo hru.Displeje stále nechodí zkoušel jsem to znouze i v mikrobasicu a nic takže teď vezmu původní asm a zkusím to na 16F1509 a pokud to nebude chodit je po nich.Ale abych se vrátil k původnímu dotazu. Mám soubor main.c v něm volám funkci LCD_putchar("a") dekalrace této funkce je v souboru xlcd.h verze kompilátoru 1.33 píše chybu viz.1 příspěvek verze 2.36 to sežere normálně bez chyby. Ale když deklaraci funkce přesunu do souboru main.c tak to sežere i verze 1.33 to vypadá jako kdyby ta starší verze includovala soubor xlcd.h bůhví kam.Zatím co novější verze to dá pěkně na začátek a tím pádem je to bez chyby.By mě zajímalo jak to je...
Zdravím snad nebude vadit když se zeptám zde,už jse, zkusil 5 LCD displejů a bezvýsledně mám 3 displeje 2x16 na těch se rozsvítí horní řádek a polovina spodního u těch předpokládám že jsou k.o Potom mám 2x20 a u těch svítí jen horní žádek máte prosím někdo ověřenej kód pro 2x16 a 2x20 o který byste byli schopni se podělit.Kdysi mo to chodilo s tímhle http://prochazka.clanweb.eu/index.php?a=pic/lcd_4bit
ale teď ani ťuk.Díky
Kód momentálně nemám, mám ho zahrabanej někde v archivu taky na DVD a není moc čas to hledat, ale když svítí jeden řádek a druhej ne, tak ti neproběhl ani init toho displeje.
Na té odkazované stránce jsem nenašel frekvenci krystalu k tomu kódu, ale je to tam samej delay, takže na tom záleží, a ten PIC18F26K80 umí až do 64MHz. Máš dobře nastavený oscilátor? Kmitá ti u toho 16F877 krystal (nebo máš nastavenej dobře ten 16F1509, na kterým to tedy asi zkoušíš, jestli jsem to dobře pochopil)?
jj na te strance je to na 4Mhz tu 16f1509 mam na 4Mhz tam jsem se pohnul ale sviti prvni radek a pulka druhyho. U tech 2x20 displeju sviti jen horni radek tam adi ten init neprobehne.dik na ten asix mrknu
Nijak jsem s tím nepohnul můžete se mi prosím na to někdo mrknout ? dík
kód:
/*
* File: main.c
* Author: nop
*
* Created on 20. dubna 2020, 19:36
*/
// CONFIG1L
#pragma config RETEN = OFF // VREG Sleep Enable bit (Ultra low-power regulator is Disabled (Controlled by REGSLP bit))
#pragma config INTOSCSEL = HIGH // LF-INTOSC Low-power Enable bit (LF-INTOSC in High-power mode during Sleep)
#pragma config SOSCSEL = DIG // SOSC Power Selection and mode Configuration bits (High Power SOSC circuit selected)
#pragma config XINST = OFF // Extended Instruction Set (Enabled)
// CONFIG1H
#pragma config FOSC = INTIO2 // Oscillator (Internal RC oscillator)
#pragma config PLLCFG = ON // PLL x4 Enable bit (Disabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor (Disabled)
#pragma config IESO = OFF // Internal External Oscillator Switch Over Mode (Disabled)
// CONFIG2L
#pragma config PWRTEN = OFF // Power Up Timer (Disabled)
#pragma config BOREN = SBORDIS // Brown Out Detect->Enabled in hardware, SBOREN disabled
#pragma config BORV = 3 // Brown-out Reset Voltage bits->1.8V
#pragma config BORPWR = ZPBORMV // BORMV Power level (ZPBORMV instead of BORMV is selected)
// CONFIG2H
#pragma config WDTEN = OFF // Watchdog Timer (WDT disabled in hardware; SWDTEN bit disabled)
#pragma config WDTPS = 1048576 // Watchdog Postscaler (1:1048576)
// CONFIG3H
#pragma config CANMX = PORTB // ECAN Mux bit (ECAN TX and RX pins are located on RB2 and RB3, respectively)
#pragma config MSSPMSK = MSK7 // MSSP address masking (7 Bit address masking mode)
#pragma config MCLRE = ON // Master Clear Enable (MCLR Disabled, RE3 Enabled)
/*
//PIE registry zapinaji interrupt jednotlivejch periferii
//Bit7 podle DS je PSPIE
//Parallel Slave Port Read/write interrupt enable bit
* //ale naseptavac ho nejak nezna
PIE1bits.ADIE = 0; //A/D converter Interrupt enable bit
PIE1bits.RC1IE = 0; //Eusart1 Receive interrupt enable bit
PIE1bits.TX1IE = 0; //Eusart1 Transmit interrupt enable bit
PIE1bits.SSPIE = 0; //MSSP interrupt enable bit
PIE1bits.TMR1GIE = 0; //TMR1 gate interrupt Enabli bit
PIE1bits.TMR2IE = 0; //TMR2 Overflow Interrupt Enable bit
PIE1bits.TMR1IE = 0; //TMR1 Overflow Interrupt Enable bit
*/
PIE1 = 0b00000000;
/*
PIE2bits.OSCFIE = 0; //bit7 Oscilator fault Interrupt enable bit
//bit 6 Neimplementováno
//bit 5 taky
//bit 4 taky
PIE2bits.BCLIE = 0; //bit 3 Bus colision interrupt enabli bit
PIE2bits.HLVDIE = 0; //bit 2 High/Low Voltage detect interrupt enable bit
PIE2bits.TMR3IE = 0; //bit 1 TMR3 overflow interrupt enable bit
PIE2bits.TMR3GIE = 0; //bit 0 TMR3 gate interrupt enable bit
*/
PIE2 = 0b00000000;
/*
//bit 7 není
//bit 6 taky ne
PIE3bits.RC2IE = 0; //bit 5 Eusart2 Recieve interrupt enable bit
PIE3bits.TX2IE = 0; //bit 4 Eusart2 Transmit interrupt enable bit
PIE3bits.CTMUIE = 0; //bit 3 CTMU interrupt enable bit
PIE3bits.CCP2IE = 0; //bit 2 CCP2 interrupt enable bit
PIE3bits.CCP1IE = 0; //bit 1 CCP1 interrupt enable bit
//bit 0 nepritomen
*/
PIE3 = 0b00000000;
/*
PIE4bits.TMR4IE = 0; //TMR4 Overflow interrupt enable bit
PIE4bits.EEIE = 0; //Data EEDATA/FLASH write operation interrupt enable
PIE4bits.CMP2IE = 0; //CMP2 interrupt enable bit
PIE4bits.CMP1IE = 0; //CMP1 interrupt enable bit
//bit 3 neprizomen
PIE4bits.CCP5IE = 0; //CCP5 interrupt enable bit
PIE4bits.CCP4IE = 0; //CCP4 interrupt enable bit
PIE4bits.CCP3IE = 0; //CCP3 interrupt enable bit
*/
PIE4 = 0b00000000;
/*
PIE5bits.IRXIE = 0; //Invalid message received interrupt enable bit
PIE5bits.WAKIE = 0; //Bus wake-up activity interrupt enable bit
PIE5bits.ERRIE = 0; //Error interrupt enable bit (multiple sources in COMSTAT register)
PIE5bits.TXB2IE = 0; //Transmit buffer 2 interrupt enable bit
PIE5bits.TXB1IE = 0; //Transmit buffer 1 interrupt enable bit
PIE5bits.TXB0IE = 0; //Transmit buffer 0 interrupt enable bit
PIE5bits.RXB1IE = 0; //Receive buffer 1 interrupt enable bir
PIE5bits.RXB0IE = 0; //bit 0 Mod 0 - Receive buffer 0 enable bit
//Mod 1 - unimplemented
//Mod 2 - FIFOFIE FIFO full interrupt enable bit
*/
PIE5 = 0b00000000;
/*
//bit 7 je PSPIP Paralel slave port Read/Write
//interrupt priority bit ale naseptavac to nejak nezna
IPR1bits.ADIP = 0; //A/D coverter interrupt priority bit 0-LOW 1-HIGH
IPR1bits.RC1IP = 0; //Eusart1 Receive interrupt priority bit
IPR1bits.TX1IP = 0; //Eusart1 Transmit interrupt priority bit
IPR1bits.SSPIP = 0; //Master synchronous serial port interrupt priority bit
IPR1bits.TMR1GIP = 0; //TMR1 gate interrupt priority bit
IPR1bits.TMR2IP = 0; //TMR2 to PR2 Match interrupt priority bit
IPR1bits.TMR1IP = 0; //TMR1 overflow interrupt priority bit
*/
IPR1 = 0b00000000;
/*
IPR2bits.OSCFIP = 0; //bit7 Oscilator Fail interrupt priority bit
//bity 6-4 nejsou
IPR2bits.BCLIP = 0; //bit3 Bus collsion interrupt priority bit
IPR2bits.HLVDIP = 0; //bit2 High/Low Voltage detect interrupt priority bit
IPR2bits.TMR3IP = 0; //bit1 TMR3 Overflow interrupt priority bit
IPR2bits.TMR3GIP = 0; //bit0 TMR3 Gate interrupt priority bit
*/
IPR2 = 0b00000010;
/*
//bity 7-6 nejsou v IPR3
IPR3bits.RC2IP = 0; //bit5 Eusart2 Receive interrupt priority bit
IPR3bits.TX2IP = 0; //bit4 Eusart2 Transmit interupt ptiority bit
IPR3bits.CTMUIP = 0; //bit3 CTMU interrupt priority bit
IPR3bits.CCP2IP = 0; //bit2 CCP2 interrupt priority bit
IPR3bits.CCP1IP = 0; //bit1 CCP1 interrupt priority bit
//bit0 neni
*/
IPR3 = 0b00000000;
/*
IPR4bits.TMR4IP = 0; //bit7 TMR4 Overfloe interrupt priority bit
IPR4bits.EEIP = 0; //bit6 EE interrupt priority bit
IPR4bits.CMP2IP = 0; //bit5 CMP2 interrupt priority bit
IPR4bits.CMP1IP = 0; //bit4 CMP1 interrupt priority bit
//bit3 neni
IPR4bits.CCP5IP = 0; //bit2 CCP5 interrupt priority bit
IPR4bits.CCP4IP = 0; //bit1 CCP4 interrupt priority bit
IPR4bits.CCP3IP = 0; //bit0 CCP3 interrupt priority bit
*/
IPR4 = 0b00000000;
1. return; na konci hw_set.c tam nemá co dělat
2. xc.h stačí připojit jen jednou v main.c
3. CONFIG1H: FOSC = INTIO2 = FOSC<3:0> val. 1000 = internal RC oscillator
4. Až si správně nastavíš oscilátor, budeš muset kontrolovat bity OSTS a HFIOFS, tj. počkat až ti těch 64 MHz správně naběhne
5. Používej logický analyzér
Kontrolu těch bitů tam dopíšu,ale je divný že ta ledka na konci programu blikala i tak cca v sekundovejch intervalech jak má.Teď na to už nemám čas neb musím za chvilku do práce.
Časy uváděny v GMT + 1 hodina Jdi na stránku 1, 2, 3, 4, 5Další
Strana 1 z 5
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.