ATMEL 89C2051 komunikacia z displayom cez I2C

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

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
Mahoney
Příspěvky: 347
Registrován: 26 říj 2019, 02:00

#16 Příspěvek od Mahoney »

Ne, to bude dobrý… Záleží jak moc chce on sám, nikdo jinej to za něj neudělá. Možností má víc, buď si koupí lepšího brouka, a nebo si koupí knížku a začne od začátku od Blink atd. Ony ty 89C2051 nejsou špatný brouci (a hlavně jak jsi psal, spolehlivost), mám je taky rád, ale všechno má své meze, je to jako kdyby chtěl po Felicii, aby předjela na dálnici Porsche, nebo odtáhla 10 tun nákladu - asi to nedokáže, ale na rozumnou jízdu po městě to stačí.

Uživatelský avatar
kajsmentke
Příspěvky: 160
Registrován: 30 srp 2014, 02:00

#17 Příspěvek od kajsmentke »

ZdenekHQ píše:V tom je právě ten problém, když to píšeš v JSA, tak šetříš každej byte paměti, takže si tu vlastní knihovnu pro každej externí čip nějak optimalizuješ. Protože napsat to univerzálně, tak to bude nafouknutý jak žaba. Něco jinýho je EEPROM, FRAM či CO2 čidlo. Bohužel.

Vytáhl jsem to z nějakýho starýho projektu, momentálně používám spíš SPI.

Tohle je jen část a musí si to upravit podle potřeby. To asi nebude jeho nejlepší cesta.

Kód: Vybrat vše

	;======*************************==================
	;======PODPROGRAMY - START + STOP + ACK ...=======
	;======*************************==================

Start_bit:	
;*********
	setb	sda		;toto se predpoklada
	call	Wait_I2C
	setb	scl
	call	Wait_I2C
	clr	sda
	call	Wait_I2C
	clr	scl
	call	Wait_I2C
	setb	sda
	call	Wait_I2C_zpracuj

	;KONECNY STAV
	;============
	;clr = 0
	;sda = 1

	ret

Sd_DWA:
;********
	mov	r0,#8		;8 cyklu
Senx_1:	
	rlc	a
	mov	sda,c
	call	Wait_I2C
	setb	scl
	call	Wait_I2C
	clr	scl
	call	Wait_I2C
	djnz	r0,Senx_1	
	setb	sda
	call	Wait_I2C_zpracuj
	ret

Test_ack:
;*******

	setb	sda		;ACK
	call	Wait_I2C
	setb	scl
	call	Wait_I2C
	mov	c,sda
	clr	scl
	mov	Stav,c
	call	Wait_I2C_zpracuj
	ret

Posli_ack:
;*********
	clr	sda		;ACK
	call	Wait_I2C
	setb	scl
	call	Wait_I2C
	clr	scl
	call	Wait_I2C
	setb	sda
	call	Wait_I2C_zpracuj
	ret

Stop_bit:
;********
	clr	sda		;STOP bit
	call	Wait_I2C
	setb	scl
	call	Wait_I2C
	setb	sda
	call	Wait_I2C
	clr	scl
	call	Wait_I2C
	setb	sda
	call	Wait_I2C_zpracuj
	ret

;*****************
;*** INIT I2C  ***
;*****************

Clear_i2c:

	;vychozi nastaveni bitu
	;----------------------
        clr	Stav
	clr	scl	
	setb	sda
	mov	r1,#32d		;max pocet chyb init eeprom
	
	mov	r0,#9
Cl_1:

	call	Wait_I2C
	setb	scl
	call	Wait_I2C
	mov	c,sda
	jc	Cl_2
	mov	r0,#9		;prisel nulovy bit,musim znovu

	;KONTROLA CHYB
	;=============
	dec	r1
	mov	a,r1
	jnz	Cl_2
	setb	Stav
	ret			;chyba init eeprom
	
Cl_2:
	clr	scl
	call	Wait_I2C
	djnz	r0,Cl_1	


				;sda = 1 = vstupni
				;scl = 0 = ready
	call	Stop_bit
	ret
	
	;==========================================
	;	     CASOVACI PAUZY
	;==========================================

