|
Как выделить область памяти? |
|
|
|
May 17 2011, 04:42
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 8-02-11
Пользователь №: 62 788

|
Как выделить область памяти во flash,чтобы компилятор не занимал ее и чтобы во время работы контроллера была возможность записи на нее?
--------------------
Глупых вопросов не бывает, бывают глупые ответы!
|
|
|
|
|
May 17 2011, 05:49
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 8-02-11
Пользователь №: 62 788

|
AT32UC3B0256, AVR32Studio, C ?
И еще такой вопрос, чтобы на ассемблере писать для этого контроллера в какой среде программирования лучше всего?
--------------------
Глупых вопросов не бывает, бывают глупые ответы!
|
|
|
|
|
May 17 2011, 09:41
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 8-02-11
Пользователь №: 62 788

|
А как-нибудь в программе контроллера это реализовать нельзя?
--------------------
Глупых вопросов не бывает, бывают глупые ответы!
|
|
|
|
|
May 18 2011, 02:14
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 8-02-11
Пользователь №: 62 788

|
Выделить, т.е. задать некоторое количество ячеек памяти во flash так,чтобы потом при выполнении программы контроллера можно было попрограммой записать в эти ячейки данные.
--------------------
Глупых вопросов не бывает, бывают глупые ответы!
|
|
|
|
|
May 18 2011, 05:19
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 8-02-11
Пользователь №: 62 788

|
Цитата(dinar21 @ May 18 2011, 05:14)  Выделить, т.е. задать некоторое количество ячеек памяти во flash так,чтобы потом при выполнении программы контроллера можно было попрограммой записать в эти ячейки данные. Нашел для этого Flash User Page. Осталось разобраться как в него записывать и как обращаться. Ни у кого нет примера раоты с пользовательской страницей ( Flash User Page) ???
--------------------
Глупых вопросов не бывает, бывают глупые ответы!
|
|
|
|
|
May 18 2011, 06:54
|
Группа: Участник
Сообщений: 12
Регистрация: 17-03-11
Пользователь №: 63 666

|
Как раз недавно писал кое-что в user page. Сам наковырял что смог из примеров. На идельность не претендую, но если надо могу выложить код.
|
|
|
|
|
May 18 2011, 08:38
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 8-02-11
Пользователь №: 62 788

|
Цитата(Storejet @ May 18 2011, 09:54)  Как раз недавно писал кое-что в user page. Сам наковырял что смог из примеров. На идельность не претендую, но если надо могу выложить код. Буду благодарен
--------------------
Глупых вопросов не бывает, бывают глупые ответы!
|
|
|
|
|
May 18 2011, 09:51
|
Группа: Участник
Сообщений: 12
Регистрация: 17-03-11
Пользователь №: 63 666

|
для начала создаем структуру, которая будет размещаться во flash памяти. Я привожу кусок из свое программы, а вообще структура может быть любая. typedef const struct { char Part_number[32];// шифр прибора (ASCII) char Mnem[4];//мнемоника прибора (ASCII) char Add_Mnem[4];// дополнительная мнемоника (ASCII) char Making_Year[4]; //календарный год изготовления прибора (ASCII) char Defis_1; //Дефис (ASCII) char Making_Month[2]; //календарный месяц изготовления прибора (ASCII) char Defis_2; //Дефис (ASCII) char Making_Day[2];//календарный день изготовления прибора(ASCII) U8 UIN_Number[2];//Уникальный нмер прибора (HEX) U8 Sch_Version; //Схемотехническая верся контроллера (HEX) U8 Soft_Version; //Программная версия контроллера (HEX) U8 Calibr_Size[4]; //Размер калибровочной записи (HEX) char Calibr_Name[12]; // Имя калибровочной записи (ASCII) U8 BLK_Size[4]; // Длина BUF, байт (HEX) U8 TTO[2]; //TTO , ms (HEX) U8 FRAM_Size[4]; //длина FRAM, байт (HEX) U8 SRAM_Size[4]; //Длина SRAM, байт (HEX U8 Reserved[44]; //Резерв } nvram_data_t;
//Размещаем структуру идентификатора () в пользовательской странице Flash памяти __attribute__((__section__(".userpage"))) //".userpage" static nvram_data_t user_nvram_data; ;
Далее для работы с данными из flash памяти объявляю указатель nvram_data_t *user_page=&user_nvram_data; // объявляем указатель
Вот некоторые константы, которые будут прописываться в пользовательскую страницу
const char Part_number[32]={'x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x'};// шифр прибора (ASCII) const char Mnem[4]={'B','K','3','5'};//мнемоника прибора (ASCII) const char Add_Mnem[4]={' ',' ',' ',' '};// дополнительная мнемоника (ASCII) const char Making_Year[4]={'2','0','1','1'}; //календарный год изготовления прибора (ASCII)
Функция, которая пропишет константы в пользовательскую страницу:
void ID_write_init (void){ //Смотрим, записано ли что нибудь в пользовательской странице Flash (она будет пуста в новом контроллере) if (flashc_quick_user_page_read()){ //Записываем во Flash изначальные данные //Записываем новые данные во flash flashc_memcpy((void*)&user_page->Part_number,&Part_number,sizeof(user_page->Part_number),TRUE); flashc_memcpy((void*)&user_page->Mnem,&Mnem,sizeof(user_page->Mnem),TRUE); flashc_memcpy((void*)&user_page->Add_Mnem,&Add_Mnem,sizeof(user_page->Add_Mnem),TRUE); flashc_memcpy((void*)&user_page->Making_Year,&Making_Year,sizeof(user_page->Making_Year),TRUE); }
Если нужно обратиться к данным, размещенным нами в памяти, делаем так: usart_putchar(USART_ADDR, user_page->Part_number[0]); usart_putchar(USART_ADDR, user_page->Part_number[1]); ну и так далее
Если что-то не понятно или неправильно, пишите...
|
|
|
|
|
May 19 2011, 02:55
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 8-02-11
Пользователь №: 62 788

|
Цитата(Storejet @ May 18 2011, 12:51)  U8 UIN_Number[2];//Уникальный нмер прибора (HEX) U8 Sch_Version; //Схемотехническая верся контроллера (HEX) U8 Soft_Version; //Программная версия контроллера (HEX) U8 Calibr_Size[4]; //Размер калибровочной записи (HEX) U8 TTO[2]; //TTO , ms (HEX) U8 FRAM_Size[4]; //длина FRAM, байт (HEX) U8 SRAM_Size[4]; //Длина SRAM, байт (HEX U8 Reserved[44]; //Резерв } nvram_data_t; Что значит U8 ?
--------------------
Глупых вопросов не бывает, бывают глупые ответы!
|
|
|
|
|
May 19 2011, 05:37
|
Группа: Участник
Сообщений: 12
Регистрация: 17-03-11
Пользователь №: 63 666

|
typedef unsigned char U8 -тип данных unsigned char, длина 8 бит
|
|
|
|
|
May 19 2011, 08:23
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 8-02-11
Пользователь №: 62 788

|
Цитата(Storejet @ May 19 2011, 08:37)  typedef unsigned char U8 -тип данных unsigned char, длина 8 бит Точно. Туплю. А нет примера программы прерывания от PWM ?
--------------------
Глупых вопросов не бывает, бывают глупые ответы!
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|