реклама на сайте
подробности

 
 
> Проблема с SPI PIC16F877
pipka
сообщение Jan 30 2008, 19:36
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 30-07-07
Пользователь №: 29 465



Здравствуйте.

Пытаюсь связать два PIC16F877 через SPI, один в режиме Master, второй-slave.
На PORTD Master'a и Slave'a получается 00001111, хотя на Slave должно быть 11111111.

Master:

#include <pic.h>

__CONFIG(0x3FF1);

int res;
main(void)
{
TRISA=0b00000000;
TRISC=0b00010000;
TRISB=0x0;
TRISD=0x0;

PORTD=0x0;
PORTB=0x0;
PORTC=0x0;

SSPIE=0;
SSPCON=0x20;
SSPIF=0;
SSPBUF=0b11111111;

while(!SSPIF);
PORTD=SSPBUF;
}


Slave:

#include <pic.h>

__CONFIG(0x3FF1);

int res,i;


main(void)
{
TRISA=0b00000000;
TRISC=0b00001000;
TRISB=0x0;
TRISD=0x0;

PORTD=0x0;
PORTB=0x0;
PORTC=0x0;
SSPCON=0x25;
SSPIF=0;
SSPIE=1;
PEIE=1;
GIE=1;

}

interrupt IntSer(void)
{

if(SSPIF==1)
{
res=SSPBUF;
SSPBUF=0b00001111;
SSPIF=0;
}
show();
}

show()
{
PORTD=res;
for(i=0;i<=1000;i++);
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
Andrey_B
сообщение Feb 6 2008, 08:36
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 221
Регистрация: 20-06-07
Из: Россия, Тула.
Пользователь №: 28 569



Чето как-тоочень сумбурно все.

1. В слейве не правильно настроено направление портов.
И видимо, по смыслу оно и подключено не правильно.
2. Почему res int ? Когда оно должно быть usigned char.
3. Зачем в мастере весь инит крутить в цикле ?
4. Не понятна структура прерывания слейва, зачем там
пауза, да еще и внутри прерывания ?


--------------------
vodaspb.ru
Go to the top of the page
 
+Quote Post
pipka
сообщение Feb 10 2008, 14:20
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 30-07-07
Пользователь №: 29 465



Цитата(Andrey_B @ Feb 6 2008, 12:36) *
Чето как-тоочень сумбурно все.

1. В слейве не правильно настроено направление портов.
И видимо, по смыслу оно и подключено не правильно.
2. Почему res int ? Когда оно должно быть usigned char.
3. Зачем в мастере весь инит крутить в цикле ?
4. Не понятна структура прерывания слейва, зачем там
пауза, да еще и внутри прерывания ?



Спасибо, разобрался.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 00:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01348 секунд с 7
ELECTRONIX ©2004-2016