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

 
 
 
Reply to this topicStart new topic
> Проблема с функцией delay, Помогите разобраться с глюком.
GSK
сообщение May 13 2008, 06:46
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 157
Регистрация: 1-03-06
Пользователь №: 14 835



Всем привет.

У меня следующая проблема:

Контроллет ATmega128. Установки заводские.
CKSEL=0001 SUT=10
К ножке 7 порта B и шине питания подключен светодиод.
Конструкция питаеться от 3,3 В.


В CodeVision в опциях выставлен кристал 1.000 МГц

#include <mega128.h>
#include <delay.h>

void main(void){
PORTB=0x80;
DDRB=0x80;

PORTB.7=0;
delay_us(10000);
// delay_us(10000); //<-------------------- Вот проблема !!!!
// delay_us(10000);
// delay_us(10000);
PORTB.7=1;
}

При включени питания светодиод загораеться и гаснет. Вроде всё как должно быть. Затем я убираю коментарий со строки delay_us(10000); и задержка увеличиваеться в двое. Диод также при включении мигает, но заметно дольше. Если же я убираю коментарий с третьей строки, то диод при подаче питания зажигаеться и больше не гаснет. Т.е. контроллер зависает.
delay_ms(10); - задержка в милисикунды также вешает контроллер.

Пробовал на BascomAVR

$regfile = "m128def.dat"
$crystal = 1000000
$baud = 19200
$baud1 = 19200
$hwstack = 32
$swstack = 10
$framesize = 40

Ddrb = &HFF
Portb = 0
Waitus 10
Portb = 255

End

Работает до тех пор пока задержка меньше 15 микросекунд.

В чем проблема?
Go to the top of the page
 
+Quote Post
Alex11
сообщение May 13 2008, 06:58
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



А нет ли у Вас проблем с питанием и фильтрацией. Может быть, светодиод включается и сжирает питание. Пока конденсатор фильтра не разрядился - все работает. Программно так быть не может.
Go to the top of the page
 
+Quote Post
=GM=
сообщение May 13 2008, 07:45
Сообщение #3


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(GSK @ May 13 2008, 05:46) *
К ножке 7 порта B и шине питания подключен светодиод. Конструкция питается от 3,3 В

У вас светодиод подключен без балластного резистора?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
psw
сообщение May 13 2008, 08:18
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 8-06-06
Пользователь №: 17 866



так и должно быть, зажигаем --- пауза---- тушим---- и тутже зажигаем

может так попробовать

PORTB.7=0;
delay_us(10000);
// delay_us(10000); //<-------------------- Вот проблема !!!!
// delay_us(10000);
// delay_us(10000);
PORTB.7=1;
delay_us(10000);
// delay_us(10000); //<-------------------- Вот проблема !!!!
// delay_us(10000);
// delay_us(10000);

Сообщение отредактировал psw - May 13 2008, 08:20
Go to the top of the page
 
+Quote Post
Палыч
сообщение May 13 2008, 08:22
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(psw @ May 13 2008, 11:18) *
...и тутже зажигаем


Нет этого у автора вопроса!
Go to the top of the page
 
+Quote Post
IEC
сообщение May 13 2008, 09:44
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



А не включен ли аппаратный ВатчДог?
Go to the top of the page
 
+Quote Post
GSK
сообщение May 13 2008, 10:34
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 157
Регистрация: 1-03-06
Пользователь №: 14 835



Всем спасибо, кто откликнулся.
Проблема неожиданно снялась после снятия фьюза совместимости М103 и М128. (Хотя я понять почему не могу).
Эксперемены я провожу на плате AVR-SAVVY128.
1.Проблем с питанием нет. На плате есть регулятор.
2.Светодиод включен с баластным резистором.
3.ВатчДог выключен.
4.Перестановка функции delay_us не интересна, т.к. контроллер виснет, если задержки идут одна за одной или время задержки больше 20000 микросекунд.

Похоже этот глюк необьясним! Бывает.
Go to the top of the page
 
+Quote Post
defunct
сообщение May 13 2008, 10:44
Сообщение #8


кекс
******

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



Цитата(GSK @ May 13 2008, 13:34) *
Проблема неожиданно снялась после снятия фьюза совместимости М103 и М128. (Хотя я понять почему не могу).

Потому что m103 и m128 это разные МК. Программа для m103 не будет работать на m128, также как и программа для m128 на m103 - разное распределение памяти.

при вызове функции используется стек, а значит - память. Т.е. у вас стек мог располагаться по адресам, где нет памяти физически. Отсюда и глюк.
Go to the top of the page
 
+Quote Post
GSK
сообщение May 13 2008, 11:11
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 157
Регистрация: 1-03-06
Пользователь №: 14 835



Ну, несовсем так.
ATmega128 полностью совместим по расположению выводов с ATmega103 и может быть установлен на существующую плату для ATmega103.
Если запрограммировать конфигурационный бит M103C, то ATmega128 будет функционировать в режиме совместимости с ATmega103, настраивая ОЗУ, линии ввода-вывода и векторы прерываний как описано выше. Однако, некоторые новые функции ATmega128 в этом режиме станут недоступными. Данные функции перечислены ниже:

Т.е. при запрограмированном бите M103C (заводская учтановка) неиспользуемая память будет недоступна для стека.
Go to the top of the page
 
+Quote Post
defunct
сообщение May 13 2008, 11:20
Сообщение #10


кекс
******

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



Цитата(GSK @ May 13 2008, 14:11) *
Т.е. при запрограмированном бите M103C (заводская учтановка) неиспользуемая память будет недоступна для стека.

Cмотря как его CV распределяет.
Если стек расположен внизу, то он может пересечся с периферией.

Цитата
настраивая ОЗУ, линии ввода-вывода и векторы прерываний.

Вы код в CV компилировали под m103 или под m128 с запрограммированным M103C?
Если под m128 то чему удивляться?
Go to the top of the page
 
+Quote Post

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

 


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


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