[an error occurred while processing this directive]
Уважаемые знатоки обьясните пожалуйста как расчитать сrc.........
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Dred73 21 июля 2006 г. 14:26

вот тут чтото я ума не приложу

#include

// 1 Wire Bus functions
#asm
.equ __w1_port=0x18 ;PORTB
.equ __w1_bit=0
#endasm
#include <1wire.h>

#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7

#define FRAMING_ERROR (1<#define PARITY_ERROR (1<#define DATA_OVERRUN (1<#define DATA_REGISTER_EMPTY (1<#define RX_COMPLETE (1<// USART Receiver buffer
#define RX_BUFFER_SIZE 256
#define RX_BUFFER_SIZE2 128
char rx_buffer[RX_BUFFER_SIZE];

#if RX_BUFFER_SIZE<256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif

// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;

// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
}

#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif

// Standard Input/Output functions
#include

#define DS1990_FAMILY_CODE 1
#define SEARCH_ROM 0xF0

#define MAX_DEVICES 8
unsigned char rom_code[MAX_DEVICES][9];
unsigned char i,j,devices;
unsigned char n=1;

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=In Func1=In Func0=In
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=T State1=T State0=T
PORTB=0x00;
DDRB=0xF8;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 4800
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// инициализируем 1-ware выход
w1_init();

// разрешаем глобальные прерывания
#asm("sei")
#define CRC_BYTE 1 // Количество байт CRC (без CRC - 0, для 8 битного - 1, для 16 битного - 2)
while (1)
{
/*здесь ма начинаем прием пакета в соответствии с нашим олгоритмом работы */

char ADRES; // эта переменная номера устройства которая считывается с порта А
char UPRAV; // это байт управления
char RX_Start; // стартовый байт
char RX_Stop; // Байт пизнака конца пакета
char RX_start_p;// принимаемый байт старта
char RX_stop_p;// принимаемый байт стoпа
char rx_u;// байт управления
char rx_s;// байт состояния
char rx_w1,rx_w2,rx_w3,rx_w4,rx_w5,rx_w6;//принятые байты функции с центрального пульта у нас они не используются
char tx_w1,tx_w2,tx_w3,tx_w4,tx_w5,tx_w6;//передаваемые байты функции (сюда мы будем писать либо 0000000000 либо номер ключа)
char tx_led; //индикация режима приема
char rx_CRC; // Принятый CRC
char tx_CRC; // переданный СRС
char ADRES_RX;// принятый байт адреса


ADRES=PINA; // считываем с порта А номер контроллера





RX_Start=0xAA;//стартовый бaит принимаем равным в нащем протоколе 0b10101010
RX_Stop=0xE7; //стоповый бaит 0b11100111


/* начинаем сам прием*/


RX_start_p=getchar(); //начало приема пакета, прием байта старта приема(выхватываем 1 байт из буфера)

if (RX_start_p==RX_Start) //если стартовый байт совпадает с нашим то идем дальше

{

ADRES_RX=getchar();// принимаем байт адреса

if (ADRES_RX==ADRES)

{
rx_u=getchar(); //принимаем байт управления

rx_s=getchar();//принимаем байт состояния

rx_w1=getchar();// принимаем байт 1 ключа
rx_w2=getchar();// ,,,,,,,,,,,,,,,,,,,,,,
rx_w3=getchar();// ,,,,,,,,,,,,,,,,,,,,,,
rx_w4=getchar();// ,,,,,,,,,,,,,,,,,,,,,,
rx_w5=getchar();// ,,,,,,,,,,,,,,,,,,,,,,
rx_w6=getchar();// принимаем байт 6 ключа

rx_CRC=getchar();//принимаем от главного расчитанное им СRC 8

RX_stop_p=getchar();//принимаем стоповый байт










/* дальше начинаем считать*/









};



};














}


}



Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание