09.07.2013, 16:35
|
|
Прописка
Регистрация: 25.02.2011
Сообщений: 122
Сказал спасибо: 61
Сказали Спасибо 23 раз(а) в 19 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Спасибо, разобрался.
|
|
|
|
20.08.2013, 21:45
|
|
Прописка
Регистрация: 15.01.2008
Сообщений: 120
Сказал спасибо: 5
Сказали Спасибо 1 раз в 1 сообщении
|
Re: STM8(S/L), первые впечатления
Всем привет!
Кто пробовал STM8S in-application programming (IAP) using a customized bootloader (AN2659)?
Собрал для STM8L152R8, с программой Flash loader demonstrator входит в загрузчик, стирает, а прошить не получается.
Кто-то пробовал использовать customized bootloader?
|
|
|
|
09.03.2014, 00:17
|
|
Прописка
Регистрация: 31.08.2008
Сообщений: 183
Сказал спасибо: 25
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
кто знает как использовать EEPROM без библиотек в IAR? Делаю так:
Цитата:
|
__no_init __eeprom int x;
int main( void ) {
FLASH_Unlock();
x=(int)0; // а вот из за этой строки - ошибка (без нее - компилируется)
}
void FLASH_Unlock(void) {
FLASH_DUKR = (char)0xAE; // Warning: keys are reversed on data memory !!!
FLASH_DUKR = (char)0x56;
}
|
ошибки:
Error[Li005]: no definition for "__eeprom_program_byte" [referenced from eeprom_util.o(dlstm8smn.a)]
Error[Li005]: no definition for "__eeprom_wait_for_last_operation" [referenced from eeprom_util.o(dlstm8smn.a)]
Error[Li005]: no definition for "__eeprom_program_long" [referenced from eeprom_util.o(dlstm8smn.a)]
__________________
Kvsrk85(Андрей)
|
|
|
|
09.03.2014, 00:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от kvark85
|
кто знает как использовать EEPROM без библиотек в IAR?
|
Совсем без библиотек? У меня так работает:
Код:
|
void EEPROM_Unlock( void ){
FLASH_DUKR = 0xAE;
FLASH_DUKR = 0x56;
}
void EEPROM_Lock( void){
FLASH_IAPSR_bit.WR_PG_DIS = 0;
}
void EEPROM_Program_Int(uint32_t Address, uint16_t Data)
{
*((__far uint8_t*)(uint16_t)Address) = *((uint8_t*)(&Data));
*(((__far uint8_t*)(uint16_t)Address) + 1) = *((uint8_t*)(&Data)+1);
}
uint16_t EEPROM_Read_Int( uint32_t Address ){
uint16_t retval;
retval = (*(__far uint8_t *) (uint16_t)Address) * 256;
retval += (*(__far uint8_t *) (uint16_t)(Address + 1));
return( retval );
} |
Если честно, все это лежит на поверхностях самих библиотек и выуживается оттуда (без труда) с небольшим включением головы.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
09.03.2014, 04:13
|
|
Прописка
Регистрация: 31.08.2008
Сообщений: 183
Сказал спасибо: 25
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
уже и STD_Periph_lib подключил, все равно EEPROM не работает. После рестарта программы в данной ячейке EEPROM всегда одно и то же число. Код:
Цитата:
|
#include "stm8s.h"
//FLASH_DATA_START_PHYSICAL_ADDRESS
#ifdef USE_FULL_ASSERT
void assert_failed(u8* file, u32 line) { while (1){}; }
#endif
uint16_t x=0;
int main( void )
{
FLASH_DeInit();
FLASH_Unlock(FLASH_MEMTYPE_DATA);
while(1) {
x=FLASH_ReadByte(0x4000); // - правильно, это же первая ячейка EEPROMa?
x++;
FLASH_ProgramByte(0x4000, x);
}
}
|
__________________
Kvsrk85(Андрей)
|
|
|
|
09.03.2014, 10:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от kvark85
|
//uint16_t x=0;
uint8_t x;
int main( void )
{
FLASH_DeInit();
FLASH_Unlock(FLASH_MEMTYPE_DATA);
while(1) {
// предполагается, что ячейка 0x4000 проинициирована. Тонкий намек... ![Улыбка](images/smilies/icon_smile.gif)
x=FLASH_ReadByte(0x4000); // - правильно, это же первая ячейка EEPROMa?
x++;
FLASH_ProgramByte(0x4000, x);
}
}
|
Объявляете int, а операции проводите с байтом?
Ну и подумайте, что же будет прочитано из памяти при первом чтении? Вопрос для наводки: как понимать __no_init ? (Help IAR)
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
09.03.2014, 15:20
|
|
Прописка
Регистрация: 31.08.2008
Сообщений: 183
Сказал спасибо: 25
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
при первом чтении из EEPROM будет прочитано значение которое лежит по адресу 0x4000. я не вижу ошибки
__________________
Kvsrk85(Андрей)
|
|
|
|
09.03.2014, 15:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Каким инструментом дебажите?
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
09.03.2014, 15:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от kvark85
|
при первом чтении из EEPROM будет прочитано значение которое лежит по адресу 0x4000. я не вижу ошибки
|
Как и кто это значение туда помещает? Вы уже разобрались?
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
09.03.2014, 16:04
|
|
Прописка
Регистрация: 31.08.2008
Сообщений: 183
Сказал спасибо: 25
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: STM8(S/L), первые впечатления
Сообщение от ut1wpr
|
Каким инструментом дебажите?
|
IAR + Mini ST-Link V2 + своими руками изготовленная плата.
Сообщение от ut1wpr
|
Как и кто это значение туда помещает? Вы уже разобрались?
|
изначально туда ничто ничего не помещает и там будет какой то мусор. мне без разницы что там будет. хоть"0" хоть, к примеру "15". Я считываю это значение - смотрю его, инкриментирую. И записываю обратно - 16 допустим.
Цитата:
|
while(1) {
x=FLASH_ReadByte(0x4000);
x++;
FLASH_ProgramByte(0x4000, x);
}
|
после выключения и включения питания - там должно остаться 16 (я же эту область памяти ничем не перезаписывал). Но там не 16. Как то так.
ut1wpr, я вам личное сообщение написал, посмотрите пожалуйста.
__________________
Kvsrk85(Андрей)
Последний раз редактировалось kvark85; 09.03.2014 в 16:18.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:14.
|
|