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

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

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

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

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

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

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

 
Опции темы
Непрочитано 28.06.2007, 21:49  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Вот что заметил:
У меня переменные обьявляются так:
Код:
volatile unsigned int cat,dgit,i,flag;
Так вот, если убрать volatile то все работает как надо...
Но меня это не сильно спасает, так как тот код я использую в подпрограмме, и переменная будет храниться в оперативной памяти...
Реклама:
dimonbest вне форума  
Непрочитано 28.06.2007, 23:30  
TEHb
Почётный гражданин KAZUS.RU
 
Аватар для TEHb
 
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
TEHb на пути к лучшему
По умолчанию

Чем отличается код в .lst файлах если менять это объявление? Я не очень хорошо разбираюсь в командах AVR, поэтому нужны подробности.
TEHb вне форума  
Непрочитано 28.06.2007, 23:41  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Вот код с volatile, где "не работает"
Код:
                 ;     409 i=0;
                 ;     410 while(dgit›=10)
                 _0x51:
00028e 91a0 0162 	LDS  R26,_dgit
000290 91b0 0163 	LDS  R27,_dgit+1
000292 971a      	SBIW R26,10
000293 f038      	BRLO _0x53
                 ;     411 {
                 ;     412 i++;
000294 d05a      	RCALL SUBOPT_0xC
                 ;     413 dgit=dgit-50; 
000295 97f2      	SBIW R30,50
000296 93e0 0162 	STS  _dgit,R30
000298 93f0 0163 	STS  _dgit+1,R31
                 ;     414 // show_v(2,'5');
                 ;     415 }   
00029a cff3      	RJMP _0x51
                 _0x53:
                 ;     416  xy(0,4);
00029b d017      	RCALL SUBOPT_0x2
                 ;     417  show_v(2,dgit);
00029c d060      	RCALL SUBOPT_0xD
00029d 2766      	CLR  R22
00029e 2777      	CLR  R23
00029f 940e 0310 	CALL __PUTPARD1
0002a1 de85      	RCALL _show_v
                 ;     418 
                 ;     419  te:
                 _0x54:
                 ;     420  goto te;
а вот код без volatile, где "работает"
Код:
                 ;     408 i=0;
                 ;     409 while(dgit›=10)
                 _0x51:
00028a e0ea      	LDI  R30,LOW(10)
00028b e0f0      	LDI  R31,HIGH(10)
00028c 165e      	CP   R5,R30
00028d 066f      	CPC  R6,R31
00028e f048      	BRLO _0x53
                 ;     410 {
                 ;     411 i++;
00028f e0e1      	LDI  R30,LOW(1)
000290 e0f0      	LDI  R31,HIGH(1)
000291 0e7e
000292 1e8f      	__ADDWRR 7,8,30,31
                 ;     412 dgit=dgit-50; 
000293 e3e2      	LDI  R30,LOW(50)
000294 e0f0      	LDI  R31,HIGH(50)
000295 1a5e
000296 0a6f      	__SUBWRR 5,6,30,31
                 ;     413 // show_v(2,'5');
                 ;     414 }   
000297 cff2      	RJMP _0x51
                 _0x53:
                 ;     415  xy(0,4);
000298 d01a      	RCALL SUBOPT_0x2
                 ;     416  show_v(2,dgit);
000299 e0e2      	LDI  R30,LOW(2)
00029a 93ea      	ST   -Y,R30
00029b 2de5
00029c 2df6      	__GETW1R 5,6
00029d 2766      	CLR  R22
00029e 2777      	CLR  R23
00029f 940e 02f8 	CALL __PUTPARD1
0002a1 de85      	RCALL _show_v
                 ;     417 
                 ;     418  te:
                 _0x54:
                 ;     419  goto te;
dimonbest вне форума  
Непрочитано 28.06.2007, 23:51  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

То, что код рабочий, подтверждает то, что в аврстудио все работает, да и спаяная схема работает...
Как мне кажется, протеус что то путает в оперативной памяти (изменяет содержимое, где храниться переменная dgit), поэтому и заходит в этот цикл и выйти из него не может...
dimonbest вне форума  
Непрочитано 29.06.2007, 15:18  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

С этого скрина видно, что программа в цикл while не должна заходить, т.к. dgit=2. Но она заходит... И почему пишет что 2 переменные не в текущем блоке памяти???

-- Прилагается рисунок: --

dimonbest вне форума  
Непрочитано 29.06.2007, 15:30  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

И ошибка эта???

-- Прилагается рисунок: --

dimonbest вне форума  
Непрочитано 04.07.2007, 21:05  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию все тот же глюк

Написал програмку, которая выводит значение переменной на 3 семисегментных индикатора. Алгоритм таков:
Код:
 i=0;
while(dgit›=100)
{
i++;
dgit=dgit-100;
}   
if (i!=0)flag =1;
if (flag)out_char1(i);

  

i=0;
while(dgit›=10)
{
i++;
dgit=dgit-10;
}         
if (i!=0)flag =1; 
if (flag)out_char2(i);
 

i=0;
while(dgit›=1)
{
i++;
dgit=dgit-1;
}       
out_char3(i);
Функция out_charх(i) - отображение символа на индикаторе номер х.
Так вот, количество сотен выводит, а дальше заходит в цикл десятков и выйти с него не может...
И что самое интересное, если в заголовке функции
Код:
void cat_digit (unsigned int dgit)
 {
переменную сделать 4 байтовую (unsigned long int dgit), то все начинает работать... Где собака зарыта? Проект прикрепляю...

Прикрепленный файл: 6379137.rar
dimonbest вне форума  
Непрочитано 04.07.2007, 21:21  
TEHb
Почётный гражданин KAZUS.RU
 
Аватар для TEHb
 
Регистрация: 27.06.2005
Сообщений: 1,389
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
TEHb на пути к лучшему
По умолчанию

Лучше прикрепи два .lst файла - один который глючит, а второй - который работает (с минимальнейшими изменениями).
TEHb вне форума  
Непрочитано 04.07.2007, 21:27  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

есть...

Прикрепленный файл: 3596563.rar
dimonbest вне форума  
Непрочитано 05.07.2007, 21:11  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

ТЕНЬ, спасай, очень нужна помощь...
dimonbest вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DS18B20 спонтанно греется, глюк или брак ? lukrom Коллекция глюков 32 21.10.2013 10:59
Подскажите аналог 2SB1032(k) или что делать? e-not Информация по радиокомпонентам 6 24.06.2009 03:44
Датчик DS18B20 спонтанно греется, глюк или брак? lukrom Автоматика и аппаратура связи 2 23.03.2008 16:58
Datasheet на GigaByte мать или что случилось targetorsk Ремонт оргтехники 1 04.04.2007 16:44
Что-то я туплю, или LCD DV16100 и PicBasic DK Микроконтроллеры, АЦП, память и т.д 1 01.10.2003 09:32


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


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