ATMEL 89C2051 komunikacia z displayom cez I2C
Moderátor: Moderátoři
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čí.
- kajsmentke
- Příspěvky: 160
- Registrován: 30 srp 2014, 02:00
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
- kajsmentke
- Příspěvky: 160
- Registrován: 30 srp 2014, 02:00
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
Naozaj skoda ze Mikroe MIcroPascal nema nejaku sirsiu podporu ani od samotneho vyrobcu aj ked platenu verziu predava za vyse 200USD
Tuto pouziva chlapik ATTINY85 (co nieje o nic vykonnejsi stroj) a uplne rovnaky display aky mam ja.
akurat to nema v Pascale
Naozaj skoda ze Mikroe MIcroPascal nema nejaku sirsiu podporu ani od samotneho vyrobcu aj ked platenu verziu predava za vyse 200USD
progres, fajnšmeker už kuká po AVR...
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.
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.
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).
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).
- pocitujlasku
- Příspěvky: 1757
- Registrován: 12 pro 2005, 01:00
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
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á.
- kajsmentke
- Příspěvky: 160
- Registrován: 30 srp 2014, 02:00
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 Ceckopocitujlasku 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.
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
Mozno by to chelo namiesto 8051ky pouzit radu PIC. Koniec koncov ked to programujem vo vyssiom jazyku tak RISC architektura ma velmi trapit nemusi.
- pocitujlasku
- Příspěvky: 1757
- Registrován: 12 pro 2005, 01:00
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#
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
- ZdenekHQ
- Administrátor
- Příspěvky: 25593
- Registrován: 21 črc 2006, 02:00
- Bydliště: skoro Brno
- Kontaktovat uživatele:
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.
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[?]
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[?]
- nostalcomp
- Příspěvky: 43
- Registrován: 09 lis 2022, 01:00
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.
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.
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.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é.
Jirka
Proč mi nemůže všechno chodit hned ?!!
Proč mi nemůže všechno chodit hned ?!!
- kajsmentke
- Příspěvky: 160
- Registrován: 30 srp 2014, 02:00