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

 
 
> HELP MEGA8!, Срочно нужна помощь!!!
Sergio66
сообщение Jun 17 2005, 09:02
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 235
Регистрация: 9-02-05
Пользователь №: 2 526



Пормогите разобраться с Мегой8. Есть макет устройства на Мега8. Выполнен на монтажке, но разводка сделана проводами. не могу добиться корректной работы камня. Работает на 8 Мгц от внутреннего генератора (пробовал и от кварца - эффект тот же). Запускается камень с 4 -5 раза (выключаю питание).
Код простейший -

DDRB|= (1<<PB1);
for(;;)
{

PORTB^=(1<<PB1);
Delay(250);
}

Ингода моргает диод, иногда просто зажигается и не гаснет, т.е. полное ощущение, что просле выполнения PORTB^=(1<<PB1); происхордит сброс.

Этот кусок кода был введен для проверки, на самом деле, в программе идет обмен по TWI. Если программу модифицировать так:

DDRB|= (1<<PB1);
PORTB^=(1<<PB1);
{
Блок обмена TWI (режим SLAVE)
(MASTER (на Мега32) в это время работает и пытается продолбиться)
}
то диод даже не загорается.
т.е. кажется, что контроллер не выходит из режима RESET
Физически RESET подтянут через 10К и на массу через 0,1 Мкф
Режим BOD ENABLE включен.
Настолько не приложу ума, что еще можно сделать, что даже Datasheet весь прочитал!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
indela
сообщение Jun 20 2005, 09:17
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 50
Регистрация: 13-03-05
Из: Минск
Пользователь №: 3 309



электролит - точно выкинуть надо. и обязательно brownout reset включить, и reset длинным проводом нельзя вести, без резистора и кондера точно работать на монтажке не будет или будет но сильно глючить
Go to the top of the page
 
+Quote Post
Sergio66
сообщение Jun 20 2005, 17:34
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 235
Регистрация: 9-02-05
Пользователь №: 2 526



Все это уже проделали. Brownout включен, RSTDISBL - в "1", т.е. не запрограммирован. Уже и на DIP корпусе пробывали - такая же хрень...
Появился еще один интересный симптом:
пишем:

DDRB|=(1<< PB1);
for(;;)
{
PORTB|=(1<<PB1);
while(1);
}
запускается так же через пень - колоду, но если запустился, то диод горит ярко.
модифицируем код:

long int pause;
DDRB|=(1<< PB1);
for(;;)
{
PORTB|=(1<<PB1);
pause = 0xffffff;
while(pause--);
}

запускается так же, но диод светится в четверть накала.
Вот такая вот фигня...
Go to the top of the page
 
+Quote Post
yung
сообщение Jun 21 2005, 04:39
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 25-03-05
Из: Рязань
Пользователь №: 3 669



Перезапускается камень. Так долго можно рассуждать. Архивируй и цепляй ВЕСЬ проект. Тогда может что и найдем. У самого глаз замыливается, когда долго мучаешься, бывает со стороны виднее.
Go to the top of the page
 
+Quote Post
Sergio66
сообщение Jun 21 2005, 11:05
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 235
Регистрация: 9-02-05
Пользователь №: 2 526



Эврикой это не назовешь, но, кажется я понял в чем дело! Спасибо Н. Королеву (Аргуссофт), он надоумил... Оказывается, IARовский проект - вот в чем дело. Когда весь этот же код я оформил на асме в AVRStudio, все прекрасно заработало, и камень запускается, и все работает, как нужно...
Именно в этом и дело. Что именно, я пока не разобрался. Сейчас запущу новую тему по этому поводу... Может кто чего и знает...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 12:35
Рейтинг@Mail.ru


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