Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 17.09.2011, 20:44  
Solaris_M
Частый гость
 
Регистрация: 19.07.2009
Сообщений: 39
Сказал спасибо: 1
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
Solaris_M на пути к лучшему
По умолчанию Мистическая проблема с SPI в atmega32

atmega32 сконфигурирована как мастер. эмулирую в proteus 7.5sp3, при первой же попытке записи вываливается с ошибкой на spdr write collision, хотя с виду всё должно работать. в железе соответственно тоже не работает.

логика следующая - по прерывания на int0 программа конфигурирует порт на выход spi, потом выплёвывает байт, ловит прерывание по передаче, передаёт следующий.. и так 7 байт, потом порт обратно на вход.. и всё

компилятор CVAVR, в аттаче исходник

что скажете?
Вложения:
Тип файла: txt 1.c.txt (8.2 Кб, 58 просмотров)
Реклама:
Solaris_M вне форума  
Непрочитано 17.09.2011, 21:01  
Solaris_M
Частый гость
 
Регистрация: 19.07.2009
Сообщений: 39
Сказал спасибо: 1
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
Solaris_M на пути к лучшему
По умолчанию Re: мистическая проблема с SPI в atmega32

в железе clock есть, но на mosi висит 0 уровень
Solaris_M вне форума  
Непрочитано 17.09.2011, 21:20  
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: мистическая проблема с SPI в atmega32

Сразу навскидку.
В прерывании SPI перед чтением SPDR надо сбросить флаг SPIF чтением SPSR. Автоматом он сбрасывается по выходу из прерывания.
Эта конструкция что-то не нравится...
ЛУТше CASE...

PHP код:
// SPI interrupt service routine
interrupt [SPI_STCvoid spi_isr(void)
{      
unsigned char data;
//PORTB.4=1;
data=SPDR;
if(
counter==0)
{
        
Ar=data;
        
counter++;
        
SPDR Bw;
        return;
}   
if(
counter==1)
{
    ........
if(
counter==6)
{
        
Gr=data;
        
counter=0;
        
spi_master_off();
        return;
}   

Также не понял необходимости жестко задавать регистр.
CV очень любит эти регистры, а Вы их заняли...
PHP код:
// Clear the SPI interrupt flag
#asm
    
in   r30,spsr
    in   r30
,spdr
#endasm 

Последний раз редактировалось omercury; 17.09.2011 в 21:25.
omercury вне форума  
Непрочитано 17.09.2011, 22:26  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

Ногу SS на выход и записать в нее 0
niXto вне форума  
Непрочитано 18.09.2011, 08:15  
Solaris_M
Частый гость
 
Регистрация: 19.07.2009
Сообщений: 39
Сказал спасибо: 1
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
Solaris_M на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

На конструкции switch/case переделал, нога SS уже была выходом(и судя по даташиту нет разницы в мастере в 0 или в 1). регистр r30 в сбрасывании прерывания мне предложил сам CVAVR в конструкторе кода.

в протеусе также SPDR write collision, в железе опробую чуть позже.
Вложения:
Тип файла: txt 2.c.txt (8.5 Кб, 146 просмотров)
Solaris_M вне форума  
Непрочитано 18.09.2011, 10:58  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

Сообщение от niXto Посмотреть сообщение
Ногу SS на выход и записать в нее 0
Если контроллер в режиме мастера, зачем это делать?
Easyrider83 вне форума  
Непрочитано 18.09.2011, 14:22  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,801
Сказал спасибо: 2,913
Сказали Спасибо 3,123 раз(а) в 2,113 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

Сообщение от Easyrider83 Посмотреть сообщение
Если контроллер в режиме мастера, зачем это делать?
Если этот вывод будет сконфигурирован как вход и на нём появится низкий уровень, то блок SPI переключится в режим "ведомый". Если как выход - SPI будет только "ведущим".
ForcePoint вне форума  
Непрочитано 18.09.2011, 14:56  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

Сообщение от ForcePoint Посмотреть сообщение
Если этот вывод будет сконфигурирован как вход и на нём появится низкий уровень, то блок SPI переключится в режим "ведомый". Если как выход - SPI будет только "ведущим".
Какое расточительство пинов.
Easyrider83 вне форума  
Непрочитано 18.09.2011, 15:57  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

Не совсем так. В некоторых чипах (мега48ра, несколько десятков чипов из 1000-ной партии) даже если нога SS как выход и на ней чип устанавливает 1 - в некоторых случаях мастер может перепрыгнуть на слэйв. С чем это связано не ковырял, программа довольно сложная, переключения направления ноги или всего порта нет точно, но факт что на остальных 900 с лишним чипов это не вылазит
niXto вне форума  
Непрочитано 18.09.2011, 16:25  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

Да, нелегко вам с AVR живется. Понимаю.
Easyrider83 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с SPI mcp3550 :? dnpdz Proteus 5 30.05.2011 23:44
Проблема с SPI mcp3550. dnpdz Микроконтроллеры, АЦП, память и т.д 4 13.03.2011 04:25
Глюк Протеуса при работе с SPI ATMEGA32 Klim63 Микроконтроллеры, АЦП, память и т.д 0 17.05.2010 03:04
Проблема с EEPROM в atmega32 tosha81k Микроконтроллеры, АЦП, память и т.д 16 28.04.2007 07:04
Проблема с SPI АТ25256 Leonid68 Микроконтроллеры, АЦП, память и т.д 5 11.08.2005 23:26


Часовой пояс GMT +4, время: 21:01.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot