Svetelektro.com

Svetelektro.com

Meno:
Heslo:
SVETELEKTRO • LCD20x4 I2C

LCD20x4 I2C

C,C++,C#

Moderátori: psichac, Moderátori

Re: LCD20x4 I2C

Odosla┼ąod gogo » 02 Feb 2018, 21:27

zdrav├şm C-─Źkarov,

dnes m├ím rozlietan├Ż de┼ł, ale u┼ż som u toho a m├ím
radostnú správu. Podarilo sa :applause: .
Bolo to t├Żm zl├Żm bitov├Żm s├║─Źtom | vo funkcii lcdcmd a lcdchar.
─Äakujem za pomoc!

E┼íte by som sa v├ís op├Żtal ako je s prip├íjan├şm kni┼żn├şc.
V tomto programe som si chcel najprv kni┼żnicu delay
s ─Źasov├Żmi funkciami a kni┼żnicu i2c s funkciami zbernice I2C
pripoji┼ą do hlavn├ęho programu, ale vypisovalo st├íle chyby.
Tak som to musel v┼íetko prep├şsa┼ą do tohoto jedn├ęho programu.
─îo je treba urobi┼ą, aby sa kni┼żnica korektne pripojila?
─Äakujem!
gogo
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 132
Zalo┼żen├Ż: 28.09.2009
Bydlisko: Skalica
Karma: 2

Re: LCD20x4 I2C

Odosla┼ąod Tribec Zacks » 02 Feb 2018, 21:39

zdar gogo, parada a gratz.
ak to chces rozdelit a mat to v samostatnom subore, tak si vytvor dalsie dva subory, jeden header file, napr i2c.h a source file i2c.c
do header subora napises prototyp funkcie void lcdcmd(unsigned char cmd); <-- len prototyp funkcie (kazdej pouzitej v kniznici), samotne cele funkcie das do i2c.c. v hlavnom subore main.c pridas #include "i2c.h", vo svojom IDE budes musiet niekde v projekte nastavit "include paths" a pridat tam kde sa tieto nachadzaju. tymto stylom mozes pekne rozdelit zdrojove subory do samostatnych adresarov, samotny projekt, header pre tvoj mcu, linker subor atd
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.
Tribec Zacks
Obr├ízok pou┼ż├şvate─ża
Pokro─Źil├Ż ─Źlen
Pokro─Źil├Ż ─Źlen
Pr├şspevky: 515
Vek: 35.75
Zalo┼żen├Ż: 26.06.2010
Bydlisko: Levice / Leixlip IRL
Karma: 20

Re: LCD20x4 I2C

Odosla┼ąod kamilko » 04 Feb 2018, 09:26

Hlavne rozlisovat medzi definiciou a deklaráciou premenej a pouzit extern pre premenu.
kamilko
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 160
Zalo┼żen├Ż: 21.10.2017
Bydlisko: kosice
Karma: 1

Re: LCD20x4 I2C

Odosla┼ąod gogo » 06 Feb 2018, 22:42

zdar kamilko,

Som len na za─Źiatku s C-─Źkom.
Viem ─Źo je defin├şcia a daklar├ícia funkcie.
─îo si myslel t├Żm pou┼żit├şm extern pre premenn├║ ???
gogo
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 132
Zalo┼żen├Ż: 28.09.2009
Bydlisko: Skalica
Karma: 2

Re: LCD20x4 I2C

Odosla┼ąod juraj77 » 06 Feb 2018, 22:49

Pokial viem tak extern v C treba pou┼żi┼ą vtedy ak m├í┼í program nap├şsan├Ż vo viacer├Żch s├║boroch.Pravdepodobne by ti Compiler vyhodil chybu ┼że nepozn├í premenn├║ a vtedy ju treba definova┼ą ako extern...
" Bez vody si viem predstavi┼ą ┼żivot, ale bez internetu a po─Ź├şta─Źa nie.."
juraj77
Obr├ízok pou┼ż├şvate─ża
Zasl├║┼żil├Ż ─Źlen
Zasl├║┼żil├Ż ─Źlen
Pr├şspevky: 1339
Vek: 38.49
Zalo┼żen├Ż: 23.09.2012
Bydlisko: Nitra
Paragraf: 22
Karma: 8

Re: LCD20x4 I2C

Odosla┼ąod Tribec Zacks » 06 Feb 2018, 23:46

gogo, ak mas napriklad look-up-table (eg. int array[x]...) definovanu v inom subore ako main.c a chces ju pouzit, tak ju musis znovu deklarovat v main ako extern int array[x]; inak ako pisal jurtaj dostanes kompiler error.
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.
Tribec Zacks
Obr├ízok pou┼ż├şvate─ża
Pokro─Źil├Ż ─Źlen
Pokro─Źil├Ż ─Źlen
Pr├şspevky: 515
Vek: 35.75
Zalo┼żen├Ż: 26.06.2010
Bydlisko: Levice / Leixlip IRL
Karma: 20

