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

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

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

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

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

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

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

 
Опции темы

Мистическая проблема с SPI в atmega32

Непрочитано 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.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: мистическая проблема с SPI в atmega32

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

PHP код:
// SPI interrupt service routine
interrupt [SPI_STC] void 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.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
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,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

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

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

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

Не совсем так. В некоторых чипах (мега48ра, несколько десятков чипов из 1000-ной партии) даже если нога SS как выход и на ней чип устанавливает 1 - в некоторых случаях мастер может перепрыгнуть на слэйв. С чем это связано не ковырял, программа довольно сложная, переключения направления ноги или всего порта нет точно, но факт что на остальных 900 с лишним чипов это не вылазит
niXto вне форума  
Непрочитано 18.09.2011, 16:25  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
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, время: 15:58.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.