Форум по микроконтроллерам: Передать 10 Байт По Spi - Форум по микроконтроллерам

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Передать 10 Байт По Spi Оценка: -----

#1 Пользователь офлайн   Alles 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 7
  • Регистрация: 22 Декабрь 12

Отправлено 22 Декабрь 2012 - 12:35

Здравствуйте. Помогите, пожалуйста, в выполнении задания. Требуется передать 10 байт информации по SPI и продемонстрировать результаты в среде Proteus. Преподаватель советовал использовать среду CodeVision AVR. Буду очень благодарен. Код вроде как написал в CVAVR (вроде как рабочий, компилится без ошибок), а вот со схемой проблема. Найдутся ли люди, желающие и могущие помочь?

Прикрепленные файлы


0

#2 Пользователь офлайн   korsaj 

  • Активный участник
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 51
  • Регистрация: 14 Март 12

Отправлено 23 Декабрь 2012 - 22:30

Есть таковые. Посмотрел вашу схему, все ок, только в протеусе есть SPI Debugger, с ним проще чем с осциллографом.
И подскажите в чем сложность? Вам просто настроить протеус для симуляции?
0

#3 Пользователь офлайн   Alles 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 7
  • Регистрация: 22 Декабрь 12

Отправлено 24 Декабрь 2012 - 21:02

Проблема в том, что я очень плохо разбираюсь в Протеусе. Мне необходимо всего лишь передать именно 10 байт по SPI. Можно использовать любую удобную микросхему, главное показать: вот настроенный интерфейс SPI, вот 10 байт передаются. Все. Код передачи 10 байт я написал, но у меня такое ощущение, что он не подходит для этой схемы. Буду очень признателен, если добрый человек поможет с этим заданием...
Схему можно переделать абсолютно как угодно. Встречал примеры, где используется всего 1 микросхема. Повторюсь: нужно просто показать передачу 10 байт по интерфейсу.
0

#4 Пользователь офлайн   korsaj 

  • Активный участник
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 51
  • Регистрация: 14 Март 12

Отправлено 24 Декабрь 2012 - 22:27

В протеусе есть такая кнопка, на пенале инструментов, Graph Mode. Дальше Digital. Чертите его на свободном месте, к ногам мк цепляете пробнички (вольтметры) и добавляете их в поле Digital, нажимаете пробел и смотрите осцилки. Это самый простой. У вас использован самый сложный но и самый показательный.

В архиве все сделано для SPI8.

Прикрепленные файлы

  • Прикрепленный файл  spi8.zip (60,95К)
    Количество загрузок:: 48

0

#5 Пользователь офлайн   Alles 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 7
  • Регистрация: 22 Декабрь 12

Отправлено 24 Декабрь 2012 - 23:09

Что-то я добавил Digital, вольтметры и ничего не увидел :(/> Ну только что на двух вольметрах прыгают значения. А как узнать - передал 10 байт или нет?
Спасибо, кривости рук мне не занимать в Протеусе. Остался последний вопрос: как передать именно 10 байт и как это показать?

Сообщение отредактировал Alles: 24 Декабрь 2012 - 23:38

0

#6 Пользователь офлайн   korsaj 

  • Активный участник
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 51
  • Регистрация: 14 Март 12

Отправлено 25 Декабрь 2012 - 09:09

Теперь смотрите даташит, если в мк есть настройка передатчика, то выставляете длинну кадра 10бит. Если нет то пишите софтовый спай. Если не можете я помогу.
А показать можно как в схеме spi8 только зацепив 10 выключателей и к приемнику добавить еще 2 cв. Ну и конечно же осцилки из Digital.
0

#7 Пользователь офлайн   Alles 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 7
  • Регистрация: 22 Декабрь 12

Отправлено 25 Декабрь 2012 - 13:38

Блин, что-то ничего не получается :( Раз препод советовал CodeVision AVR - значит по ходу софт надо писать. Я с помощью визарда SPI вроде как настроил, а для работы с интерфейсом нашел функцию spi(). Банально 10 раз продублировал - конечно же при использовании на схеме идет ошибка. Помоги, добрый человек...Задача вроде как наипростейшая, но мои незнания очень усугубляют дело. Остался последний рывок...И еще - необходимо передать 10 байт, а не бит.
0

#8 Пользователь офлайн   korsaj 

  • Активный участник
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 51
  • Регистрация: 14 Март 12

Отправлено 25 Декабрь 2012 - 14:36

Просмотр сообщенияAlles (25 Декабрь 2012 - 13:38) писал:

И еще - необходимо передать 10 байт, а не бит.

Ой попутал. Вообщем софт писать не надо, берете ваш SPI8 (передача 8 бит) и с зацикливаете его на передачу 10 байт. Препод посоветовал использовать Си?
0

#9 Пользователь офлайн   Alles 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 7
  • Регистрация: 22 Декабрь 12

Отправлено 25 Декабрь 2012 - 14:43

Добрый человек, можешь помочь? Я ж нифига не сделаю :(
Да, язык C.
0

#10 Пользователь офлайн   korsaj 

  • Активный участник
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 51
  • Регистрация: 14 Март 12

Отправлено 25 Декабрь 2012 - 17:00

Ок сягодня посмотрю. А мк каков? Atmega128? И тактовая частота?

Вот нашел
И вот
0

#11 Пользователь офлайн   Alles 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 7
  • Регистрация: 22 Декабрь 12

Отправлено 25 Декабрь 2012 - 17:44

Ну да, Atmega128A1...Как я понял, надо зациклить на 10 байт этот код. Так?
#include <avr/io.h>


void InitSPI(void)
{
DDRB = (1<<PB4)|(1<<PB5) | (1<<PB7);	 // Set MOSI , SCK , and SS output
SPCR = ( (1<<SPE)|(1<<MSTR) | (1<<SPR1) |(1<<SPR0));	// Enable SPI, Master, set clock rate fck/128  
}

void WriteByteSPI(unsigned char byte)
{
		
SPDR = byte;					//Load byte to Data register
while(!(SPSR & (1<<SPIF))); 	// Wait for transmission complete 

}

char ReadByteSPI(char addr)
{
	SPDR = addr;					//Load byte to Data register
	while(!(SPSR & (1<<SPIF))); 	// Wait for transmission complete 
	addr=SPDR;
	return addr;
}


Вот что нашел:
Chip type : ATxmega128A1
Program type : Application
AVR Core Clock frequency: 2,000000 MHz
Memory model : Small
Data Stack size : 2048
0

#12 Пользователь офлайн   korsaj 

  • Активный участник
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 51
  • Регистрация: 14 Март 12

Отправлено 25 Декабрь 2012 - 18:31

Вот держи. Передача по spi 10 байт. Тактовая 8, но можно исправить на любую.

Прикрепленные файлы

  • Прикрепленный файл  Stud.zip (39,32К)
    Количество загрузок:: 77

0

#13 Пользователь офлайн   Alles 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 7
  • Регистрация: 22 Декабрь 12

Отправлено 25 Декабрь 2012 - 18:39

Блин, спасибо большущее, выручил очень. Вы не из Беларуси? Так бы в долгу не остался бы :)
0

#14 Пользователь офлайн   korsaj 

  • Активный участник
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 51
  • Регистрация: 14 Март 12

Отправлено 25 Декабрь 2012 - 20:39

Не, я из Украины )
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей