Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 18.09.2006, 18:42  
vovan_zh
Прописка
 
Регистрация: 29.08.2005
Сообщений: 139
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
vovan_zh на пути к лучшему
По умолчанию Массивы в PICC_V8.05PL1

PICC_V8.05PL1 ругается на следующие массивы:

static unsigned char *s[] = {
"║po╪╨oc©д dB",
"╘c╦╩e╫╦e dB",
"Te╪╡p H╚ dB",
"Te╪╡p B╚ dB",
"═a╩a╫c ╙p. dB",
"═a╩a╫c Tц╩ dB" };

static signed char x[6][16] = {
{ -78,-65,-55,-45,-40,-35,-30,-25,-20,-17,-14,-11,-8,
-5,-2,0 },
{ 0,0,0,0,6,6,6,6,12,12,12,12,18,18,18,18 },
{ -14,-12,-10,-8,-6,-4,-2,0,0,2,4,6,8,10,12,14 },
{ -14,-12,-10,-8,-6,-4,-2,0,0,2,4,6,8,10,12,14 },
{ -37,-25,-15,-10,-7,-5,-2,0,0,2,5,7,10,15,25,37 }
{ -37,-25,-15,-10,-7,-5,-2,0,0,2,5,7,10,15,25,37 } };

это глюк или компилятор их не поддерживает?
Реклама:
vovan_zh вне форума  
Непрочитано 18.09.2006, 23:03  
NemoCut32
Гражданин KAZUS.RU
 
Регистрация: 16.12.2004
Сообщений: 587
Сказал спасибо: 13
Сказали Спасибо 23 раз(а) в 9 сообщении(ях)
NemoCut32 на пути к лучшему
По умолчанию Re: Массивы в PICC_V8.05PL1

Сообщение от vovan_zh
PICC_V8.05PL1 ругается на следующие массивы:

static unsigned char *s[] = {
"║po╪╨oc©д dB",
"╘c╦╩e╫╦e dB",
"Te╪╡p H╚ dB",
"Te╪╡p B╚ dB",
"═a╩a╫c ╙p. dB",
"═a╩a╫c Tц╩ dB" };

static signed char x[6][16] = {
{ -78,-65,-55,-45,-40,-35,-30,-25,-20,-17,-14,-11,-8,
-5,-2,0 },
{ 0,0,0,0,6,6,6,6,12,12,12,12,18,18,18,18 },
{ -14,-12,-10,-8,-6,-4,-2,0,0,2,4,6,8,10,12,14 },
{ -14,-12,-10,-8,-6,-4,-2,0,0,2,4,6,8,10,12,14 },
{ -37,-25,-15,-10,-7,-5,-2,0,0,2,5,7,10,15,25,37 }
{ -37,-25,-15,-10,-7,-5,-2,0,0,2,5,7,10,15,25,37 } };

это глюк или компилятор их не поддерживает?
А чего бы ему не ругаться!
Начнём с 2:
static signed char x[6][16] = {
{ -78,-65,-55,-45,-40,-35,-30,-25,-20,-17,-14,-11,-8,
-5,-2,0 },
{ 0,0,0,0,6,6,6,6,12,12,12,12,18,18,18,18 },
{ -14,-12,-10,-8,-6,-4,-2,0,0,2,4,6,8,10,12,14 },
{ -14,-12,-10,-8,-6,-4,-2,0,0,2,4,6,8,10,12,14 },
{ -37,-25,-15,-10,-7,-5,-2,0,0,2,5,7,10,15,25,37 },‹-
{ -37,-25,-15,-10,-7,-5,-2,0,0,2,5,7,10,15,25,37 } };
запятую забыл, компилятор 2 строки и не разобрал

