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

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

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

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

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

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

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

 
Опции темы
Непрочитано 24.02.2010, 18:34  
maxNTF
Вид на жительство
 
Регистрация: 18.06.2006
Сообщений: 434
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
maxNTF на пути к лучшему
Вопрос Присвоение значения - глюк Протеуса?

Какой то не понятный глюк. отладку кода произвожу в Протеусе. PIC18F2520
Если присваиваем в начале функции все нормально, а если в конце то нет! На железе не пробовал, вот и думаю, может глюк Протеуса?
Код:
void InputParameters(void)
{
unsigned char i=0, i1=0;

//Если сдесь осуществляем присваивание то все как нужно
GroupTime[0]=50;//принимает значение
AlarmTime[0]=50;//принимает значение

Ztype[0]=4;
	Ztype[1]=0;

Zgroup[0]=0;
	Zgroup[1]=0;

Zoperation[0]=0;
	Zoperation[1]=6;

Ztime[0]=4;
	Ztime[1]=4;

Zvaluemin[0][0]=0x00;
Zvaluemin[0][1]=0x00;
	Zvaluemin[1][0]=0x10;
	Zvaluemin[1][1]=0x00;

Zvaluemax[0][0]=0x00;
Zvaluemax[0][1]=0x00;
	Zvaluemax[1][0]=0x12;
	Zvaluemax[1][1]=0x00;

//Если сдесь осуществляем присваивание, GroupTime[0] и AlarmTime[0] остаются равными 0
GroupTime[0]=50;//принимает значение
AlarmTime[0]=50;//принимает значение

amkey=EEPROM_READ(KYES*KBIT);
if(amkey›=KYES) {amkey=0; return;}
for(i=0;i‹amkey;i++) for(i1=0;i1‹KBIT;i1++) KeyBuf[i][i1]=EEPROM_READ(i*KBIT+i1);
}
Реклама:
maxNTF вне форума  
Непрочитано 24.02.2010, 20:27  
Saadov
Почётный гражданин KAZUS.RU
 
Аватар для Saadov
 
Регистрация: 13.11.2008
Адрес: г.Смоленск
Сообщений: 2,018
Сказал спасибо: 348
Сказали Спасибо 1,024 раз(а) в 552 сообщении(ях)
Saadov на пути к лучшему
По умолчанию Re: Присвоение значения - глюк Протеуса?

Ну так вы попробуйте сначала объявить, а потом уже в программе присвоить. Нельзя использовать переменные, если вы их не объявили.
Saadov вне форума  
Непрочитано 24.02.2010, 20:34  
TEHb
Почётный гражданин KAZUS.RU
 
Аватар для TEHb
 
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
TEHb на пути к лучшему
По умолчанию Re: Присвоение значения - глюк Протеуса?

1. Какой компилятор?
2. Включена ли оптимизация? Если да - возможно ваш код удалён за ненадобностью.
3. Ну, и как всегда - пример в студию.
TEHb вне форума  
Непрочитано 24.02.2010, 20:57  
maxNTF
Вид на жительство
 
Регистрация: 18.06.2006
Сообщений: 434
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
maxNTF на пути к лучшему
По умолчанию Re: Присвоение значения - глюк Протеуса?

Сообщение от TEHb Посмотреть сообщение
1. Какой компилятор?
2. Включена ли оптимизация? Если да - возможно ваш код удалён за ненадобностью.
3. Ну, и как всегда - пример в студию.
1. HI-TECH PICC18.
2. Где там оптимизация?
3. На работе остался.
maxNTF вне форума  
Непрочитано 24.02.2010, 20:58  
maxNTF
Вид на жительство
 
Регистрация: 18.06.2006
Сообщений: 434
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
maxNTF на пути к лучшему
По умолчанию Re: Присвоение значения - глюк Протеуса?

Сообщение от Saadov Посмотреть сообщение
Ну так вы попробуйте сначала объявить, а потом уже в программе присвоить. Нельзя использовать переменные, если вы их не объявили.
Переменная глобальная, объявлена в начале исходника.
Если бы она не была объявлена, как бы работало?
maxNTF вне форума  
Непрочитано 24.02.2010, 21:03  
TEHb
Почётный гражданин KAZUS.RU
 
Аватар для TEHb
 
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
TEHb на пути к лучшему
По умолчанию Re: Присвоение значения - глюк Протеуса?

Сообщение от maxNTF Посмотреть сообщение
2. Где там оптимизация?
В ключах командной строки компилятора. По умолчанию она включена в --opt=1 (Level 1), чтобы выключить нужно задать --opt=none.
TEHb вне форума  
Непрочитано 24.02.2010, 21:12  
maxNTF
Вид на жительство
 
Регистрация: 18.06.2006
Сообщений: 434
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
maxNTF на пути к лучшему
По умолчанию Re: Присвоение значения - глюк Протеуса?

Сообщение от TEHb Посмотреть сообщение
В ключах командной строки компилятора. По умолчанию она включена в --opt=1 (Level 1), чтобы выключить нужно задать --opt=none.
А в MPLAB на каждый исходник можно вызвать настройки "Build Options"
У меня везде стоит Global optimization level - 9
И галочка на Enable assembler optimization
Это что?
maxNTF вне форума  
Непрочитано 24.02.2010, 21:23  
maxNTF
Вид на жительство
 
Регистрация: 18.06.2006
Сообщений: 434
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
maxNTF на пути к лучшему
По умолчанию Re: Присвоение значения - глюк Протеуса?

ВО стряпал проект, та же петрушка!
Вложения:
Тип файла: zip test.zip (34.1 Кб, 47 просмотров)
maxNTF вне форума  
Непрочитано 25.02.2010, 13:59  
TEHb
Почётный гражданин KAZUS.RU
 
Аватар для TEHb
 
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
TEHb на пути к лучшему
По умолчанию Re: Присвоение значения - глюк Протеуса?

Потому что срабатывает
Код:
if(amkey›=KYES) {amkey=0; return;}
т.к. amkey==0xFF по крайней мере на моём пустом дизайне.
TEHb вне форума  
Непрочитано 25.02.2010, 14:24  
maxNTF
Вид на жительство
 
Регистрация: 18.06.2006
Сообщений: 434
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
maxNTF на пути к лучшему
По умолчанию Re: Присвоение значения - глюк Протеуса?

Сообщение от TEHb Посмотреть сообщение
Потому что срабатывает
Код:
if(amkey›=KYES) {amkey=0; return;}
т.к. amkey==0xFF по крайней мере на моём пустом дизайне.
Ну так это после присваения!
Код:
GroupTime[0]=50;
AlarmTime[0]=50;
amkey=EEPROM_READ(KYES*KBIT);
if(amkey›=KYES) {amkey=0; return;}
Да! И еще одно, если эти переменные типа char, тогда работает!

Последний раз редактировалось maxNTF; 25.02.2010 в 14:28.
maxNTF вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Решено] Глюк Протеуса? igor-k Proteus, KiCAD и другие ECAD 10 12.12.2009 22:09
Atmega16+DS18B20 глюк протеуса? grisha109 Микроконтроллеры, АЦП, память и т.д 3 29.11.2009 15:35


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


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