реклама на сайте
подробности

 
 
> проблема портирования программы с AtMega32 на AtMega 128
Nekromant
сообщение Aug 6 2008, 07:05
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 21-03-07
Пользователь №: 26 369



Доброго времени суток,
суть проблемы заключается ч том, что написанная программа для AtMega 128 работает без каких либо изъянов, но при попытке ее перенести на AtMega 32 возникла следующая проблема:
приведенная ниже конструкция на 32 меге просто не работает:
Вариант 1
if(tmp==0x00)
{
Closed=true;
}
else
{
Closed=false;
if(tmp==0x3F)
{
All=true;
}
else
{
All=false;
for( i = 1; i < 6; i++)
{
if(tmp & (1 << i))
SensorData[i]=false;
else
SensorData[i]=true;
}

}
}
Вариант 2
if(tmp==0x00)
{
Closed=true;
}

else
{
Closed=false;
if(tmp==0x3F)
{
All=true;
}
else
{
All=false;
tmp=(~tmp)&0x01;
if(tmp!=0x01)
{
Nurse1=true;
}
else
{
Nurse1=false;
}
tmp=tmp_data;
tmp=(~tmp)&0x02;
if(tmp!=0x02)
{
Nurse2=true;
}
else
{
Nurse2=false;
}
tmp=tmp_data;
tmp=(~tmp)&0x04;
if(tmp!=0x04)
{
Hall=true;
}
else
{
Hall=false;
}
tmp=tmp_data;
tmp=(~tmp)&0x08;
if(tmp!=0x08)
{
Bedroom=true;
}
else
{
Bedroom=false;
}
tmp=tmp_data;
tmp=(~tmp)&0x10;
if(tmp!=0x10)
{
Kitchen=true;
}
else
{
Kitchen=false;
}
tmp=tmp_data;
tmp=(~tmp)&0x20;
if(tmp!=0x20)
{
Door=true;
}
else
{
Door=false;
}
}
оба варианта ведут себя одинаково нормально на меге 128 и оба же варианта ведут себя одинаково плохо на меге 32 07.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MrYuran
сообщение Aug 6 2008, 07:14
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



1. Используйте теги [code][/code] для кусков кода, иначе нечитабельно вообще
2. Вместо if/else/else/else лучше использовать switch/case по возможности
3. Вряд ли проблема в этом месте, код достаточно примитивный.
Опять же, не указали, что значит не работает и каким именно образом.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Nekromant
сообщение Aug 6 2008, 07:35
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 21-03-07
Пользователь №: 26 369



1)именно плохо в том, что на 32 меге изменяются только флаги nurse1 и nurse2 остальные как будто вообще не существуют
2) проверил все части программы которые берут эти флаги-их изменение ничего не выявило, т. е. как были активными только два первые флага так они и остались
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 6 2008, 07:45
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Nekromant @ Aug 6 2008, 10:35) *
2) проверил все части программы которые берут эти флаги-их изменение ничего не выявило, т. е. как были активными только два первые флага так они и остались
Телепатически предположу, что tmp изменяется в прерывании и объявлена без квалификатора volatile.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 6 2008, 07:59
Сообщение #5


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Сергей Борщ @ Aug 6 2008, 11:45) *
Телепатически предположу, что tmp изменяется в прерывании и объявлена без квалификатора volatile.

++
То же самое хотел сказать
Вообще, тяжело телепатировать на голодный желудок...


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Nekromant
сообщение Aug 6 2008, 08:12
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 21-03-07
Пользователь №: 26 369



Цитата(MrYuran @ Aug 6 2008, 10:59) *
++
То же самое хотел сказать
Вообще, тяжело телепатировать на голодный желудок...

tmp не в прерывании изменяется.
tmp_data=Sens_Data;
tmp=tmp_data; вот откуда берется tmp.
поа функция один раз не не выполнится второй раз копирования не происходит)
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Aug 6 2008, 08:24
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Nekromant @ Aug 6 2008, 11:12) *
tmp не в прерывании изменяется.
tmp_data=Sens_Data;
tmp=tmp_data; вот откуда берется tmp.
поа функция один раз не не выполнится второй раз копирования не происходит)

Дык это сигналы, связанные со внешним миром. Подключены они правильно? На те же порты?

