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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Опять WatchDog Timer, Atmega64
_Артём_
сообщение Feb 14 2013, 17:10
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ARV @ Feb 14 2013, 18:29) *
если мне склероз не изменяет, то все в апнотах Атмела как раз наоборот было сказано - включать оптимизацию, чтобы код был наиболее коротким, чтобы между записями не было промежуточных команд,

Наверное лучше реализовать функции запрета/разрешения WDT на ассемблере.


Цитата(artic @ Feb 14 2013, 18:30) *
Загрузчик выключает WDT.

А ваша программа его включить не может, получается?

Цитата(artic @ Feb 14 2013, 18:30) *
ATmega88.

В ATmega88 WDT работает несколько иначе, чем в ATmega64.
На работу WDT влияет состояние флага MCUCSR.WDRF. В вашем буте это как-то учтено?

Go to the top of the page
 
+Quote Post
artic
сообщение Feb 14 2013, 17:48
Сообщение #17


Участник
*

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



Да, реализованно на ассемблере. Иначе при компиляции с оптимизацией по размеру
не уложиться в 4 такта.
С флагами, настройками все в порядке. Проверено временем.
Так что типа не так настроил - здесь не проходит. Все строго по даташиту.
Проблема когда загрузчик + компиляция с оптимизацией по размеру.
В остальном все гладко. Не было б загрузчика не было б проблем.)))
В место RESET я получаю зависание. А должен попасть на начало загрузчика.


Что учтено в буте не известно. Бут закрыт.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Feb 14 2013, 18:06
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Ну так сравни два асм кода с разными оптимизациями и именно то что относится к WDT


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
artic
сообщение Feb 14 2013, 18:22
Сообщение #19


Участник
*

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



Я ж говорю, при любой оптимизации работает если шить программатором.
В чем смысл сравнения?
Повторюсь.
Память aplication залитая программатором или загрузчиком идентична. (сверена после программирования)
В варианте когда загрузчиком, если изменить фьюс BOOTRST при котором
старт начнется с нулевого адреса а не с адреса загрузчика, все работает не
зависимо от того какой оптимизации файл залит.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Feb 14 2013, 19:05
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(artic @ Feb 14 2013, 19:48) *
Что учтено в буте не известно. Бут закрыт.

Может свой бут написать? Чтоб было известно, что там учтено.

Цитата(artic @ Feb 14 2013, 20:22) *
все работает не
зависимо от того какой оптимизации файл залит.

А что именно не работает после "программного сброса", если первым стартует бут? Как выглядит поведение программы? В чём отличие от таго как должно быть?
Go to the top of the page
 
+Quote Post
artic
сообщение Feb 15 2013, 05:28
Сообщение #21


Участник
*

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



После "программного сброса" ничего не работает. (Если вектор сброса указан на загрузчик и оптимизация по размеру. Писал в самом начале.) Ни бут, ни рабочее приложение. Конкретный висюн.
У меня в проге реализован механизм аварийного сброса из зависания если где в проге косяк.
Он использует внешнее прерывание от кнопки а в самой пп обработки прерывания запускается
WDR на RESET. Так и это не помогает выйти из висюна. То есть попытка использовать WDR
для сброса аварийного и сброса рабочего не дает желаемого результата.

Писать свой бут пока нет смысла. Это один случай из мно-ва других безпроблемных. Если
припрет, то напишем бут. Проблему можно обойти если взять мегу с большей памятью и забить на размер кода. Ведь с оптимизацией по скорости все пучком. Но хочется не обойти, а решить!
Go to the top of the page
 
+Quote Post
RabidRabbit
сообщение Feb 15 2013, 05:51
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040



Мож где при инициализации оборудования оптимизатор вместо ldi/out использует sbi, что оставляет часть битов "по умолчанию", что после софтового сброса и приводит к проблемам?
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Feb 15 2013, 06:32
Сообщение #23


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
Я ж говорю, при любой оптимизации работает если шить программатором.
В чем смысл сравнения?

Вы шьёте программатром, как я понимаю нет. Вы хотите разобраться почему одна из оптимизаций не работает в варианте с boot , так берите код asm и сравнивайте что компилятор изменил в загрузчике для обеих оптимизациях


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
artic
сообщение Feb 15 2013, 07:23
Сообщение #24


Участник
*

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



Загрузчик не компилирую. Он изначально есть только в hex. Исходника нет.
Go to the top of the page
 
+Quote Post

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

 


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


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