Re: LCD20x4 I2C

Odosla┼ąod gogo » 07 Feb 2018, 14:51

─Äakujem za info chalani !
gogo
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 132
Zalo┼żen├Ż: 28.09.2009
Bydlisko: Skalica
Karma: 2

Re: LCD20x4 I2C

Odosla┼ąod gogo » 09 Feb 2018, 21:23

U┼ż som tu zasa, zdravi C-─Źkarov.

chcel som to zasa niekam posun├║┼ą a sk├║┼íam komunik├íciu s RTC ds1307.
Myslel som, ┼że ke─Ć mi ide komunik├ícia cez I2C s expanderom pcf8574,
tak to p├┤jde aj s rtc, ale m├Żlil som sa :( . Je v tom nejak├í z├íludnos┼ą?
─îo by mala obsahova┼ą funkcia na ─Ź├ştanie, lebo t├íto mi rob├ş probl├ęm ako ju nap├şsa┼ą.
Na nete som na┼íiel vela funkcii, ale ka┼żd├í je dos┼ą odli┼ín├í.
Je treba rtc na za─Źiatku nejako inicializova┼ą? Lebo v DS som ni─Ź nena┼íiel.
Prid├ívam aj nejak├ę ─Źasti k├│du, ─Źi je to spr├ívne.

─Äakujem!

toto je funkcia pre zapis sekund:
void writesec(unsigned char hod)
{
i2c_start();
send(rtc_adr); // adresa rtc 0xD0 zapis
send(0x00); // register sekund
send(hod); // hodnota, ktora sa ma zapisat
i2c_stop();
}

toto je funkcia pre na─Ź├ştanie sekund:
void readsec()
{
unsigned char valsec;

i2c_start();
send(rtc_adr);
send(0x00);
i2c_stop();
i2c_start();
send(0xd1); // adresa - citanie
valsec=i2c_read();
i2c_stop();
}
gogo
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 132
Zalo┼żen├Ż: 28.09.2009
Bydlisko: Skalica
Karma: 2

Re: LCD20x4 I2C

Odosla┼ąod kamilko » 09 Feb 2018, 22:26

Adresu mas spravnu? Dostavas odpoved ACK od RTC?
kamilko
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 160
Zalo┼żen├Ż: 21.10.2017
Bydlisko: kosice
Karma: 1

Re: LCD20x4 I2C

Odosla┼ąod Tribec Zacks » 09 Feb 2018, 22:34

strana 8:

Bit 7 of Register 0 is the clock halt (CH) bit. When this bit is set to 1, the oscillator is disabled. When cleared to 0, the oscillator is enabled. On first application of power to the device the time and date registers are typically reset to 01/01/00 01 00:00:00
(MM/DD/YY DOW HH:MM:SS). The CH bit in the seconds register will be set to a 1.
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.
Tribec Zacks
Obr├ízok pou┼ż├şvate─ża
Pokro─Źil├Ż ─Źlen
Pokro─Źil├Ż ─Źlen
Pr├şspevky: 515
Vek: 35.75
Zalo┼żen├Ż: 26.06.2010
Bydlisko: Levice / Leixlip IRL
Karma: 20

Re: LCD20x4 I2C

Odosla┼ąod peterple » 10 Feb 2018, 20:15

funkcia readsec nie je spr├ívne. Mo┼żno aj nejak├║ hodnotu pre─Ź├şta┼í, ale si ju ulo┼ż├ş┼í do lok├ílnej premennej a t├í po skon─Źen├ş funkcie zanikne. Tak┼że sa k tej pre─Ź├ştanej hodnote u┼ż nijako nedostane┼í. Teda by mala vraca┼ą hodnotu a nie void.
Inak tam chybu nevid├şm, za predpokladu ┼że tie low level funkcie funguj├║ ako maj├║. I ke─Ć nerozumiem ako je tam signalizovan├í chyba.
Tie┼ż to nekonzistentn├ę pou┼żitie rtc_adr nie je pekn├ę.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1674
Vek: 51.49
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 45

Re: LCD20x4 I2C

Odosla┼ąod gogo » 11 Feb 2018, 15:51

Zdravim,

K:
adresa rtc je správna 0xD0.
T:
Bit CH v regisrty 0 m├ím v 0, tak┼że oscil├ítor ide.
P:
Ja som to tam zabudol nap├şsa┼ą, ale za funkciou i2c_stop
je e┼íte zobrazenie hodnoty. Ostatn├ę funkcie by mali by┼ą
v poriadku.

void readsec()
{
unsigned char valsec;

i2c_start();
send(rtc_adr);
send(0x00);
i2c_stop();
i2c_start();
send(0xd1); // adresa - citanie
valsec=i2c_read();
i2c_stop();
==============tu je ešte zobrazenie hodnoty
}

Mus├şm sk├║┼ía┼ą a hlada┼ą chybu, pre─Źo mi to nejde.

─Äakujem za rady!
gogo
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 132
Zalo┼żen├Ż: 28.09.2009
Bydlisko: Skalica
Karma: 2

Re: LCD20x4 I2C

Odosla┼ąod Tribec Zacks » 11 Feb 2018, 18:10

gogo, uz je to nejaky cas co som mal i2c na analyzatore, ale ak chces citat, tak by si nemal posielat stop command, je tam repeated start pre zariadenie, ak ho stopnes, tak device bude ocakavat zase svoju adresu, adresu registra a samotne citanie az potom, sekvencia by mala vypadat neak takto:
1. start command
2. adresa ic + write bit
3. adresa interneho registra
4. start znovu
5. adresa registra + read bit
6. citat zariadenie
7. stop command

ty mu posielas stop v medzicase
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.
Tribec Zacks
Obr├ízok pou┼ż├şvate─ża
Pokro─Źil├Ż ─Źlen
Pokro─Źil├Ż ─Źlen
Pr├şspevky: 515
Vek: 35.75
Zalo┼żen├Ż: 26.06.2010
Bydlisko: Levice / Leixlip IRL
Karma: 20

Re: LCD20x4 I2C

Odosla┼ąod peterple » 12 Feb 2018, 20:27

Ten stop a znovu ┼ítart by vadi┼ą nemal. S├şce sa to be┼żne rob├ş opakovan├Żm ┼ítartom ale nutnos┼ą to nieje. A ├íno po ┼ítart podmienke tam ide adresa zariadenia a naozaj tam aj ide (0xD0) plus nult├Ż bit do jednotky ┼że ─Ź├ştanie, tak┼że 0xD1. Potom u┼ż sa ─Ź├şta ko─żko len chce.
Ja tam chybu nevid├şm. Sk├┤r bude niekde inde.
A ─Źo vlastne vy─Źituje┼í? St├íle to ist├ę? Ak tam zap├ş┼íe┼í 00 tak st├íle ─Ź├şta┼í 00. Sk├║s zap├şsa┼ą aj in├║ platn├║ hodnotu a pre─Ź├şta┼ą sp├Ą┼ą. Najlep┼íie by bolo to odchytit┼ą skopom, ak je mo┼żnos┼ą.
Uk├í┼ż m├║dremu chybu a on sa ti po─Ćakuje. Uk├í┼ż chybu hlup├íkovi a on sa uraz├ş.
peterple
Ultimate ─Źlen
Ultimate ─Źlen
Pr├şspevky: 1674
Vek: 51.49
Zalo┼żen├Ż: 25.06.2013
Bydlisko: Krajn├ę
Karma: 45

Re: LCD20x4 I2C

Odosla┼ąod gogo » 12 Feb 2018, 22:14

Zdravim,

skúšal som to aj bez toho stopu a neišlo to.

Ja tam len raz zap├ş┼íem hodnotu, nastavim to a potom u┼ż len ─Ź├ştam sp├Ą┼ą
plyn├║ci ─Źas.
Mus├şm to cel├ę znova prerobi┼ą a zisti┼ą, kde rob├şm chybu.
gogo
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 132
Zalo┼żen├Ż: 28.09.2009
Bydlisko: Skalica
Karma: 2

Re: LCD20x4 I2C

Odosla┼ąod gogo » 26 Feb 2018, 21:42

Zdravim,

zabudol som sem hodi┼ą foto, funguje to, podarilo sa .
Chyba bola vo funkcii ─Ź├ştania i2c zbernice. Pri tom st├ílom
prepisovan├ş som tam mal jeden clock navy┼íe.
─Äakujem v┼íetk├Żm!
Pr├şlohy
rtc.jpg
gogo
Obr├ízok pou┼ż├şvate─ża
St├íly ─Źlen
St├íly ─Źlen
Pr├şspevky: 132
Zalo┼żen├Ż: 28.09.2009
Bydlisko: Skalica
Karma: 2

Re: LCD20x4 I2C

Odosla┼ąod Tribec Zacks » 26 Feb 2018, 21:58

Gratz. :thumbup:
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.
Tribec Zacks
Obr├ízok pou┼ż├şvate─ża
Pokro─Źil├Ż ─Źlen
Pokro─Źil├Ż ─Źlen
Pr├şspevky: 515
Vek: 35.75
Zalo┼żen├Ż: 26.06.2010
Bydlisko: Levice / Leixlip IRL
Karma: 20

Predchádzajúca

Nasp├Ą┼ą na C,C++,C#

Kto je pr├ştomn├Ż

U┼ż├şvatelia prezeraj├║ci si toto f├│rum: ┼Żiadny registrovan├Ż pou┼ż├şvate─ż a 1 hos┼ą.

Forums ©
Autor str├ínky je Ondrej Z├ívodsk├Ż(zawin), o graficky design sa star├í ─Żubo┼í Fabo(BUFU).

TOPlist

Powered by Copyright © UNITED-NUKE CMS. All Rights Reserved.
─îas potrebn├Ż k spracovaniu str├ínky 0.60 sek├║nd