А вообще-то ... Как лодку назовешь, так она и поплывет.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Nekromant
сообщение Aug 6 2008, 08:38
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 21-03-07
Пользователь №: 26 369



да, это сигналы, подключенные на порты, точнее 6 датчиков висящих на PORTC

Сообщение отредактировал Nekromant - Aug 6 2008, 08:48
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Aug 6 2008, 09:05
Сообщение #9


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Цитата(Nekromant @ Aug 6 2008, 13:38) *
да, это сигналы, подключенные на порты, точнее 6 датчиков висящих на PORTC

А фьюз JTAG как установлен?


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
Nekromant
сообщение Aug 6 2008, 09:46
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 21-03-07
Пользователь №: 26 369



фьюз я не трогал просто в функции маин в самом начале прописано
MCUCSR = (1 << JTD); //Disable JTAG
MCUCSR = (1 << JTD); //Disable JTAG
(по совету Haker Fox)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Nekromant   проблема портирования программы с AtMega32 на AtMega 128   Aug 6 2008, 07:05
- - Непомнящий Евгений   теги [code] используйте... А как именно "пло...   Aug 6 2008, 07:11
|- - Сергей Борщ   Цитата(Nekromant @ Aug 6 2008, 11:12) tmp...   Aug 6 2008, 08:19
|- - Stanislav_S   Цитата(Nekromant @ Aug 6 2008, 14:46) фью...   Aug 6 2008, 10:53
|- - Nekromant   Цитата(Stanislav_S @ Aug 6 2008, 13:53) П...   Aug 6 2008, 11:38
|- - MrYuran   Цитата(Nekromant @ Aug 6 2008, 15:38) то ...   Aug 6 2008, 11:50
- - GDI   Может с размером стека проблемы? Map-файл посмотри...   Aug 6 2008, 07:21
- - Nekromant   Точно, снял фьюз и большая часть глюков исчезла...   Aug 6 2008, 11:59
|- - Stanislav_S   Цитата(Nekromant @ Aug 6 2008, 16:59) Точ...   Aug 6 2008, 12:04
|- - Палыч   Цитата(Nekromant @ Aug 6 2008, 14:59) Точ...   Aug 6 2008, 12:11
|- - MrYuran   Цитата(Палыч @ Aug 6 2008, 16:11) Интерес...   Aug 6 2008, 12:17
|- - Nekromant   [quote name='MrYuran' date='Aug 6 2008...   Aug 6 2008, 12:29
- - defunct   Цитата(Stanislav_S @ Aug 6 2008, 15:04) Я...   Aug 6 2008, 12:18
|- - Stanislav_S   Цитата(defunct @ Aug 6 2008, 17:18) Кто в...   Aug 6 2008, 13:28
|- - defunct   Цитата(Stanislav_S @ Aug 6 2008, 16:28) Л...   Aug 6 2008, 14:07
|- - Stanislav_S   Цитата(defunct @ Aug 6 2008, 19:07) Чем л...   Aug 6 2008, 16:56
|- - defunct   Цитата(Stanislav_S @ Aug 6 2008, 19:56) т...   Aug 6 2008, 19:15
- - Nekromant   если честно ума не приложу взял то же самое продел...   Aug 6 2008, 12:20
|- - defunct   Цитата(Nekromant @ Aug 6 2008, 15:20) так...   Aug 6 2008, 12:26
|- - Палыч   Цитата(Nekromant @ Aug 6 2008, 15:20) есл...   Aug 6 2008, 12:31
|- - Nekromant   Цитата(Палыч @ Aug 6 2008, 15:31) ИМХО, э...   Aug 6 2008, 14:59
|- - defunct   Цитата(Nekromant @ Aug 6 2008, 17:59) 2) ...   Aug 6 2008, 15:14
|- - Nekromant   Цитата(defunct @ Aug 6 2008, 18:14) Если ...   Aug 6 2008, 15:33
|- - defunct   Цитата(Nekromant @ Aug 6 2008, 18:33) Я б...   Aug 6 2008, 16:09
- - Nekromant   Мой девайс сегодня оттестировался и вполне отработ...   Aug 7 2008, 02:14


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 11:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.0148 секунд с 7
ELECTRONIX ©2004-2016