Mega16 a 24LC256, SPI zápis/čtení-hotové řešení v BASCOM-AVR

Zdravím vás,
obracím se s dotazem ohledně SW řešení na toto spojení. Po HW stránce to není problém, ale u SW si nejsem jistý. Na Mega16 chci použít HW SPI, ale nevím jak s touto pamětí komunikovat co nejefektivněji. Problém je v tom, že potřebuji číst/zapisovat string až 16 znaků dlouhý. SW píšu v Bascom, který by měl tuto fci zvládat. Nemáte někdo námět k řešení? Či odkaz, na řešení, které by bylo pro mé účely zneužitelné? Sám jsem nic moc kloudného nenašel.

Tj.:
Dejme tomu, že mám proměnnou “Dim X as String * 16” a chci ji uložit do externí paměti.
A v druhém kroku opět načíst do proměnné “Dim Y as String * 16”.

:arrow_right: administrator: přejmenováno z "Mega16 a 24LC256"

Pardon, paměť je I2C, to jsem chtěl říci.

Něco jsem zkusil vytvořit, testoval jsem to jen v simulátoru.


Program1.txt (1.43 KB)

To vypada velice dobře, dnes vyzkouším a hned dám vědět. Velice děkuji za “nakopnutí”… :slight_smile:

Tak jsem to ještě drobet upravil.
Program2.txt (2.06 KB)

No páni, :smiley: Tak teď je to 1:0 pro Vás. Momentálně si nejsem jistý jestli ten kód dosti dobře chápu. Hlavně tu část s proměnnou “BANK”. Vyplívá mi z toho, že se jedná o adresu umístění v paměti 24c256 ale trochu mne mate souvyslost Bank0, Bank1 s Horním a dolním Byte. Nebylo by jednodušší určovat adresu jako souřadnice ve dvou osách s hodnotou Byte? 0-255… 256x256=65536 a počítat s tím, že končí u hodnoty 32767!? Každopádně Váše příklady mi vyřešily problém se správným čtením a zapisováním do paměti.

A nebo proč neurčovat adresu přímo v proměnné word? Lze to vubec?

Zkoukni tohle, mělo by to dělat přesně to co potřebuješ.
Program3.txt (3.82 KB)

Jo! Tak to je přesně ono. :slight_smile: Dokonalé řešení. Jen řeknu, co zapsat a kam to zapsat. Pouze si musím pamatovat, že nemohu přesáhnout 2047 stringů k zapsání/čtení. Což je naprosto super! Tímto chci poděkovat uživateli Standa33 za jeho čas, strávený nad problémy druhých! Děkuji…

Dobrý den,
tak se vracím opět k tomuto tématu. Došel jsem k tomu, že kód je sice funkční, ale z nějakého neznámého důvodu mi funkce ReadText vrací pouze 15 znaků nebo jich naopak procedura WriteText zapíše pouze 15. Kód jsem procházel několikrát a vůbec nevím by to mohlo být. Jedná se o “Program3” zde zmíněný.

Promiň, měl jsem tam chybu, už jsem to upravil, viz obrázek.


Program3_1.txt (4.04 KB)

:slight_smile: Super. Vyzkoušeno a běží jak má. Moc děkuju! Jinak ještě přidám takový drobný postřeh. Pokud to někdo budete používat a potřebujete větší rychlost čtení jako já. Bezproblémů mi to funguje s nastavením TWI na 400kHz a ve Funkci READ prodleva 2ms. :wink: A ještě přidám opětovné díky Standovi! :slight_smile: