Ahoj
Ve svých pokusech jsem se dostal už tak daleko, že musím začít používat ukazatele, které jsem nikdy nechápal a tak jsem se teď o to pokusil
1. Co se týče paměti SRAM
char retezec_SRAM]={“Tento text je umisten v pameti SRAM”}; // uložení řetězce do SRAM
char *SRAM_Pointer = & retezec_SRAM[0]; // ukazatel na řetězec retezec_SRAM (na jeho 0. prvek => na začátek)
char *SRAM_Pointer2={“Tento text je umisten v pameti SRAM”} // jiná možnost, jak uložit řetězec do SRAM rovnou jako řetězec
OK, tady mi to funguje a když jsem debugoval v AVR studiu (v5), tak jsem to v paměti SRAM skutečně viděl.
2. Paměť FLASH
flash char *FLASH_Pointer]={“Tento text je v pameti FLASH”}; // ukazatel na místo v paměti FLASH, kde je uložen řetězec FLASH_Pointer
Teď trochu neodborný popis: Zjistil jsem, že tady je možné (oproti SRAM) za chodu programu měnit obsah toho řetězce FLASH_Pointer např:
flash char *Empty_FLASH_string];
if (...){
*Empty_FLASH_string = “ANO” ;}
else{
*Empty_FLASH_string = “NE” ;};
tzn. Buď tam bude “ANO” nebo “NE” - jestli jsem to správně pochopil a v debugu správně viděl, tak ve skutečnosti jsou ve FLASH už dopředu uloženy řetězce “ANO” i “NE” a vlastně jen měním adresu, kam se ukazatel Empty_FLASH_string dívá (na který z těch dvou řetězců). Mám pravdu ?
3. paměť EEPROM
Tady jsem napsal:
eeprom char *EEPROM_pointer="Tento text je v EEPROM";
V debugu jsem ale v EEPROM tento řetězec nenašel. Takže teď jsem zmatený, protože jsem si myslel, že se řetězec EEPROM_pointer skutečně fyzicky uloží do EEPROM, tak nevím jestli to chápu špatně, nebo to třeba AVR studio neumí zobrazit ?
Jinak používám IDE CodeVision a debug již zmiňované AVR studio. Postupuji podle příručky “User Manual” a knihy “Mikrokontroléry ATMEL AVR programování v jazyce C” od Váňi, což je v podstatě překlad toho User Manualu k CodeVisionu.
Může mi prosím někdo osvětlit jak to tedy správně je?
Děkuji