Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

Вопросы начинающих Прежде чем задать вопрос, стоит воспользоваться поиском

Ответ
 
Опции темы Опции просмотра
Старый 09.10.2014, 16:30   #1
djoni-kga
Junior Member
 
Регистрация: 08.10.2014
Возраст: 40
Сообщений: 12
Вес репутации: 100/21
djoni-kga will become famous soon enoughdjoni-kga will become famous soon enough
По умолчанию XC8 ругает на размер массива.

Добрый день!

Не давно начал изучать PIC, до этого работал с 51. В MPLAB XC8 C, не могу выделить массив больше 20 байт, выдает ошибку "could not find space", хотя в проце (PIC16F505) по паспорту 72 байта, я так понял надо манипулировать банками.
Что я делаю не так?

Что выдал компилятор ниже.

Цитата:
Microchip MPLAB XC8 C Compiler (Standard Mode) V1.33
Part Support Version: 1.33 (A)
Copyright (C) 2014 Microchip Technology Inc.
License type: Node Configuration
ChEl.c:11: error: (1250) could not find space (20 bytes) for variable _TestArray
nbproject/Makefile-default.mk:167: recipe for target 'dist/default/production/ElEasy01.X.production.hex' failed
make[2]: Leaving directory 'D:/Project/El/bin/Pic/ElEasy01.X'
nbproject/Makefile-default.mk:78: recipe for target '.build-conf' failed
make[1]: Leaving directory 'D:/Project/El/bin/Pic/ElEasy01.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
(908) exit status = 1
make[2]: *** [dist/default/production/ElEasy01.X.production.hex] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 1s)
djoni-kga вне форума   Ответить с цитированием
Старый 09.10.2014, 19:56   #2
Guaho
Senior Member
 
Аватар для Guaho
 
Регистрация: 28.06.2013
Возраст: 48
Сообщений: 738
Вес репутации: 1674/48
Guaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant futureGuaho has a brilliant future
По умолчанию Re: XC8 ругает на размер массива.

А где код?
Guaho на форуме   Ответить с цитированием
Старый 09.10.2014, 22:58   #3
djoni-kga
Junior Member
 
Регистрация: 08.10.2014
Возраст: 40
Сообщений: 12
Вес репутации: 100/21
djoni-kga will become famous soon enoughdjoni-kga will become famous soon enough
По умолчанию Re: XC8 ругает на размер массива.

вот сам код:
Код:
//using <pic16f505.h>
#include <xc.h>
#include <stdint.h>
#define _XTAL_FREQ 4000000

unsigned short TestArray[10];

void main()
{
  CLRWDT();
  while(1)
  {
    for (uint8_t i = 0; i < sizeof(TestArray); i++ )
    {
      TestArray[i] = (unsigned short)i;
    }
  }
}
djoni-kga вне форума   Ответить с цитированием
Старый 09.10.2014, 23:24   #4
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/102
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: XC8 ругает на размер массива.

Цитата:
Сообщение от djoni-kga Посмотреть сообщение
...не могу выделить массив больше 20 байт...
Что я делаю не так?
В PIC16F505 "сплошняком" можно найти только 16 байт. Компилятор перепрыгивать из банка в банк не умеет.
Vlad&mir вне форума   Ответить с цитированием
Старый 10.10.2014, 00:17   #5
djoni-kga
Junior Member
 
Регистрация: 08.10.2014
Возраст: 40
Сообщений: 12
Вес репутации: 100/21
djoni-kga will become famous soon enoughdjoni-kga will become famous soon enough
По умолчанию Re: XC8 ругает на размер массива.

т.е массив нужно бить на несколько, не больше 16 байт?
Тогда почему компилятор CCS C Compile это позволяет делать?
djoni-kga вне форума   Ответить с цитированием
Старый 10.10.2014, 07:57   #6
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,124
Вес репутации: 2885/107
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: XC8 ругает на размер массива.

