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

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

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

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

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

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

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

 
Опции темы
Непрочитано 25.05.2011, 19:15  
pifa
Гражданин KAZUS.RU
 
Регистрация: 26.12.2005
Сообщений: 594
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
pifa на пути к лучшему
По умолчанию Re: SPI ATMEGA8535 не запускается

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

а что мешает вывести три проводочка плюс пара транзисторов ( преобразователь USART - RS232) и проверить работу не косвенно, а воочию, через терминал например?
ножки USART задействованы?

у меня коробочка с 3 проводами (к USART цеплять) и разъемом для ком порта вседа под рукой ... иногда помогало.
Я не понял, каким образом я могу проверить SPI с помощью RS232.
Если программно опрашивать SPDR и выводить на UART, то я это делаю, только вывожу на I2C.
А напрямую вывести SPI на UART - я что-то не представляю. Или я не так понял?
Реклама:
pifa вне форума  
Непрочитано 25.05.2011, 19:36  
avtoneru
Прописка
 
Регистрация: 17.10.2010
Сообщений: 113
Сказал спасибо: 2
Сказали Спасибо 20 раз(а) в 12 сообщении(ях)
avtoneru на пути к лучшему
По умолчанию Re: SPI ATMEGA8535 не запускается

Сообщение от pifa Посмотреть сообщение
Я не понял, каким образом я могу проверить SPI с помощью RS232.
настраиваю USART и печатаю туда при помощи printf всё, что меня может заинтересовать ... ну примерно так: " printf("%i",temp); "
на компе запускаю гипертерминал или (если винда семерка) встроенный в CV ...

ну например можно организовать в Вашем случае -
1) от терминала принимается команда - любая в виде написания байта, переводится в шестнадцатеричное число и отправляется по SPI
2) то, что принято по SPI тут же передается в терминал ...
3) и т.д.

у меня как то так получается.
avtoneru вне форума  
Непрочитано 25.05.2011, 22:15  
pifa
Гражданин KAZUS.RU
 
Регистрация: 26.12.2005
Сообщений: 594
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
pifa на пути к лучшему
По умолчанию Re: SPI ATMEGA8535 не запускается

Сообщение от avtoneru Посмотреть сообщение
настраиваю USART и печатаю туда при помощи printf всё, что меня может заинтересовать ... ну примерно так: " printf("%i",temp); "
на компе запускаю гипертерминал или (если винда семерка) встроенный в CV ...

ну например можно организовать в Вашем случае -
1) от терминала принимается команда - любая в виде написания байта, переводится в шестнадцатеричное число и отправляется по SPI
2) то, что принято по SPI тут же передается в терминал ...
3) и т.д.

у меня как то так получается.
Так это и есть программный опрос SPI, что я и делаю. А куда направлять полученные данные неважно. Вопрос в том, что приходит по SPI. Вот сейчас смотрю в сторону логического анализатора. Но нет его под рукой.
pifa вне форума  
Непрочитано 26.05.2011, 15:41  
pifa
Гражданин KAZUS.RU
 
Регистрация: 26.12.2005
Сообщений: 594
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
pifa на пути к лучшему
По умолчанию Re: SPI ATMEGA8535 не запускается

Сегодня "ловушкой" проверил SPI. В наличии только импульсы на SCK. В Proteus'е SPI тоже молчит.

В результате поиска нашел причину. Но понять не могу. Возможно, я что-то не так понимаю. Суть в следующем.
На порте B, кроме SPI я использую еще несколько битов. Если я провожу инициализация вот так:

PORTB= (1‹‹PORTB4)|(1 ‹‹ PORTB7)|(1 ‹‹ PORTB3)|(1 ‹‹ PORTB2);
DDRB = (1‹‹PINB4)|(1‹‹PINB5)|(1‹‹PINB7)|(1‹‹PINB3)|(1‹‹PI NB2);

то SPI работает. Если я сначала инициализирую SPI:

PORTB= (1‹‹PORTB4)|(1 ‹‹ PORTB7);
DDRB = (1‹‹PINB4)|(1‹‹PINB5)|(1‹‹PINB7);

а потом добавляю:

PORTB= (1 ‹‹ PORTB3) | (1 ‹‹ PORTB2);
DDRB = (1 ‹‹ PINB3) | (1 ‹‹ PINB2);

SPI не работает. Может кто-нибудь объяснить?
pifa вне форума  
Непрочитано 26.05.2011, 16:22  
avtoneru
Прописка
 
