|
проблема портирования программы с AtMega32 на AtMega 128 |
|
|
|
Aug 6 2008, 07:05
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
 |
Ответов
|
Aug 6 2008, 07:35
|
Участник

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

|
1)именно плохо в том, что на 32 меге изменяются только флаги nurse1 и nurse2 остальные как будто вообще не существуют 2) проверил все части программы которые берут эти флаги-их изменение ничего не выявило, т. е. как были активными только два первые флага так они и остались
|
|
|
|
|
Aug 6 2008, 07:45
|

Гуру
     
Группа: Модераторы
Сообщений: 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)
|
|
|
|
|
Aug 6 2008, 07:59
|

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

|
Цитата(Сергей Борщ @ Aug 6 2008, 11:45)  Телепатически предположу, что tmp изменяется в прерывании и объявлена без квалификатора volatile. ++ То же самое хотел сказать Вообще, тяжело телепатировать на голодный желудок...
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Aug 6 2008, 08:12
|
Участник

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

|
Цитата(MrYuran @ Aug 6 2008, 10:59)  ++ То же самое хотел сказать Вообще, тяжело телепатировать на голодный желудок... tmp не в прерывании изменяется. tmp_data=Sens_Data; tmp=tmp_data; вот откуда берется tmp. поа функция один раз не не выполнится второй раз копирования не происходит)
|
|
|
|
|
Aug 6 2008, 08:38
|
Участник

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

|
да, это сигналы, подключенные на порты, точнее 6 датчиков висящих на PORTC
Сообщение отредактировал Nekromant - Aug 6 2008, 08:48
|
|
|
|
|
Aug 6 2008, 09:46
|
Участник

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

|
фьюз я не трогал просто в функции маин в самом начале прописано MCUCSR = (1 << JTD); //Disable JTAG MCUCSR = (1 << JTD); //Disable JTAG (по совету Haker Fox)
|
|
|
|
Сообщений в этой теме
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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|