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

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

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

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

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

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

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

 
Опции темы

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

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

Сообщение от niXto Посмотреть сообщение
Не совсем так. В некоторых чипах (мега48ра, несколько десятков чипов из 1000-ной партии) даже если нога SS как выход и на ней чип устанавливает 1 - в некоторых случаях мастер может перепрыгнуть на слэйв. С чем это связано не ковырял, программа довольно сложная, переключения направления ноги или всего порта нет точно, но факт что на остальных 900 с лишним чипов это не вылазит
хм, незнал, учту.

но, в протеусе с браком полегче

PHP код:
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{        
      //  PORTB.4=1;  //!!!!
        GICR = 0; //disable INT0
        spi_master_init(); 
        SPDR = Aw; //на этой строке затыкается, SPDR write collision говорит
} 
Реклама:

Последний раз редактировалось Solaris_M; 19.09.2011 в 05:18.
Solaris_M вне форума  
Непрочитано 19.09.2011, 09:57  
rubel
Гражданин KAZUS.RUN
 
Аватар для rubel
 
Регистрация: 24.11.2006
Адрес: ДНР
Сообщений: 611
Сказал спасибо: 553
Сказали Спасибо 314 раз(а) в 142 сообщении(ях)
rubel на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

Сообщение от Easyrider83 Посмотреть сообщение
Да, нелегко вам с AVR живется. Понимаю.
У PICoв тоже полно похожих прелестей(не имею в виду конткретно SPI). Просто нужно в errate прописывать как особенность камня - и всё будет в ШОКОЛАДЕ
rubel вне форума  
Непрочитано 19.09.2011, 11:01  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

Сообщение от rubel Посмотреть сообщение
У PICoв тоже полно похожих прелестей(не имею в виду конткретно SPI). Просто нужно в errate прописывать как особенность камня - и всё будет в ШОКОЛАДЕ
Не встречал пока. С пиками пока придержал. Удалось урвать целую кучу камней STM32 в терраэлектронике.
Еще вот с LPC2xxx дело поимел. Работа с I2c мягко говоря заставила шевелиться волосы даже там, где их быть не может. Но в конце концов все получилось.
Easyrider83 вне форума  
Непрочитано 19.09.2011, 11:03  
EugenPKH
Прописка
 
Регистрация: 08.10.2009
Сообщений: 101
Сказал спасибо: 2
Сказали Спасибо 11 раз(а) в 10 сообщении(ях)
EugenPKH на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

void spi_master_init()
{
DDRB = 0xB0;//sck,mosi,ss - output
SPCR=0x51;
#asm("cli")
SPCR = 0xFD;
#asm
in r30,spsr
in r30,spdr
#endasm
#asm("sei")

}

in r30,spsr
in r30,spdr

а зачем читать в один и тот же регистр ?
EugenPKH вне форума  
Непрочитано 19.09.2011, 11:52  
EugenPKH
Прописка
 
Регистрация: 08.10.2009
Сообщений: 101
Сказал спасибо: 2
Сказали Спасибо 11 раз(а) в 10 сообщении(ях)
EugenPKH на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

Сообщение от Solaris_M Посмотреть сообщение
хм, незнал, учту.

но, в протеусе с браком полегче

PHP код:
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{        
      //  PORTB.4=1;  //!!!!
        GICR = 0; //disable INT0
        spi_master_init(); 
        SPDR = Aw; //на этой строке затыкается, SPDR write collision говорит
} 
Это значит что вы записали в spdr что то и недождались передачи и опять туда записываете .
EugenPKH вне форума  
Непрочитано 19.09.2011, 16:49  
Solaris_M
Частый гость
 
Регистрация: 19.07.2009
Сообщений: 39
Сказал спасибо: 1
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
Solaris_M на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

Сообщение от EugenPKH Посмотреть сообщение
Это значит что вы записали в spdr что то и недождались передачи и опять туда записываете .
Ну как бы да, но прежде ничего я туда не писал. Может с инициализацией проблема какая?

На пост выше, как я понял из даташита важна сама суть чтения регистра, данные интереса не представляют.

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

Гм, вся мистика кончилась видимо тем, что протеус глючит, а в железе я выжег пин mosi, он же не должен звониться 150ом на землю в обе стороны?

Портировал =) проект на mega48, протеус опять ругается на spdr write collision, либо его глюк, либо есть какойто ньюанс.. В железе опробую завтра.

Последний раз редактировалось Solaris_M; 19.09.2011 в 20:36.
Solaris_M вне форума  
Непрочитано 21.09.2011, 17:26  
Solaris_M
Частый гость
 
Регистрация: 19.07.2009
Сообщений: 39
Сказал спасибо: 1
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
Solaris_M на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

Код в железе работает. В протеусе также - spdr write collision.
Всем спасибо!
Solaris_M вне форума  
Непрочитано 23.09.2011, 10:36  
Godzilla82
Почётный гражданин KAZUS.RUN
 
Регистрация: 29.10.2006
Сообщений: 1,449
Сказал спасибо: 99
Сказали Спасибо 318 раз(а) в 234 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Мистическая проблема с SPI в atmega32

Сообщение от EugenPKH Посмотреть сообщение

in r30,spsr
in r30,spdr

а зачем читать в один и тот же регистр ?
Читаются два разных регистра. Если вы посмотрите описание SPI, то увидите. Что флаг принятого байта сбрасывается сначала чтением SPSR, а затем SPDR (статусного регистра, а затем регистра данных).

P.S. Это стандартный код, генерируемый CVAVR.
Godzilla82 вне форума  
Непрочитано 23.09.2011, 11:38  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Мистическая проблема с SPI в atmega32

Сообщение от Godzilla82 Посмотреть сообщение
Читаются два разных регистра. Если вы посмотрите описание SPI, то увидите. Что флаг принятого байта сбрасывается сначала чтением SPSR, а затем SPDR (статусного регистра, а затем регистра данных).
Как-то интересно вы читаете документацию, этот флаг как и большинство остальных сбрасывается командой RETI обработчика прерывания. А с СПИ имеет смысл работать только на прерываниях
niXto вне форума  
 
Опции темы

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

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, время: 02:35.


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