Zdravím všechny na novém fóru
Dělam hodiny na glcd displeji 128x64.
Prvni řadek- uprostřed - hod.min.sek.oddělené dvojtečkami
druhý řadek volny
třetí řadek- uprostřed - dny měs.roky (roky se znaky 20) oddělené pomlčkami
čtvrty rádek volný
pátý rádek- uprostřed - dny v týdnu v písmeném formátu (Pondeli.Utery,Streda..etc)
Používám znakovou sadu 8x8 pixelů
Znaky jsem zapsal do int.eeprom (256 bajtů) v mcu a zužitkoval jsem ji kromě 8.bajtů,úplně celou.(znaky 0-9, děleno, pomlčka, písmena pro dny v týdnu.)
Interní rezonátor v mcu 4Mhz nebo 8Mhz je vzhledem k délce programu a načítání proměnných nedostačující,proto jsem zvolol ext.krystal 16Mhz a vše pracuje OK.
Vzhledem k tomu, že int eeprom je malá zkusil jsem na sběrnici ICC připojit i ext.eeprom a do ní dát celou základní ASCII tabulku.
Ve 24LC16B mi zabrala 3.z 8.bloků (stránek)
Všechno funguje při taktovacích freqencích 4Mhz a 8Mhz OK, ale při 16Mhz s ext.kystalem, mi to všechny znaky které se mají zobrazit "vykostičkuje"...?!
Nevíte čím to může být?
Díky za radu
picaxe 28x1, glcd K107,RTC,eeprom 24LC16B
Re: picaxe 28x1, glcd K107,RTC,eeprom 24LC16B
Vítejte!
A kolega mi napověděl, že pro vyšší komunikační rychlosti I2C je dobré zmenšit hodnotu pull-up rezistorů ze 4k7 na 2k2.
Jestli tomu dobře rozumím, musíte příkazem hi2csetup nastavit nejen režim slow nebo fast, ale i použitou taktovací frekvenci - tedy v tomto případě nejspíš i2cfast_16.hi2csetup
Mode is the keyword i2cfast (400kHz) or i2cslow (100kHz). Note: that these keywords must change to i2cfast_8, i2cslow_8 at 8MHz, etc.
A kolega mi napověděl, že pro vyšší komunikační rychlosti I2C je dobré zmenšit hodnotu pull-up rezistorů ze 4k7 na 2k2.
jrt
Re: picaxe 28x1, glcd K107,RTC,eeprom 24LC16B
Moc díky, už to jdu vyzkoušet
Re: picaxe 28x1, glcd K107,RTC,eeprom 24LC16B
Tak dejte vědět, kde byl problém, ať nemusíme prošlapávat slepé uličky každý sám.
jrt
Re: picaxe 28x1, glcd K107,RTC,eeprom 24LC16B
Ahoj
Zjistil že ten problém dělá jen ČTENÍ z (jednotlivých bloků) ext.eeprom.
Takže jsem to zapsal tak jak jste mi poradili:
Pro ZÁPIS jsem to nechal tak jak to bylo,čili:
Ted to frčí.....no radost pohledět... ...samozřejmě bez chybičky.
Ty pull up odpory jsem nechal beze změny....
Ještě jednou moc díky za pomoc
Zjistil že ten problém dělá jen ČTENÍ z (jednotlivých bloků) ext.eeprom.
Takže jsem to zapsal tak jak jste mi poradili:
Kód: Vybrat vše
PutMap:
i2cslave %10100000, i2cfast_16, i2cbyte 'bude číst jen z nulté stránky (bloku) ext.eeprom
kod.....
PutMap1:
i2cslave %10100010, i2cfast_16, i2cbyte 'bude číst jen z první stránky (bloku) ext.eeprom
kod.....
PutMap2:
i2cslave %10100100, i2cfast_16, i2cbyte 'bude číst jen z druhé stránky (bloku) ext.eeprom
kod......
Kód: Vybrat vše
WriteToI2C:
i2cslave %10100000, i2cfast, i2cbyte 'Zápis do EEPROM 0.stránky (bloku)
writei2c $00,(0,0,0,0,0,0,0,0) 'mezera
writei2c $08,(0,0,6,95,6,0,0,0) '!
............atd................
Ty pull up odpory jsem nechal beze změny....
Ještě jednou moc díky za pomoc