теперь 1:
static unsigned char *s[] = {
"║po╪╨oc©д dB",
"╘c╦╩e╫╦e dB",
"Te╪╡p H╚ dB",
"Te╪╡p B╚ dB",
"═a╩a╫c ╙p. dB",
"═a╩a╫c Tц╩ dB" };
тута ваабще караул! как Вы можете указателю присвоить значение набора строк разной длины? Им же надо место
static unsigned char s1[] = "║po╪╨oc©д dB";
static unsigned char s2[] = "╘c╦╩e╫╦e dB";
static unsigned char s3[] = "Te╪╡p H╚ dB";
static unsigned char s4[] = "Te╪╡p B╚ dB";
static unsigned char s5[] = "═a╩a╫c ╙p. dB";
static unsigned char s6[] = "═a╩a╫c Tц╩ dB";
static unsigned char *s[] = { s1,s2,s3,s4,s5,s6 };
Не обижайтесь! Попробуйте вот так.
Я тоже мечтал об AnsiString в IAR.
Желаю успеха!
NemoCut32 вне форума  
Непрочитано 18.09.2006, 23:57  
vovan_zh
Прописка
 
Регистрация: 29.08.2005
Сообщений: 139
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
vovan_zh на пути к лучшему
По умолчанию

Обижаться мне не на что, так как всегда прислушиваюсь к мнению знающих людей, для того и вопрос сюда задал (в Си начинающий) .
Запятая затералась при редактировании сообщения.
Обязательно опробую ваши рекомендации.
Еще рекомендовали заменить static на const, чтоб массив распределился в пзу мк, так как одного банка ПИКа нехватает.
p.s. перевожу исходник с рабочей версии написаной для WinAVR.
vovan_zh вне форума  
Непрочитано 19.09.2006, 00:06  
vovan_zh
Прописка
 
Регистрация: 29.08.2005
Сообщений: 139
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
vovan_zh на пути к лучшему
По умолчанию Re: Массивы в PICC_V8.05PL1

Сообщение от NemoCut32
тута ваабще караул! как Вы можете указателю присвоить значение набора строк разной длины?
Тут я поспешил и был невнимателен, было так:
static unsigned char *s[] = {
"ЎpoјєocїД dB",
"©cё»eЅёe dB",
"TeјІp H« dB",
"TeјІp B« dB",
"*a»aЅc Єp. dB",
"*a»aЅc TГ» dB" };
что то форум не позволяет, короче размер строк выровнен пробелами
vovan_zh вне форума  
Непрочитано 20.09.2006, 23:02  
NemoCut32
Гражданин KAZUS.RU
 
Регистрация: 16.12.2004
Сообщений: 587
Сказал спасибо: 13
Сказали Спасибо 23 раз(а) в 9 сообщении(ях)
NemoCut32 на пути к лучшему
По умолчанию

Тогда точно должно прокатить вот так:
static const unsigned char s[][14] = {
"ЎpoјєocїД dB ",
"©cё»eЅёe dB ",
"TeјІp H« dB ",
"TeјІp B« dB ",
" a»aЅc Єp. dB",
" a»aЅc TГ» dB" };
static - просто ограничивает область видимости переменной (константы) текущим модулем, если в других модулях переменная не используется - пишите static.
А что с запятой?
NemoCut32 вне форума  
Непрочитано 20.09.2006, 23:56  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

Сообщение от NemoCut32
static - просто ограничивает область видимости переменной (константы) текущим модулем, если в других модулях переменная не используется - пишите static.
чем писать такую ахинею! почитайте лучше что такое

static

в книгах по Си или там: avr123.nm.ru/05a.htm
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 21.09.2006, 00:19  
NemoCut32
Гражданин KAZUS.RU
 
Регистрация: 16.12.2004
Сообщений: 587
Сказал спасибо: 13
Сказали Спасибо 23 раз(а) в 9 сообщении(ях)
NemoCut32 на пути к лучшему
По умолчанию

Перевод у Вас конечно правильный, но тогда я бы добавил, что статические переменные и отличаются статическим выделением памяти (а не динамическим, как локальные). А вот как же с глобальными? А?
Я так понимаю, что static по сути ограничивает область видимости тем модулем, где используется - объявление в функции, значит функция; объявление модуль, значит модуль, объявите в цикле - значит этот цикл. Точто статическое объявлнение будет постоянно хранить значение верно, но покажите мне константу (или функцию), которая динамически изменяется. Это конечно можно и функцию в раме поменять и константу во флэшь переписать умеючи, но умеючи (или с дуру)можно и ещё кой чего сломать.
Так что если vovan_zh объявляет константу и она ни где боле не юзается, да + лежит во флешке пусть и объявит статик - такая военная хитрость. Зато при компиляции проекта, если где выползет такое имя где не надо - компилятор даст ошибку. Вы тоже поди на warning внимание не особо обращаете.
NemoCut32 вне форума  
Непрочитано 21.09.2006, 11:10  
vovan_zh
Прописка
 
