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

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

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

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

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

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

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

 
Опции темы

SPI ATMEGA8535 не запускается

Непрочитано 25.05.2011, 19:15  
pifa
Гражданин KAZUS.RUN
 
Регистрация: 26.12.2005
Сообщений: 620
Сказал спасибо: 25
Сказали Спасибо 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.RUN
 
Регистрация: 26.12.2005
Сообщений: 620
Сказал спасибо: 25
Сказали Спасибо 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.RUN
 
Регистрация: 26.12.2005
Сообщений: 620
Сказал спасибо: 25
Сказали Спасибо 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.RUN
 
Регистрация: 26.12.2005
Сообщений: 620
Сказал спасибо: 25
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
pifa на пути к лучшему
По умолчанию Re: SPI ATMEGA8535 не запускается

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

Остается вопрос по AD7706. Пока не могу его оживить.
pifa вне форума  
Непрочитано 27.05.2011, 00:04  
Mike121234
Вид на жительство
 
Аватар для Mike121234
 
Регистрация: 02.04.2008
Адрес: Ленинград
Сообщений: 347
Сказал спасибо: 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.RUN
 
Регистрация: 26.12.2005
Сообщений: 620
Сказал спасибо: 25
Сказали Спасибо 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
Адрес: Ленинград
Сообщений: 347
Сказал спасибо: 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, время: 07:52.


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