Wait_I2C:
;********
;pulka periody
;zakladni casovani I2C
;pomalejsi kvuli HW key

	
	call	Wait_5us
	call	Wait_5us
	ret
	
		
Wait_I2C_zpracuj:
;****************
;cas pro HW key na zpracovani

	;klasicka EEPROM

	call	Wait_5us
	ret
	

	
Wait_I2C_WRITE_int_EE:
;*********************
;cas pro HW key na zapis do interni EEPROM
;melo by stacit 3.4ms, ale i READ potrebuje timeout 10ms
	
        call	Wait_10ms
	ret
	
Wait_I2C_READ_int_EE:
;*********************
;cas pro HW key na zapis do interni EEPROM
;READ potrebuje timeout 10ms
	
        call	Wait_10ms
	ret
	

no jo, len ako to pouzit... v Pascale viem sice vkladat aj ASM kod, ale ako tomu poslem nejaky znak na konkretnu poziciu, to mi v tom kode nieje jasne :oops:

Uživatelský avatar
kajsmentke
Příspěvky: 160
Registrován: 30 srp 2014, 02:00

#18 Příspěvek od kajsmentke »

https://www.youtube.com/watch?v=fnGzRqV ... osProjects

Tuto pouziva chlapik ATTINY85 (co nieje o nic vykonnejsi stroj) a uplne rovnaky display aky mam ja.

akurat to nema v Pascale
:oops:

Naozaj skoda ze Mikroe MIcroPascal nema nejaku sirsiu podporu ani od samotneho vyrobcu aj ked platenu verziu predava za vyse 200USD :(

nixdorf
Příspěvky: 540
Registrován: 06 kvě 2017, 02:00

#19 Příspěvek od nixdorf »

progres, fajnšmeker už kuká po AVR... :D

V dobrom, začni najskôr jednodušším, menším sústom - napríklad hello world, a v céčku, s displejom, ktorý má radič dobre zdokumentovaný - napríklad monochrom HD44780, klasika znakový displej 16 x 2, ktorý už má font v sebe - žiadne grafické farebné kontrolery prozatím.
A na Pascal sa fakt vyser. Nemôžeš sa vrtať v predpotopných platformách, ak o programovaní (prepáč, mikropascal ja nenazývam programovanie) nemáš ani šajnu. Zdeněk ti totiž posielal príklad, ako softwarovo posielať údaje cez IIC ako takej, celá implementácia s tým grafickým displejom by ťa ešte len čakala, musíš tomu radiču displeja posielať príkazy. A nebolo by to v pascale ani zďaleka.
Rovnako, ak ti neni po chuti programovanie v jazyku symbolických adries, budeš musieť pouvažovať po inej platforme, ako je 8051.
Naposledy upravil(a) nixdorf dne 01 kvě 2023, 10:58, celkem upraveno 1 x.

Uživatelský avatar
Mahoney
Příspěvky: 347
Registrován: 26 říj 2019, 02:00

#20 Příspěvek od Mahoney »

To se dost mýlíš, ATtiny85 je o hodně výkonnější než 89C2051, a navíc má i 4x více pamětí.

Arduino IDE ho navíc dokáže podporovat přímo, takže bych ti klidně doporučil jít touto cestou… v tom IDE můžeš psát i v C (Pascal se C v jistých ohledech podobá, přechod nebude těžký, ale zdaleka není tak výkonný a praktický jako C), a navíc si to můžeš osahat i tak jak je, tedy programování ve Wiringu (což je trochu poupravené C++). Co je důležité - číst datasheety! (nejen od mikrořadičů, ale od všech součástek).

Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#21 Příspěvek od Celeron »

Kdyť nemusí u 2051 zůstat. Silabs dělá s jádrem 51 podstatně lepší a výkonější "děla" třeba se 100MHz hodinama a jednocyklovým jádrem.
A taky jsem zvědavej na ty dnešní AVR potvory a spol, jestli tu budou v nezměněný podobě ještě za 43 let jako 51.
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
pocitujlasku
Příspěvky: 1757
Registrován: 12 pro 2005, 01:00

#22 Příspěvek od pocitujlasku »

Ako niekto, kto zacal s pascalom v 1996 na skole a neskor programoval v Delphi (firemne aplikacie, dost rozsiahle) ti mozem povedat: zabudni na pascal. Svoje dni slavy ma za sebou a v dnesnej dobe v tom programovat je iba zbytocne trapenie. Ak vies dobre pascal, tak C-cko je otazka precitania zakladov, aby si pochopil princip a pozrel si syntax. Ale ako vravieval moj ucitel na strednej: vsetky jazyky su o tom istom, len sa inak zapisuju.
No vidis, a tak si sa bal

Uživatelský avatar
Mahoney
Příspěvky: 347
Registrován: 26 říj 2019, 02:00

#23 Příspěvek od Mahoney »

Celeron: A ještě Dallas a Cypress (dneska je to Analog Devices a Infineon), a ještě Microchip měl něco co patřilo kdysi SST, ale nevím jestli to už nezrušil… Ale ani od jedný z těch firem tu nikde nic neseženeš (myšleno u firem "pro bastlíře"), maximálně vyškrabeš v TME nějaký zbytky za nekřesťanský peníze - to už je lepší číňan (CH552, STC8.....) a chvíli si počkat (Ebay/Aliexpress), cena je přijatelná.

Uživatelský avatar
kajsmentke
Příspěvky: 160
Registrován: 30 srp 2014, 02:00

#24 Příspěvek od kajsmentke »

pocitujlasku píše:Ako niekto, kto zacal s pascalom v 1996 na skole a neskor programoval v Delphi (firemne aplikacie, dost rozsiahle) ti mozem povedat: zabudni na pascal. Svoje dni slavy ma za sebou a v dnesnej dobe v tom programovat je iba zbytocne trapenie. Ak vies dobre pascal, tak C-cko je otazka precitania zakladov, aby si pochopil princip a pozrel si syntax. Ale ako vravieval moj ucitel na strednej: vsetky jazyky su o tom istom, len sa inak zapisuju.
ja som tiez orbil cely zivot z Pascalom resp neskor Delphi. Pascal je pekne citatelny kod ma prehladnu strukturu. Mne sa uz nechce zvykat si na novu syntax. Pises ze vsetky jazyky su o tom istom, ale zaroven si ma clovek vybrat Cecko :)


