реклама на сайте
подробности

 
 
> Считать из flash-памяти PIC. Срочно!, IAR язык Си
Andrеys
сообщение Dec 21 2007, 19:27
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 32
Регистрация: 13-08-07
Из: г. Челябинск
Пользователь №: 29 741



т.к. памяти стало не хватать(держал много массивов с байтами) придется хранить их где-то в памяти и обращаться поадресно, на 1 адрес 6 байт, возможно ли такое на PIC?
модель PIC16F877. Как это осуществляется?
нашел в файле inpic.h вот это:


#ifdef __FLASH__
__intrinsic int __flash_read_int( unsigned short address );
__intrinsic void __flash_write_int( unsigned short address, int value );
__intrinsic char __flash_read_low_char( unsigned short address );
__intrinsic char __flash_read_high_char( unsigned short address );
#endif

очень похоже на то что мне надо(или я ошибаюсь?)
если да, то как это использовать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Baser
сообщение Dec 26 2007, 21:40
Сообщение #2


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Ну для начала просьба не выкладывать такие куски прямо в посте, а прикреплять их в виде файлов. Да и если куски кода постите, то оформляйте их как код, а то без форматирования разбираться в этом очень тяжело sad.gif

Теперь по программе. Сильно я в ней не разбирался, но конечно она не может дать такой объем кода, чтобы забить всю флеш. Поэтому:
- проверьте установки вашего проекта и настройки линкера и его командный файл .xcl
- устраните все ошибки, которые выдаются на этапе компиляции. Что-то мне не верится что их нет. Та ошибка, что вы приводите, это ошибка линкера. А если есть ошибки компилятора, то что делает линкер уже непредсказуемо.

Одна явная ошибка налицо:
Цитата(Andrеys @ Dec 26 2007, 20:54) *
Код
__intrinsic int __flash_read_int( unsigned short address );

char flash_read(char address)
    {
    char b;
    b = __flash_read_int( address );
    return b;
    }

byte = flash_read(0x008F);

Адрес двухбайтный, вы его объявили char. Читаете флеш через ненужную паразитную функцию по какому-то абсолютному адресу sad.gif Где вы эти адреса взяли?
Попробуйте так:
Код
char __flash massO[]={0x00, 0x3e, 0x41, 0x41, 0x41, 0x3e};

byte = __flash_read_int((unsigned short)&massO[0]);
...
byte = __flash_read_int((unsigned short)&massO[5]);

В PIC16 константы во флеши хранятся в виде инструкций RETLW byte и результат функции __flash_read_int все равно будет усекаться до одного байта.

Ещё бросилось в глаза:
Цитата(Andrеys @ Dec 26 2007, 20:54) *
Код
rezultat=ADRESH;
for ( i=0; i<8; i++)
    {
    rezultat <<= 1;
    }
    rezultat=rezultat+ADRESL;

Тут вы явно перемудрили, достаточно такого:
Код
rezultat = ((unsigned int)ADRESH<<8)|ADRESL;

Ну и напоследок, если у вас целые беззнаковые, то и объявляйте их unsigned int rezultat;
А то компилятор будет их обрабатыват как знаковые, а это не везде будет правильно smile.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Andrеys   Считать из flash-памяти PIC. Срочно!   Dec 21 2007, 19:27
- - ncux   Цитатапридется хранить их где-то в памяти А массив...   Dec 22 2007, 22:09
- - Andrеys   да, я был некорректен. держать в памяти я имел вви...   Dec 23 2007, 09:18
- - Baser   Цитата(Andrеys @ Dec 21 2007, 21:27) очен...   Dec 23 2007, 12:15
- - Andrеys   это случилось когда невольно пришлось писать прогр...   Dec 23 2007, 13:58
|- - Baser   Цитата(Andrеys @ Dec 23 2007, 15:58) это ...   Dec 23 2007, 14:31
- - Andrеys   ага. а у меня дело-то в том что это "злой пре...   Dec 23 2007, 16:33
|- - Baser   Цитата(Andrеys @ Dec 23 2007, 18:33) знач...   Dec 23 2007, 17:41
- - Andrеys   Окей, я сделал так: char flash_read(char address) ...   Dec 26 2007, 18:54
- - Andrеys   ЦитатаОдна явная ошибка налицо: ... Учтено! ...   Dec 30 2007, 10:59
|- - Baser   Цитата(Andrеys @ Dec 30 2007, 12:59) каки...   Dec 30 2007, 16:23
- - Andrеys   я так понял ругаться начинает только в том куске, ...   Jan 2 2008, 09:16
|- - Baser   Цитата(Andrеys @ Jan 2 2008, 11:16) я так...   Jan 2 2008, 21:59
- - Andrеys   Baser! Спасибо за хорошее отношение и терпелив...   Jan 10 2008, 17:55
- - KAI   Цитата(Baser @ Jan 3 2008, 00:59) Версия ...   Feb 15 2008, 10:04


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 13:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01396 секунд с 7
ELECTRONIX ©2004-2016