Регистрация: 29.08.2005
Сообщений: 139
Сказал спасибо: 7
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
vovan_zh на пути к лучшему
По умолчанию

Сообщение от NemoCut32
Так что если vovan_zh объявляет константу и она ни где боле не юзается, да + лежит во флешке пусть и объявит статик - такая военная хитрость.
Я не знаю как в других компиляторах, но как мне объяснили на микрочипе, при обявлении static - компилятор размещает массив в озу (ругался потому что в одном банке пика не достаточно места), а при замене на const массив кладется во флеш. И у меня все заработало(To NemoCut32: запятая потерялась при редактировании сообщения).
Ксати, а как в этом плане дела обстоят в компиляторах для АВР, где размещаются переменые static и где const?
vovan_zh вне форума  
Непрочитано 21.09.2006, 11:46  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

Сообщение от NemoCut32
Перевод у Вас конечно правильный, .
я не переводил а "сочинение" по памяти писал.

Сообщение от NemoCut32
Я так понимаю, что static по сути ограничивает область видимости тем модулем, где используется
Нет ! там же ясно написано - видимость определяется ТОЛЬКО тем где объявлена переменная !

а СТАТИК говорит компилу чтоб содержимое переменной сохранялось между вызовами функции.

СТАТИК писать к глобальной переменной бессмысленно так как они и так хранятся ВЕЧНО !
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 23.09.2006, 00:24  
NemoCut32
Гражданин KAZUS.RU
 
Регистрация: 16.12.2004
Сообщений: 587
Сказал спасибо: 13
Сказали Спасибо 23 раз(а) в 9 сообщении(ях)
NemoCut32 на пути к лучшему
По умолчанию

Уважаемый avr123-nm-ru, а я Вам что пишу. Тоже самое.
Но тема поднята серьёзная, во многих случаях в описании языков, как C, так других, нет точного объяснения что и зачем + возможны разные трактовки. Если avr123-nm-ru проффесионал, то это не значит, что он на все 100% обязан знать всю историю и ДОТОШНО объяснять каждую мелочь. Уверен уж он точно знает что и где использовать хотя бы в виду огромного практического опыта. Но что делать новичкам? Мне многоуважаемый avr123-nm-ru Ваш сайт (как впрочем и начинание) понравился, правда не расцветкой (дизайнера не могли найти), а содержанием. Однако это не решает проблемы у vovan_zh оказалась проблема распределения памяти, кстати описано это только в доке на компилятор в применении к конкретной платформе. Хотелось бы где нибудь увидеть описание такой специфики.
поэтому есть три предложения:
1) Организаторам сайта - создать принципиально новую ветку форума: Для НОВИчКОВ!, где будут обсуждаться подобные вопросы. Минимум помогут старшие, аесли есть желание найдёте всё в книжках. Сайт и так славится тем, что в форумах даёт ответы на множество вопросов и помогает молодёже становиться на ноги(возмложно она отплатит тем же).
2) vovan_zh просьба написать, что получилось с моими советами по поводу *s[], в ответ: в разных компиляторах по разному, но изначально: static - объявление переменных и констант расположенных в памяти ПОСТОЯННО, const - объявление НЕИЗМЕНЯЕМЫХ переменных. Далее у разных процессоров и архитектур есть разные методы расположения этих данных, например если Вы напишете const в AVR IAR, то он просто выделит в ОЗУ место гад, далее из флэшь при старте проинициализирует эту память (займёт место и там и там) но с этими данными будет работать как с памятью (str, ldr), а если Вы объявите данные как flash, то он их разместит только во флэшке и будет работать с ними через lpm.
З.Ы. Уважаемый avr123-nm-ru! Если интересно подискутировать, то напиште в личку. Не будем загрязнять форум и вводить в непонятки новичков. Брань не делает престижа ни кому.
Всем Удачи! Тьфу, теперь говорят ВСЕМ РЕСПЕКТ!
NemoCut32 вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массивы в АВР Limit Микроконтроллеры, АЦП, память и т.д 9 02.05.2006 13:55


Часовой пояс GMT +4, время: 19:33.


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