Цитата:
Сообщение от djoni-kga Посмотреть сообщение
...Тогда почему компилятор CCS C Compile это позволяет делать?
Хороший компилятор потому что. Когда я тут его иногда защищал, то все говорили "фи...Hitech лучше". Жалко, что он не "успевает" за новыми семействами и меньше его поддержки. И свои особенные баги тоже есть.
AleksBak вне форума   Ответить с цитированием
Старый 10.10.2014, 08:20   #7
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/102
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: XC8 ругает на размер массива.

Цитата:
Сообщение от djoni-kga Посмотреть сообщение
т.е массив нужно бить на несколько, не больше 16 байт?
Тогда почему компилятор CCS C Compile это позволяет делать?
В CCS C Compile, мне кажется, unsigned short - 8-ми битовый тип.

Если ошибаюсь, извините...
Vlad&mir вне форума   Ответить с цитированием
Старый 10.10.2014, 08:56   #8
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,124
Вес репутации: 2885/107
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: XC8 ругает на размер массива.

Цитата:
Сообщение от Vlad&mir Посмотреть сообщение
В CCS C Compile, мне кажется, unsigned short - 8-ми битовый тип.

Если ошибаюсь, извините...
Для 8-ми битных контроллеров у них тип 'int' - 8 бит.
AleksBak вне форума   Ответить с цитированием
Старый 10.10.2014, 09:33   #9
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/102
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: XC8 ругает на размер массива.

Цитата:
Сообщение от AleksBak Посмотреть сообщение
Для 8-ми битных контроллеров у них тип 'int' - 8 бит.
Значит в CCS C Compile
unsigned short TestArray[10];
занимает 10 байт. Так?
Vlad&mir вне форума   Ответить с цитированием
Старый 10.10.2014, 09:35   #10
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,742
Вес репутации: 4545/133
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: XC8 ругает на размер массива.

Цитата:
Сообщение от Vlad&mir Посмотреть сообщение
Значит в CCS C Compile
unsigned short TestArray[10];
занимает 10 байт. Так?
В CCS short int1, т.е. 1 бит. Этот компилятор не ANSI. Топикстартеру хорошо бы хелп почитать, там все есть о размерах типов данных.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 10.10.2014, 09:38   #11
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/102
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: XC8 ругает на размер массива.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
В CCS short int1, т.е. 1 бит. Этот компилятор не ANSI. Топикстартеру хорошо бы хелп почитать, там все есть.
Меньше байта переменная занимать не может. Т.е. переменая типа int1 занимает 1 байт в RAM.
Vlad&mir вне форума   Ответить с цитированием
Старый 10.10.2014, 09:41   #12
Pridnya
Senior Member
 
Регистрация: 21.01.2009
Адрес: Russia, Orel
Возраст: 40
Сообщений: 4,742
Вес репутации: 4545/133
Pridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond reputePridnya has a reputation beyond repute
По умолчанию Re: XC8 ругает на размер массива.

Цитата:
Сообщение от Vlad&mir Посмотреть сообщение
Меньше байта переменная занимать не может. Т.е. переменая типа int1 занимает 1 байт в RAM.
Этот компилятор вроде как упаковывает несколько переменных int1 в одном байте для экономии ОЗУ. Хороший компилятор.
__________________
Прогресс неизбежен.
Pridnya вне форума   Ответить с цитированием
Старый 10.10.2014, 09:41   #13
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,124
Вес репутации: 2885/107
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: XC8 ругает на размер массива.

Цитата:
Сообщение от Vlad&mir Посмотреть сообщение
Значит в CCS C Compiler
unsigned short TestArray[10];
занимает 10 байт. Так?
Вообщем тут получается, что ТС свой код от CCS "подсовывает" XC8 и не учитывает размерности типов данных.
AleksBak вне форума   Ответить с цитированием
Старый 10.10.2014, 09:42   #14
AleksBak
Senior Member
 
Аватар для AleksBak
 
