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

 
 
> Проблема с mega88
Stanislav_S
сообщение Feb 5 2008, 19:35
Сообщение #1


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

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



Возникла такая проблема. Вотчдог выключен WDTON=1, WDTCSR = 0; Пауэр контроллер тоже 0. В программе вставляю задержку __delay_cycles(1000); ( кварц 20 МГц), мега периодически сбрасывается в чем может быть проблема? Чтение даташита ситуацию пока не проясняет.


--------------------
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
 
Start new topic
Ответов (1 - 13)
jasper
сообщение Feb 5 2008, 19:42
Сообщение #2


Народный чинитель
***

Группа: Участник
Сообщений: 415
Регистрация: 15-07-05
Пользователь №: 6 811



Возможно, программный глюк – программа улетает не туда.
Какой компилятор? Включена ли оптимизация?
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Feb 5 2008, 19:54
Сообщение #3


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

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



Цитата(jasper @ Feb 6 2008, 00:42) *
Возможно, программный глюк – программа улетает не туда.
Какой компилятор? Включена ли оптимизация?

Компилятор IAR 3.20C оптимизация выключена.


--------------------
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
prottoss
сообщение Feb 5 2008, 20:00
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Stanislav_S @ Feb 6 2008, 02:35) *
Возникла такая проблема. Вотчдог выключен WDTON=1, WDTCSR = 0; Пауэр контроллер тоже 0. В программе вставляю задержку __delay_cycles(1000); ( кварц 20 МГц), мега периодически сбрасывается в чем может быть проблема? Чтение даташита ситуацию пока не проясняет.


Table 25. Watchdog Timer Configuration
WDTON_WDE_WDIE_Mode______________Action on Time-out
0_______0____0_____Stopped____________None
0_______0____1_____Interrupt Mode_______Interrupt
0_______1____0_____System Reset Mode__Reset
0_______1____1_____Int. and Sys.Reset___ Interrupt, then go to System Reset Mode
1_______x____x_____ System Reset Mode_ Reset



У Вас получается самый последний режим - то бишь периодический сброс


--------------------
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Feb 5 2008, 20:13
Сообщение #5


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

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



Цитата(prottoss @ Feb 6 2008, 01:00) *
Table 25. Watchdog Timer Configuration
WDTON_WDE_WDIE_Mode______________Action on Time-out
0_______0____0_____Stopped____________None
0_______0____1_____Interrupt Mode_______Interrupt
0_______1____0_____System Reset Mode__Reset
0_______1____1_____Int. and Sys.Reset___ Interrupt, then go to System Reset Mode
1_______x____x_____ System Reset Mode_ Reset



У Вас получается самый последний режим - то бишь периодический сброс

(1)
WDTON WDE WDIE Mode Action on Time-out
1 0 0 Stopped None
1 0 1 Interrupt Mode Interrupt
1 1 0 System Reset Mode Reset Interrupt and System Reset Interrupt, then go to System
1 1 1 Mode Reset Mode
0 x x System Reset Mode Reset
ote: 1. WDTON Fuse set to “0“ means programmed and “1“ means unprogrammed.
У меня так написано получается режим стоп.


--------------------
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
prottoss
сообщение Feb 5 2008, 20:21
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Stanislav_S @ Feb 6 2008, 03:13) *
Не знаю... Сам я М88 не пользовал - просто заглянул в даташит - диск argussoft за декабрь 2007 года. Вообще про Атмел можно иногда применить пословицу - "На заборе слово нехорошее написано, а там дрова лежат".

Думаю, Вам стоит попробовать и прояснить ситуацию. Заодно и публика знать будет, где собака порылась smile.gif


--------------------
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Feb 5 2008, 21:55
Сообщение #7


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

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



Цитата(prottoss @ Feb 6 2008, 01:21) *
Не знаю... Сам я М88 не пользовал - просто заглянул в даташит - диск argussoft за декабрь 2007 года. Вообще про Атмел можно иногда применить пословицу - "На заборе слово нехорошее написано, а там дрова лежат".

Думаю, Вам стоит попробовать и прояснить ситуацию. Заодно и публика знать будет, где собака порылась smile.gif

Насчет документации согласен, есть такое smile.gif Ладно спасибо, завтра вечером продолжу.....


--------------------
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
defunct
сообщение Feb 5 2008, 22:45
Сообщение #8


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



MCUSR - покажет причину сброса.

добавьте этот код или подобный себе в main:

Код
main()
{
    unsigned char tmp = MCUSR; // store system reset source flags
    MCUSR = 0x00; // clear the sys reset source
    printf("MCUSR_%x\r\n", tmp);
  
}


Если в MCUSR будет 0 - тогда сброса не было и имеет место программный сбой (прыжек по адресу 0).
Go to the top of the page
 
+Quote Post
jasper
сообщение Feb 6 2008, 05:27
Сообщение #9


Народный чинитель
***

Группа: Участник
Сообщений: 415
Регистрация: 15-07-05
Пользователь №: 6 811



Цитата(Stanislav_S @ Feb 6 2008, 00:54) *
Компилятор IAR 3.20C оптимизация выключена.

Ну, тогда не знаю. laughing.gif
Я с проблемами задержек и отимизацией на WinAVR нарывался.
Go to the top of the page
 
+Quote Post
oran-be
сообщение Feb 6 2008, 06:50
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 30-03-07
Из: Одесса
Пользователь №: 26 621



Может быть где нить далее разрешается сброс по ватчдогу? Попробуйте запрещать собаку непосредственно перед задержкой, либо запретите вообще фузом весь таймер (что особо может ничего не дать, поскольку потом, если уже есть прецедент, то и его можно разрешить).
Go to the top of the page
 
+Quote Post
vesago
сообщение Feb 6 2008, 06:54
Сообщение #11


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Если вы используете вачдог, убедитесь в правильной инициализации. Пример на 2 секунды.
Код
void Watchdog_Init(void)
{
  __watchdog_reset();
  WDTCSR = (1<<WDCE)|(1<<WDE);
  WDTCSR = (1<<WDP0)|(1<<WDP1)|(1<<WDP2)|(1<<WDE);
}


Если не используете вообще, значит что-то одно - или фуз постоянного включения вачдога включили или стек проседает.
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Feb 6 2008, 08:35
Сообщение #12


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

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



Всем спасибо, сегодня вечером буду разбираться. Собаку так и инициализировал на 2 сек, все таки думаю проблема с программой, что то куда то улетает, буду смотреть причины сброса. Кстати стек сразу поставил 0х100, что бы вопросов не было, printf не использую smile.gif


--------------------
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
vesago
сообщение Feb 6 2008, 09:12
Сообщение #13


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Типичная причина проседания стека - непроинициализированная переменная цикла, в котором что нибудь делается по указателю или с массивами.
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Feb 6 2008, 09:41
Сообщение #14


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

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



Цитата(vesago @ Feb 6 2008, 14:12) *
Типичная причина проседания стека - непроинициализированная переменная цикла, в котором что нибудь делается по указателю или с массивами.

Нет там все проще, просто программная реализация SPI, обычное махание ножкой и считывание данных.


--------------------
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

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 07:36
Рейтинг@Mail.ru


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