Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATMega128: в 3х соснах заблудился
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
A. Fig Lee
Вопчем работал мой Атмел, а через 2 месяца, когда достал с полки - перестал.
Выбросил все практически, пустая программа, крашится если записал что нибудь в UCSR1C.
Опять на начало скачет.
Чувствую, хочет какойто интеррапт, которого нет? Почему раньше не хотело?
В талмуде по Атмеге128 нет толкового описания UCSRC, какято художественная литература.
У майкрочипа все четко расписано.

Вот код (если закомментировать запись в UCSR1C, доходит до лупа и крутится):

CODE
/*
* Crashtest.c
*
* Created: 5/27/2014 12:23:37 PM
* Author: Administrator
*/


#include <avr/io.h>
#include <avr/interrupt.h>
#include <string.h>

#define __enable_interrupt sei
#define __disable_interrupt cli


void Init()
{


}

void test()
{
UCSR1C = 0;

}

volatile uint32_t s;

int main(void)
{
Init();
__enable_interrupt();
test();

while(1)
{
s++;
}
}
Alex A. Mihaylov
Цитата(A. Fig Lee @ May 27 2014, 20:39) *
В талмуде по Атмеге128 нет толкового описания UCSRC, какято художественная литература.
У майкрочипа все четко расписано.


Каждый видит ровно то, что хочет увидеть.

http://www.atmel.com/Images/doc2467.pdf Страница 190 - USART Control and Status Register C – UCSRnC.

Подробнее некуда. И суда по всему дело не в этом регистре. Смотрите схему. Меняйте чип. По сбросу там должно быть 0x06 - попробуйте записать это значение (асинхронно, без четности, 8 бит, 1 стоп. Полярность не важна ибо не используется).

И прекратите ругать Atmel - их документация лучшая.
A. Fig Lee
Цитата(Alex A. Mihaylov @ May 27 2014, 14:27) *
Каждый видит ровно то, что хочет увидеть.

http://www.atmel.com/Images/doc2467.pdf Страница 190 - USART Control and Status Register C – UCSRnC.

Подробнее некуда. И суда по всему дело не в этом регистре. Смотрите схему. Меняйте чип. По сбросу там должно быть 0x06 - попробуйте записать это значение (асинхронно, без четности, 8 бит, 1 стоп. Полярность не важна ибо не используется).

И прекратите ругать Atmel - их документация лучшая.

Да, спасибо, уже нашел.
Независимо от того, что писать, хоть 6, хоть 0, все равно крашится. Но почемуто именно в этот регистр.
Похоже на стэк..

Да, чудеса..
Инструкция
STS 0x009D, R1
меняет содержимое stack pointer с 0х10F2 на 0x1000.. wacko.gif
Сергей Борщ
А вы ему случаем совместимость с мегой-103 не включили фузами?
A. Fig Lee
Цитата(Сергей Борщ @ May 27 2014, 16:01) *
А вы ему случаем совместимость с мегой-103 не включили фузами?

Было такое подозрение. Галочка не стоит, extended byte показывает 0xFF.
На всякий случай поставил галочку, проверил, снял галочку, проверил.

В обоих случаях одинаково себя ведет. Хедер платка от Олимекс с Atmega128.
Еще попробую через ISP прочитать. Сейчас JTAG пользую
alexeyv
Может быть что то в настройках проекта полетело? Например, имя проца не то
В какой среде пишете?
Сергей Борщ
Цитата(A. Fig Lee @ May 27 2014, 22:23) *
Да, чудеса..
Инструкция
STS 0x009D, R1
меняет содержимое stack pointer с 0х10F2 на 0x1000.. wacko.gif
Такое ощущение, что процессор исполняет одну программу, а отладчик показывает вам листинг от другой. То есть он показывает вам не дизассемблированное на лету содержимое памяти, а загруженный в отладчик готовый листинг. Такое наблюдалось когда в процессе запуска отладчика не заливаелась прошивка. Там нигде галочка вроде "заливать образ перед отладкой" не снята?

И да, среды бывают разные, вы наблюдаете это при шагании в окне исходника или в окне дизассемблера? Некоторые среды в окне исходников показывают сгенерированный листинг, а "честное" дизассемблированное содержимое памяти только в окне дизассемблера.
A. Fig Lee
Цитата(alexeyv @ May 28 2014, 00:14) *
Может быть что то в настройках проекта полетело? Например, имя проца не то
В какой среде пишете?


AVR Studio 6.1
Вчера проапгрейдил gcc и до AVR Studio 6.2
gcc попробовал, результат тот же.


Цитата(Сергей Борщ @ May 28 2014, 01:58) *
Такое ощущение, что процессор исполняет одну программу, а отладчик показывает вам листинг от другой. То есть он показывает вам не дизассемблированное на лету содержимое памяти, а загруженный в отладчик готовый листинг. Такое наблюдалось когда в процессе запуска отладчика не заливаелась прошивка. Там нигде галочка вроде "заливать образ перед отладкой" не снята?

И да, среды бывают разные, вы наблюдаете это при шагании в окне исходника или в окне дизассемблера? Некоторые среды в окне исходников показывают сгенерированный листинг, а "честное" дизассемблированное содержимое памяти только в окне дизассемблера.


Да, есть такое ощущение, я даже дизассемблерные коды посмотрел в .lss, сверил с hex файлом,
Есть там "10 92" и так далее.
Галочка не снята, верификация есть.
Если компилирую программу с -O2 (новый gcc -O1 тоже) или -Os то проблем нет,
но инструкцию эту выбрасывает.
Получается, заливка работает, так как меняется поведение.

Я сейчас на 80% грешу что там таки М103 compatibility какая то проблема.
Фьюз хоть и показывает, что Мега128 мод, но я ему не верю.
По пробую erase весь чип..
Делаю паралельный программатор, может от 12 В прошьется.
Чтото мне не везет с Атмелами, лежит At90s2313, At90s8515 не шьются последовательным
программатором, наверное фьюз слетел.

Да, и попробую
1) скомпилить для М103 мода (маленькая программка, мне должно и его хватить) и
2) поигратся с инструкциями не характерными для Меги128 - убедится насчет М103 мода..

Спасибо всем за помощь, проинформирую, что помогло, если поможет
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.