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

 
 
> Передача данных в ATtiny13
Oleg_IT
сообщение May 14 2007, 02:40
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 922
Регистрация: 3-06-05
Из: Москва
Пользователь №: 5 709



Программирование в IAR.
Так как в ATtiny13 ни каких аппаратных интерфейсов нет, то приходится делать всё самому. Делаю трех проводную связь (наверное, можно более оптимально сделать, но пока так).
………………………………..
#include <ioavr.h>
#include <inavr.h>

unsigned int Byte = 0;
extern unsigned int ByteEx = 0;
struct {
unsigned Bt1 : 1;
unsigned Bt2 : 1;
unsigned Bt3 : 1;
unsigned Bt4 : 1;
};

void main( void )
{
Bt1 = 1;
Bt2 = 1;
Bt3 = 0;
Bt4 = 1;

DDRB = 0x03; // 00 0011
PORTB = 0x3C; // 11 1100
__enable_interrupt();

while (1)
{
if (PINB_Bit2 == 0)
{
if (Bt4)
{
Byte = 0;
Nbit = 0;
Bt4 = 0;
}
if (PINB_Bit4 == 0 && Nbit < 8)
{
if (Bt2)
{
PORTB_Bit1 = 1;

// if (PINB_Bit3)
Byte = 127;//|= (1 << Nbit);

Nbit++;
}
Bt2 = 0;
}
else
{
PORTB_Bit1 = 0;
Bt2 = 1;
}
if (Nbit == 8)
Bt3 = 1;
}
else
{
if (Bt3)
{
// ByteEx = Byte;
Bt4 = 1;
}
Bt3 = 0;
}
}
}
………………………………..

Пин 2 это Chip Select, пин 4 – Data Clock, пин 3 – данные. Если передаю большие значения, больше 40 – 50 (точно границу не отлавливал), то всё принимается нормально, если меньше, то идут сбои в тактировании битов, периодические объединения битов (виден четкий период). Пин 1 специально ввёл для теста. Также для теста закомментировал проверку бита данных (if (PINB_Bit3)) и установку константы в переменную данных. С константой ситуация не изменилась.
Переменные объявлял и как unsigned int, и как unsigned char.
Два дня бьюсь, не могу понять, в чём дело. Помогите разобраться.
Go to the top of the page
 
+Quote Post



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

 


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


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