Регистрация | Последние сообщения | Персональный список | Поиск | Настройка конференции | Личные данные | Правила конференции | Список участников | Top 64 | Статистика раздела | faq | Что нового v.2.3 | Чат
Skunk Forum - Техника, Наука, Общество » Форум разработчиков РЭА »
прерывания ATMega128

Версия для печати (настроить)

Новая тема | Написать ответ

Подписаться

Автор Тема:   прерывания ATMega128
Артем
Junior Member

Сообщений: 2
Откуда: Екатеринбург
Регистрация: Март 2003

написано 09 Апреля 2003 08:27ИнфоПравкаОтветитьIP

Здравствуйте уважаемые!
Отлаживаю программу для ATMega128, но застрял на начальном этапе. Короче: вначале инициализации отключаю прерывания, затем инициализация портов, таймеров и внешних прерываний, подключения дополнительного ОЗУ 64Кб. Затем включаю прерывания и прога начинает некоректно работать. Т.е. инициализация проходит гладко, а потом начинается последовательная запись во все ячейки внешей памяти каких-то данным, хотя в проге такого нет. Симуляция в AVRStudio прохоит нармально, а в железе чудеса какие-то. Может я что-то незнаю, может надо по хитрому fuses запрограммировать. Колеги, может кто сталкивался. (программа написана на Си, компилятор GNUGCC)

skunk
Злобный админ

Сообщений: 4425
Откуда: СССР, город-герой Ленинград
Регистрация: Ноябрь 2000

написано 09 Апреля 2003 10:40ИнфоПравкаОтветитьIP

Артем
вначале инициализации отключаю прерывания
Далее хорошим тоном является обнулить всю память. Неизвестно, что в ней, после включения питания, сколько всяких неожиданных глюков из-за этого вылезает.

Весельчак У
Moderator

Сообщений: 3488
Откуда: Санктъ-Питербурхъ
Регистрация: Декабрь 2000

написано 11 Апреля 2003 04:09ИнфоПравкаОтветитьIP

А очистка флагов прерываний делается?
Регистры управления памятью правильно запрограммированы?
Сегменты правильно обозначены? и "#pragma memory" соответственно?

skunk
Паиять данных (используемая) в C чистится автоматически при инициализации переменных.

Артем
Junior Member

Сообщений: 3
Откуда: Екатеринбург
Регистрация: Март 2003

написано 11 Апреля 2003 13:29ИнфоПравкаОтветитьIP

Всем, привет!
Снова я.
Сделал очистку памяти перед всей инициализацией переменных Си. Но это не помогло. регистры управления памятью XMCRA = 0xF, MCUCR = 0xC0, XMCRB = 0;
Очистку флагов я не делал, но на все прерывания сделал на входе генерацию сигнала на свободном PINе, судя по осциллограмме ни в одно прерывание он не входит.
Разбираюсь дальше......


skunk
Злобный админ

Сообщений: 4429
Откуда: СССР, город-герой Ленинград
Регистрация: Ноябрь 2000

написано 11 Апреля 2003 15:39ИнфоПравкаОтветитьIP

Артем
Тогда варианты следующие:
1. Не назначен стек.
2. Программа вылезает в адреса не доступные физическому кристаллу.
Это еще два известных бага при которых симулятор работает, а реальный кристалл - нет. Ну, надеюсь, тактовая частота присутствует где надо?

Артем
Junior Member

Сообщений: 5
Откуда: Екатеринбург
Регистрация: Март 2003

написано 11 Апреля 2003 16:09ИнфоПравкаОтветитьIP

skunk
Я тоже сначало думал на стек, загрузил откомпилированый код, проверил. Стек иннициализируется верхом RAM памяти т.е. 10FE, далее его значение нигде не изменяется. т.к. стек растет вниз проблем это вызывать не должно. Тем более инструкции CALL в функции инициализации выполняются правильно. (проверял посредством вывода информации на свободный pin, т.е. в определеных точках программы включаю/выключаю pin, затем на осциллографе смотрю какие инструкции МК выполнил, какие нет).

Весельчак У
Moderator

Сообщений: 3494
Откуда: Санктъ-Питербурхъ
Регистрация: Декабрь 2000

написано 12 Апреля 2003 03:51ИнфоПравкаОтветитьIP

Питание хорошее? Т.е. напряжение, пульсации... Очень вероятная причина - реально такое бывало.

Ваш ответ:

Коды форума
Смайлики


Ник:    Пароль       
Отключить смайлики

Все время MSK

Склеить | Разбить | Закрыть | Переместить | Удалить

Новая тема | Написать ответ
Последние сообщения         
Перейти к:

Свяжитесь с нами | skunksworks.net

Copyright © skunksworks.net, 2000-2018

Разработка и техническая поддержка: skunksworks.net


Рейтинг@Mail.ru Яндекс.Метрика