Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Другие темы раздела
ATmega AVR Программный 1-wire slave на МК https://www.cyberforum.ru/ avr/ thread2086313.html
Добрый день, Возникла необходимость подключить цифровой датчик DHT22 к существующей сети 1-wire. Насколько я понял, единственное решение это программный 1-wire slave на МК который будет опрашивать...
ATmega AVR ЧЯДНТ?! Управление шаговым двигателем с таймера
Собственно, код http://pastebin.com/kWQNwEp9 Вроде бы, все просто - таймер тикает, дрыгатель идет. И почти все работает, за исключением того, что таймер должен сработать 7040 раз (выдать 3520...
Глюки с дисплеем на max7219 - как победить? ATmega AVR
сделал девайс (контроллер вытоматического управления светом и вентилятором вытяжки на кухне) где в качестве дополнения есть часы и 4 цифры семисегментного индикатора индикация железно сделана на...
ATmega AVR spi.h и alcd.h не совместимы?! Быть может я уже не первый задаю такой вопрос... Среда программирования: CodeVisionAVR, Proteus 7 (ISIS 7) Суть проблемы: Соединяю два микроконтроллера по интерфейсу spi, ну всё вроде как... https://www.cyberforum.ru/ avr/ thread2086310.html
ATmega AVR Помогите срочно!проблемы с atmega48 https://www.cyberforum.ru/ avr/ thread2086309.html
Нужна помощь!!!Начал осваивать микроконтроллеры авр ввиду служебной необходимости.Сроки выполнения задачи не то, что горят, а плавятся.Задача у меня следующая. Есть две линии по которым идут данные,...
ATmega AVR CodeVisionAVR, ATtiny13 и фьюзы
По умолчанию в ATtiny13 установлены (=0) CKSEL0, SUT0, CKDIV8, SPIEN. Беру свеженький МК и читаю фьюзы в CodeVisionAVR: установлены CKSEL0, SUT0, CKDIV8. При попытке установить SPIEN (который...
программный USB host ATmega AVR
Решил повторить конструкцию отсюда http://www.asahi-net.or.jp/~qx5k-iskw/r ... #usbhost01, но на atmega8. Связь с мышкой есть, могу прочитать vid-pid, но энумерация не проходит. Когда меняю адрес...
ATmega AVR Согласование уровней USB D+/- (V-USB) 3.3V Всем доброго утра/дня/вечера! Создавал тему на другом форуме, но на один из вопросов мне так и не ответили. Я начинающий, разбираюсь потихоньку. На Atmega8 собрал свой небольшой проект, всё... https://www.cyberforum.ru/ avr/ thread2086306.html
ATmega AVR 2 byte into 1 int? (AVR GCC) https://www.cyberforum.ru/ avr/ thread2086305.html
2 байта лежат в массиве unsykned char Buf, причем Buf = MSB, Buf = LSB. Их необходимо слепить в int Lum. Даташит рекомендуют конструкцию вида Lum = (Buf<<8)+Buf. Но WTF? Дизасемблинг: Lum = (Buf<<8)...
ATmega AVR Источник тактирования SPI Xmega32A4 Модуль SPI в xmega тактируется сигналом clkper который равен частоте ядра. Максимальная частота ядра 32 МГц. Но! Перед этим есть еще два источника тактовой частоты - clkper4 и clkper2 частота которых... https://www.cyberforum.ru/ avr/ thread2086304.html
TuskyPiriz
28.08.2013, 11:09 0

Reset при инициализации массива в ATmega128

28.08.2013, 11:09. Просмотров 5941. Ответов 8
Метки (Все метки)

Ответ

Цитата Сообщение от Otykzzz
А что вы в обработчике SPI делаете?
И вообще странно, что при инициализации какае-то команды принимаются.
По SPI принимаются команды на смену режима работы от другого МК. Вот как выглядит прерывание:
SIGNAL(SIG_SPI)
{
*pRxBufWr=SPDR;
pRxBufWr++;
if (pRxBufWr==pEndRxBuf) pRxBufWr=pStartRxBuf;

if (NumStatusByte == 0)
{
IP.Status = (IP.A<<6);
IP.Status |= (IP.BL<<4);
IP.Status |= (IP.Indication_Mode&0x0F);
}
else
{
IP.Status = (IP.Kbr&0x7F);
IP.Status |= 0x80;
}

NumStatusByte++;
if (NumStatusByte == 2) NumStatusByte = 0;

SPDR = IP.Status;
}
Принятые данные записываются в кольцевой буфер, а в ответ отправляется статусная информация.

Если по подробней, то устройство состоит из двух МК. Первый МК управляет "климатом"(температура,давление,подсветка и т.д.) в термосе, а второй МК служит для индикации режима работы и оставшегося времени работы, для этого на втором МК подключены 36 светодиодов(18 красных,18 зелёных). Соответственно при определенном режиме работы включаются допустим красные светодиоды и они постепенно загораются(с помощью ШИМ) в зависимости от текущего времени(например, если общее время работы 10 минут, а прошло 5 минут, то загораются 9 светодиодов на максимум,а оставшиеся светодиоды загораются постепенно).

Так вот, приходит команда на включение красных светодиодов, с пропорцией - общее время 30 минут, а текущее время 28 минут. Соответственно я включаю 16 светодиодов на максимум(инициализирую 16 элементов массива красных светодиодов). И где-то вот в этом месте происходит вылет из программы. Причем если заменить массив на другой(допустим зеленых светодиодов) то вылета не происходит.

Вернуться к обсуждению:
Reset при инициализации массива в ATmega128
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.08.2013, 11:09
Готовые ответы и решения:

Miele cm5100 сделать reset (Atmega128,Attiny48) после сбоя в Удаление накипи
ситуация: есть машина Miele cm5100, при включении, пишет что нужно продолжить процедуру очистки от...

Ошибка нарушения прав доступа при чтении по адресу, возникающая при инициализации трехмерного массива
Очень нужна ваша помощь! Я уже не знаю что тут можно сделать. Код части программы, где вылазит...

Ошибка при инициализации массива
Не понимаю, почему не работает. Массив создается после введения количества его элементов, но все...

Ошибка при инициализации массива
В примере есть массив: sf::String TileMap = { &quot; &quot;, &quot; ...

8
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.