Регистрация: 27.02.2007
Адрес: г. Баку
Сообщений: 3,124
Вес репутации: 2885/107
AleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond reputeAleksBak has a reputation beyond repute
По умолчанию Re: XC8 ругает на размер массива.

Цитата:
Сообщение от Vlad&mir Посмотреть сообщение
Меньше байта переменная занимать не может. Т.е. переменая типа int1 занимает 1 байт в RAM.
Нет не так. У CCS не так.
AleksBak вне форума   Ответить с цитированием
Старый 10.10.2014, 09:54   #15
djoni-kga
Junior Member
 
Регистрация: 08.10.2014
Возраст: 40
Сообщений: 12
Вес репутации: 100/21
djoni-kga will become famous soon enoughdjoni-kga will become famous soon enough
По умолчанию Re: XC8 ругает на размер массива.

Интересно, домой приду проверю на CCS int16 TestArray[10];

Почитал спецификацию CCS, с типами немного намудрили, работал с 51 и АRM, С++, C# всегда пишу unsigned short, думал два байта это аксиома.
djoni-kga вне форума   Ответить с цитированием
Старый 10.10.2014, 09:58   #16
djoni-kga
Junior Member
 
Регистрация: 08.10.2014
Возраст: 40
Сообщений: 12
Вес репутации: 100/21
djoni-kga will become famous soon enoughdjoni-kga will become famous soon enough
По умолчанию Re: XC8 ругает на размер массива.

с переносимость кода, буду не большие проблемы, хотя если взять за правило переопределять типы, где ни будь в заголовке, то жить можно.
djoni-kga вне форума   Ответить с цитированием
Старый 10.10.2014, 10:23   #17
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/102
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: XC8 ругает на размер массива.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Этот компилятор вроде как упаковывает несколько переменных int1 в одном байте для экономии ОЗУ. Хороший компилятор.
В таком случае
unsigned short TestArray[10];
будет занимать даже меньше 10-ти байт. Ну, короче, чудес не бывает.
Vlad&mir вне форума   Ответить с цитированием
Старый 10.10.2014, 15:02   #18
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 33
Сообщений: 2,187
Вес репутации: 4133/90
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: XC8 ругает на размер массива.

хотя если взять за правило переопределять типы, где ни будь в заголовке, то жить можно. - используйте stdint и все будет хорошо.
besogon вне форума   Ответить с цитированием
Старый 10.10.2014, 15:31   #19
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,925
Вес репутации: 5709/174
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: XC8 ругает на размер массива.

Цитата:
Сообщение от Pridnya Посмотреть сообщение
Этот компилятор вроде как упаковывает несколько переменных int1 в одном байте для экономии ОЗУ. Хороший компилятор.
В хайтеке есть аналогичный тип bit. Кстати, функция может его возвращать (битом с)
Greg вне форума   Ответить с цитированием
Старый 10.10.2014, 18:29   #20
djoni-kga
Junior Member
 
Регистрация: 08.10.2014
Возраст: 40
Сообщений: 12
Вес репутации: 100/21
djoni-kga will become famous soon enoughdjoni-kga will become famous soon enough
По умолчанию

Цитата:
используйте stdint и все будет хорошо
согласен.
Vlad&mir - спасибо за совет.
djoni-kga вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многофункциональные часы. Н.Заяц.Книга 4. samko Вопросы начинающих 11 12.06.2012 09:26
в симуляторе выходов на обработку прерываний на 1 больше, чем принято байт по УСАРТу X_Max Продукция MICROCHIP 11 07.06.2012 11:18
PIC и LCD на SPLC780D floke Вопросы начинающих 34 07.02.2012 16:34
Помогите, пожалуйста, найти ошибку в коде Катя Микроконтроллеры других производителей 26 08.12.2007 14:58
проблемка с PIC16F628A bereg_ok Продукция MICROCHIP 72 07.09.2007 11:00


Часовой пояс GMT +3, время: 21:12.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot