Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
26.09.2009, 12:27
|
|
Временная регистрация
Регистрация: 17.11.2007
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Изучение HI-TECH C для PIC
Люди очень нужна помощь, возник вот такой вопрос, выбран контроллер PIC16F870, у него 128 байт данных, и 2000 байт программы. Представлю просто тестовый код:
#include ‹htc.h›
void main()
{
unsigned char amplitude[100];
PORTB=amplitude[1];
while(1);
}
Программа компилируется, но потом линковщик типо выдаёт ошибку,
Error[491] : can't find 0x64 words for psect "rbss_0" in segment "BANK0"
BUILD FAILED: Sat Sep 26 12:22:41 2009
кто нибудт сталкивался с такими ошибками??? Как будто ему памяти не хватает, посмотрел в мануале что за ошибка, попробывал разобраться но так и не понял как её исправить. Заменяю контроллер на другой с ещё большей памятью, такая же фигня, как настроить HI-TECH, что бы избежать этой ошибки???
|
|
|
|
26.09.2009, 12:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Изучение HI-TECH C для PIC
Сообщение от ST_Senya
|
Люди очень нужна помощь, возник вот такой вопрос, выбран контроллер PIC16F870, у него 128 байт данных
Error[491] : can't find 0x64 words for psect "rbss_0" in segment "BANK0"
BUILD FAILED: Sat Sep 26 12:22:41 2009
Как будто ему памяти не хватает
|
Кроме переменных для программы компилятор использует под себя некоторое количество RAM... попробуйте так
unsigned char amplitude[10];
если нужно именно 100, то пользуйте контролер с 2 банками RAM и перенесите в 1 банк
bank1 unsigned char amplitude[100];
|
|
|
|
26.09.2009, 12:56
|
|
Временная регистрация
Регистрация: 17.11.2007
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: Изучение HI-TECH C для PIC
не понял, можете обьяснить поподробней? Да мне нужно именно 100)
допустим я беру контроллер PIC16F87 у него уже 368 байт данных, потом компилирую и опять такая вот ошибка
Error[491] : can't find 0x64 words for psect "rbss_0" in segment "BANK0"
BUILD FAILED: Sat Sep 26 12:52:11 2009
остаётся 268 байт свободного места) компилятору в таком случае должно этого хватить уж думаю навернека)))). Потом заменил свою строчку
unsigned char amplitude[100]; на строку вида
bank1 unsigned char amplitude[100]; и всё рано компилятор выдал такую же ошибку линковщика , кстати слово bank1 компилятор не выделил цветом, но скомпилировал без ошибок. Можно поподробней. Мне просто очень нужно разобраться в этом деле.
|
|
|
|
26.09.2009, 12:57
|
|
Заблокирован
Регистрация: 13.10.2006
Сообщений: 189
Сказал спасибо: 12
Сказали Спасибо 44 раз(а) в 33 сообщении(ях)
|
Re: Изучение HI-TECH C для PIC
Сообщение от ST_Senya
|
Error[491]кто нибудт сталкивался с такими ошибками??? Как будто ему памяти не хватает, посмотрел в мануале что за ошибка, попробывал разобраться но так и не понял как её исправить. Заменяю контроллер на другой с ещё большей памятью, такая же фигня, как настроить HI-TECH, что бы избежать этой ошибки???
|
Вот здесь елозили...
Кстати... Версия PRO или STD???
Последний раз редактировалось atas_stas; 26.09.2009 в 13:09.
|
|
|
|
26.09.2009, 13:26
|
|
Временная регистрация
Регистрация: 17.11.2007
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: Изучение HI-TECH C для PIC
Спасибо, буду читать) а вот ещё один вопрос меня интересует, как вот передать в функцию обработки прерываний нужные мне переменные? ну вот допустим функция
void interrupt my_interrupt(int a)
{
}
как мне сделать так чтобы во время возникновения прерывания, в формальную переменную a, функции обработки прерываний void interrupt my_interrupt(int a), передавалось нужное мне значение? так можно сделать?
|
|
|
|
26.09.2009, 13:45
|
|
Частый гость
Регистрация: 15.04.2009
Сообщений: 27
Сказал спасибо: 7
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Изучение HI-TECH C для PIC
насколько я помню данная функция не может принимать и передавать значения. А почему не хочешь сделать эту переменную глобальной и использовать её в обработке прерываний?
|
|
|
|
26.09.2009, 19:28
|
|
Временная регистрация
Регистрация: 17.11.2007
Сообщений: 67
Сказал спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
|
Re: Изучение HI-TECH C для PIC
Ну конечно глобальной можно, но просто привык чтобы переменные были локализированны))
|
|
|
|
26.09.2009, 20:36
|
|
Прописка
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
|
Re: Изучение HI-TECH C для PIC
Сообщение от ST_Senya
|
Ну конечно глобальной можно, но просто привык чтобы переменные были локализированны))
|
Функция с квалификатором interrupt не вызывается явно. Как ты туда собирался параметры-то передавать?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:00.
|
|