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

 
 
> SPI - непонянные моменты
Sergio66
сообщение Nov 2 2006, 14:14
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 235
Регистрация: 9-02-05
Пользователь №: 2 526



Вот такая незадача:
1. Мега32
2. SPI, работающий по прерыванию в Slave режиме и только на прием
3. на порту В (там же где и SPI) висит ЖКИ, т.е. порт В перенастраивается на вывод.
4. Данные по SPI идут пакетами с интервалом в 40 мс.
Алгоритм работы таков:
Принимаем пакет, как только пакет принят, ждем паузу. Если пауза достигла 1 мс, выводис принятую информацию на ЖКИ. 1 мс пауза означает, что началась пауза между посылками не менее 40 мс.
Процедура вывода на ЖКИ занимает 15 мс.
Начинается функция записи данных в ЖКИ так:
char DDRBx = DDRB;
char PORTBx = PORTB;
Далее идет переопределение направления портов, вывод данных, всякая муть...
Заканчивается
PORTB = PORTBx;
DDRB = DDRBx;

После первого же вывода на ЖКИ SPI перестает работать - т.е. прерывания по приему не генерятся.
В АВР СТУДИО отлаживаю при помощи JTAG ICE. После приема первого пакета, после вывода на дисплей, когда SPI затыкается, останавливаю программу, и вижу, что настройки SPI (регистры) в порядке, Порт В - DDRB - все как и должно быть - (РВ7 - SCK- прием, РВ6 - MISO - передача, РВ5 - MOSI - прием, РВ4 - SS - прием), а вот PINB4 (он же SS) видится, как "1". Т.е. как будто кто то SS перевел в "1". Но, тестер на ноге микросхемы видит "0"!!!
Сто это может означать?
Бред Студио?
Что то засело в PINB регистре, хотя на физическом контакте ничего нет?
Но при этом связь не идет!
Поделитесь своими соображениями ПЛЗ!
Go to the top of the page
 
+Quote Post



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

 


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


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