Ono tie kniznice pre mikroPASCAL existuju ale pre PIC
https://download.mikroe.com/documents/c ... ibrary.htm

toto prostredie spolocnost Mikroe zjavne udrziava stale pri zivote. Pascal pre 8051 sa zjavne prestal rozvijat v roku 2013 i ked ho stale oficialne predavaju za celkom mastne sumy :x

Mozno by to chelo namiesto 8051ky pouzit radu PIC. Koniec koncov ked to programujem vo vyssiom jazyku tak RISC architektura ma velmi trapit nemusi.

Uživatelský avatar
Mahoney
Příspěvky: 347
Registrován: 26 říj 2019, 02:00

#25 Příspěvek od Mahoney »

kajsmentke píše:ale zaroven si ma clovek vybrat Cecko
Protože je to i o komunitě, C je nejrozšířenější, tudíž k němu je největší podpora :wink: Ale nikdo tě nenutí, trap se, když chceš…

Taky jsem kdysi chvíli psal v Pascalu, pochopil jsem rychle. Dneska bych do toho nešel.

Uživatelský avatar
pocitujlasku
Příspěvky: 1757
Registrován: 12 pro 2005, 01:00

#26 Příspěvek od pocitujlasku »

Myslel som, ze principom su vsetky rovnake, ale kazdy je vhodny pre iny ucel.
Ja napr. mcu pisem v C, alebo arduino (co je vlastne tiez C), rozne rychle skripty - bud powershell na win, alebo bash/python v linuxe, programy pre pc - C#...
Ty vies napisat to iste v x jazykoch, ale cas pisania a rychlost a velkost programu je ina.