Регистрация: 17.10.2010
Сообщений: 113
Сказал спасибо: 2
Сказали Спасибо 20 раз(а) в 12 сообщении(ях)
avtoneru на пути к лучшему
По умолчанию Re: SPI ATMEGA8535 не запускается

С IAR не работал, но кажется вся причина в том, что при переназначении битов регистра порта для сохранения предыдущих настроек надо сначала считать текущее значение регистра, и уже на это значение накладывать маску с новым значением, иначе предыдущее значение просто теряется.
Поэтому в первом варианте - вы сразу назначаете всё как Вам надо, а во втором варианте - Вы записываете значение в регистр два раза, причем вторая запись ничего не знает о первой. Происходит это потому, что запись типа
PORTB= (1‹‹PORTB4)|(1 ‹‹ PORTB7);
перепроцессором переводится в PORTB= 0x88; , т.е. Вы каждый раз пишите в регистр новое значение, компилятору ничего о предыдущих значениях в регистре не известно - Вы должны сами позаботиться о сохранении предыдущего значения регистра.
Другой вариант - использовать побитовый доступ к регистрам. Только не знаю, как это делается средствами IAR - мне он не понравился и глубоко не изучал (о вкусах не спорят ...).
avtoneru вне форума  
Непрочитано 26.05.2011, 17:09  
pifa
Гражданин KAZUS.RU
 
Регистрация: 26.12.2005
Сообщений: 594
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
pifa на пути к лучшему
По умолчанию Re: SPI ATMEGA8535 не запускается

Вы совершенно правы. Что-то меня уже затуманило с этим АЦП. Перепутал установку р-ра с побитовой операцией. Никогда так не делал. А почему тут написал так и сам не пойму.

Остается вопрос по AD7706. Пока не могу его оживить.
pifa вне форума  
Непрочитано 27.05.2011, 00:04  
Mike121234
Вид на жительство
 
Аватар для Mike121234
 
Регистрация: 02.04.2008
Адрес: Ленинград
Сообщений: 346
Сказал спасибо: 67
Сказали Спасибо 8 раз(а) в 7 сообщении(ях)
Mike121234 на пути к лучшему
По умолчанию Re: SPI ATMEGA8535 не запускается

Сообщение от pifa Посмотреть сообщение
Вы совершенно правы. Что-то меня уже затуманило с этим АЦП. Перепутал установку р-ра с побитовой операцией. Никогда так не делал. А почему тут написал так и сам не пойму.

Остается вопрос по AD7706. Пока не могу его оживить.
Очень часто проблема - в выборе режима spi: по какому фронту slk Ваш аdc захватывает данные с MOSI (по заднему или переднему). Проверьте еще раз хорошенько. У Вас mode 3, значит по спаду. А Вам надо по нарастанию, если не ошибаюсь. Поэкспериментируйте с режимом. И еще: хотите увидеть импульсы - уменьшите скорость. И Вообще, лучше начинать отлаживаться на низких скоростях (особенно с опторазвязкой...). Удачи !

Последний раз редактировалось Mike121234; 27.05.2011 в 00:13.
Mike121234 вне форума  
Непрочитано 28.05.2011, 19:28  
pifa
Гражданин KAZUS.RU
 
Регистрация: 26.12.2005
Сообщений: 594
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
pifa на пути к лучшему
По умолчанию Re: SPI ATMEGA8535 не запускается

Сообщение от Mike121234 Посмотреть сообщение
Очень часто проблема - в выборе режима spi: по какому фронту slk Ваш аdc захватывает данные с MOSI (по заднему или переднему). Проверьте еще раз хорошенько. У Вас mode 3, значит по спаду. А Вам надо по нарастанию, если не ошибаюсь. Поэкспериментируйте с режимом. И еще: хотите увидеть импульсы - уменьшите скорость. И Вообще, лучше начинать отлаживаться на низких скоростях (особенно с опторазвязкой...). Удачи !
Вот часть из datasheet:

" For microcontroller interfaces, it is recommended that the SCLK idles high between data transfers"

А также пример настройки SPI оттуда же:

SPCR = 0X7f; /* this sets the WiredOR mode(DWOM=1),
Master mode(MSTR=1),
SCK idles high(CPOL=1),
/SS can be low always (CPHA=1),
lowest clock speed(slowest speed which is master clock /32*/

Это для 68HC11. Для ATMegи буде то же самое.

А скорость у меня минимальная.

Сейчас SPI работает. Исправил некоторые ошибки в настройке SPI.
pifa вне форума  
Сказали "Спасибо" pifa
Mike121234 (29.05.2011)
Непрочитано 29.05.2011, 21:44  
Mike121234
Вид на жительство
 