Ccko sa dost podoba pascalu, tiez je prehladne a citatelne.
Aj pc programy som dlhe roky pisal v delphi, az kym som nepresiel na C# a zistil som, ze ten isty kod viem zapisat prehladnejsie a hlavne pri vacsich projektoch som dost narazal na obmedzenia delphi, ktore v c# nie su.
Ved nakoniec, ten, kto vymyslel delphi, vymyslel aj c#
No vidis, a tak si sa bal

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#27 Příspěvek od ZdenekHQ »

Já třeba taky jedu v Pascalu dodnes, ale jen proto, že mám ty programy prostě napsaný a jen tam "dolepuju" případné další funkce či procedury a na komunikaci třeba přes Modbus to stačí.

Chlap se třeba zblázní, vymyslí si vlastní protokol, no tak si to jen upravím a nemusím shánět program, co umí atyp CRC.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

Uživatelský avatar
nostalcomp
Příspěvky: 43
Registrován: 09 lis 2022, 01:00

#28 Příspěvek od nostalcomp »

Na stránkách Atmelu (dnes Microchip) se dala stáhnout aplikační poznámka a zdroják pro připojení a ovládání I2C EEPROM AT24xx k jednočipu x51. Zdroják (podobný tomu co postoval ZdeněkHQ) byl bohatě komentovaný a obsahoval univerzální sadu rutin pro I2C komunikaci. Postnul bych to sem rovnou, ale nemám to v PC, u kterého právě sedím.

Nemusí to být vázané jen na ty EEPROM a pokud se z toho vynechají rutiny pro blokové zápisy/čtení dat, tak to ani nebude dlouhé a bude to univerzálně použitelné pro I2C obvody. Osobně jsem to zkoušel s 8951/52 a také jsem to přepisoval pro 8080 (PMI-80). I s primitivním filesystémem jsem se vešel do 1KB (a to nemá 8080 tak výkonné instrukce, jako x51). Ale pokud se má dodržet ten 20-pin x51, volil bych raději 89C4051. Přeci jen má 2x tolik paměti.

Ale ladit něco na těchto 2051/4051 procesorech je fakt vopruz (ven z patice, programátor, zpátky do patice). Možná bych ještě někde vyštrachal DPS na ladící adaptér pro 89C2051/4051. Adaptér ze zasunul do 20-pinové patice 2051/4051, ale byl na něm velký 89S51/52, který je možné programovat pohodlněji přes ISP. Po odladění stačilo program nahrát do malého procesoru a bylo hotovo. Ale i to je dnes zastaralé. Pokud už někdo vyloženě trvá na x51, může použít řadu LP se sériovým bootloaderem.

Uživatelský avatar
Celeron
Příspěvky: 16140
Registrován: 02 dub 2011, 02:00
Bydliště: Nový Bydžov

#29 Příspěvek od Celeron »

nostalcomp píše: Možná bych ještě někde vyštrachal DPS na ladící adaptér pro 89C2051/4051. Adaptér ze zasunul do 20-pinové patice 2051/4051, ale byl na něm velký 89S51/52, který je možné programovat pohodlněji přes ISP. Po odladění stačilo program nahrát do malého procesoru a bylo hotovo. Ale i to je dnes zastaralé.
Když máš 85C154 s přístupovým "prcířem" na zádech a hardware emulátor k tomu, tak je ladění na tomhle zařízení jedna báseň. Všecko co se děje v procíku máš na displeji PC. Jen si musíš nadělat redukce z DIL40 na jiný pouzdra, co mají procíky řady 51. Akorát že to má řadič na ISA sběrnu, takže nutno udržovat nějakou živou PII nebo PIII, co ještě měli ISA štekr.
Jirka

Proč mi nemůže všechno chodit hned ?!!

Uživatelský avatar
kajsmentke
Příspěvky: 160
Registrován: 30 srp 2014, 02:00

#30 Příspěvek od kajsmentke »

viete mi poradit nejaky vhodny display ? ktory ma teda aj tie vstavane fonty, pokojne nejake LCD 2x20 znakov alebo 4x20 znakov, idealne aby piny pasovali do kotaktneho pola. Najlepsie z paralelnym odosielanim kodu znaku a jeho pozicie

Odpovědět

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