Аватар для Mike121234
 
Регистрация: 02.04.2008
Адрес: Ленинград
Сообщений: 346
Сказал спасибо: 67
Сказали Спасибо 8 раз(а) в 7 сообщении(ях)
Mike121234 на пути к лучшему
По умолчанию Re: SPI ATMEGA8535 не запускается

Сообщение от pifa Посмотреть сообщение
Вот часть из datasheet:

" For microcontroller interfaces, it is recommended that the SCLK idles high between data transfers"

А также пример настройки SPI оттуда же:

SPCR = 0X7f; /* this sets the WiredOR mode(DWOM=1),
Master mode(MSTR=1),
SCK idles high(CPOL=1),
/SS can be low always (CPHA=1),
lowest clock speed(slowest speed which is master clock /32*/

Это для 68HC11. Для ATMegи буде то же самое.

А скорость у меня минимальная.

Сейчас SPI работает. Исправил некоторые ошибки в настройке SPI.
НУ И СЛАВА БОГУ !!!!!
Mike121234 вне форума  
Непрочитано 30.05.2011, 22:33  
Belka12
Временная регистрация
 
Аватар для Belka12
 
Регистрация: 29.03.2009
Сообщений: 61
Сказал спасибо: 44
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Belka12 на пути к лучшему
По умолчанию Re: SPI ATMEGA8535 не запускается

Привет всем! И у меня сейчас проблема с SPI.
Микроконтроллер ADUС831, никак не получаетс вывод по SPI на графический OLED дисплей (BL12864G, контроллер SSD1303).

Код:
#include ‹ADUC831.H›

#define vd_on()	    	    P3 |=  0x10;//P3.4  led OFF
#define vd_off()	    	P3 &= ~0x10;//P3.4  led ON

#define oled_res_on()		P0 |= 0x80;//P0.7/HI
#define oled_res_off()		P0 &= ~0x80;// P0.7/LOW                                                                                                                                  0;

#define oled_data_set()     P0 |= 0x40;	//P0.6
#define oled_command_set()  P0 &= ~0x40;

#define oled_cs_1()		    P0 |=0x20; //P0.5
#define oled_cs_0()		    P0 &= ~0x20;


Код:
/ прерывание от SPI
void spi_interrupt (void) interrupt 7 using 0
{
   WCOL = 0;
   ISPI = 0;	// очистить флаг прерывания
   //spi_r = SPIDAT;
      vd_off();//Led ON	 
	  delay(2000);
      vd_on();
   delay(2000);
}

Код:
void spi_init(void)
{
// SPI init
  SPIM = 1;		// SPI Master/Slave Mode Select Bit. Set by user to enable Master Mode operation (SCLOCK is an output).
  CPOL = 1;		// Clock Polarity Select Bit. Set by user if SCLOCK idles high.
  CPHA = 1;		// Clock Phase Select Bit. Set by user if leading SCLOCK edge is to transmit data.
 // IE2 = 0x01;	// enable interrupt from spi
   //ESI=1
   IEIP2=0x01;
  SPE = 1;		// SPI Interface Enable Bit. Set by user to enable the SPI interface.
  SPR1 = 0;     // These bits select the SCLOCK rate (bit-rate) in Master Mode f/64
  SPR0 = 0;
}
Код:
void oled_write_command(unsigned char oled_command)
{
  oled_command_set();
  //delay(10);
  oled_cs_0();
  //delay(10);
  SPIDAT = oled_command;
  delay(1);
  oled_cs_1();
  delay(1);
  
}



Вроде бы, при задании команды для дисплея, выставляю

oled_cs_0() и

oled_cs_1() на P0.5, но на осфиллографе нет импусльсов, глухой "0", и SLK не возникает....

Чё делать?
Belka12 вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с SPI mcp3550 :? dnpdz Proteus 5 30.05.2011 23:44
Организация SPI в PIC 32 forker Микроконтроллеры, АЦП, память и т.д 3 16.09.2010 18:47
Помогите с ЦАП AD7708/AD7718 или их аналогами ST_Senya Микроконтроллеры, АЦП, память и т.д 9 30.11.2009 19:03
Обмен по SPI - из 8 байтов берет только первый code-by Микроконтроллеры, АЦП, память и т.д 9 18.11.2008 02:41
Не удаётся запустить SPI на At90S8515 Coder Микроконтроллеры, АЦП, память и т.д 3 30.03.2005 14:17


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


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