[an error occurred while processing this directive] [an error occurred while processing this directive]
Ну вот я доставил текст в студию...(Это о генерации того кода который не выполнялся)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено kos 14 февраля 2002 г. 14:28


Не работала ветка 3 и 5...


FILE: C:\user\AVR\Prog.c

#pragma language=extended
#define ENABLE_BIT_DEFININTIONS 1
#include "global.h"
#include "uart.h"
//#include<ina90.h>


//#include "Manch.h"
//#include "timer1.h"

#define FLAG 0
#define SET |= 1<<
#define CLEAR &=~ 1<<
#define adr_dev 0x10

#define SPI_PORT PORTC
#define SPI_PIN PINC
#define SPI_DDR DDRC
#define OUTADC PC0
#define INADC PC1
#define CLKADC PC2

#define DDR_DRDY PORTD
#define PORT_DRDY PORTD
#define PIN_DRDY PIND
#define DRDY PD2
#define Init_DRDY() DDR_DRDY &=~(1<<DRDY);PORT_DRDY|=(1<<DRDY);


#define Init_ADC()\
{\
SPI_DDR&=~(1<<OUTADC);\
SPI_DDR|=6;\
SPI_PORT|=7;\
}

#define Init_ADC_1()\
{\
SPI_DDR=6;\
SPI_PORT|=7;\
}


#define Init_Dop_Uart() DDRB |=(1<<PB4);


#define SetTX() PORTB |=(1<<PB4); USR |= (1<<TXC);
#define SetRX() PORTB &=~(1<<PB4);
#define WaitSetRX() while(!(USR & (1<<TXC))); PORTB &=~(1<<PB4);
#define DisableRX_INT() UCR &= ~(1<<RXCIE);//запрет приема на время передачи...
#define EnableRX_INT() UCR |=(1<<RXCIE);//разрешение приема ...

extern char inhex(long flt,char s[],int len);
extern void CRC_Update(unsigned int *, unsigned char *b, unsigned char N);


void Delay(unsigned long del)
{
while(del--);
}

//ф-ция воспринимает два параметра байт как таковой и кол-во которые надо выпихнуть
void WriteByteADC(unsigned char data,unsigned char k)
{
//unsigned char Tmp=0;
//SPI_PORT &=~ (1<<CLKADC);
do
{
if (0x80 & data)
{
SPI_PORT|=(1<<INADC);
//SPI_PORT|=(1<<1);
}
else
{
SPI_PORT &=~ (1<<INADC);
//SPI_PORT &=~ (1<<1);
}
// SPI_PORT &=~ (1<<CLKADC);
SPI_PORT |= (1<<CLKADC);
_NOP();_NOP();_NOP();
Delay(50);
SPI_PORT &=~ (1<<CLKADC);
// SPI_PORT |= (1<<CLKADC);
Delay(50);
/*SPI_PORT &=~ (1<<2);
_NOP();_NOP();_NOP();
SPI_PORT |= (1<<2);*/
data=data<<1;
}
while(--k!=0);
}


#define writeSerial(a,b) WriteByteADC(a,b)

//ф-ция воспринимает два параметра байт как таковой и кол-во которые надо выпихнуть
unsigned char ReadByteADC(unsigned char k)
{
unsigned char tmp=0;

//SPI_PORT &=~ (1<<CLKADC);
do
{
// SPI_PORT &=~(1<<CLKADC);
SPI_PORT |=(1<<CLKADC);
_NOP();_NOP();_NOP();
Delay(50);
SPI_PORT &=~ (1<<CLKADC);
// SPI_PORT |= (1<<CLKADC);
Delay(50);
/*SPI_PORT &=~(1<<2);
_NOP();_NOP();_NOP();
SPI_PORT |= (1<<2);*/
tmp=tmp<<1;
if (SPI_PIN & (1<<0)) tmp++;
}
while (--k!=0);
return tmp;
}

void MinMax(unsigned int *Arr,unsigned char k, unsigned int *Min,unsigned int *Max)
{
unsigned char i=0;

*Min=Arr[0];
*Max=Arr[0];

do
{
if (Arr[i]<*Min) *Min=Arr[i];
if (Arr[i]>*Max) *Max=Arr[i];
}
while(++i!=k);

}

#define readSerial(b) ReadByteADC(b)

void SendGain(unsigned char ClokReg,unsigned char SetReg,unsigned int *TestArr,unsigned char sizeArr,unsigned char Fl)
{
unsigned char Buf[8],k=0;

writeSerial( ~0x20, 8 ); // Comm reg
writeSerial( ~ClokReg, 8 );
writeSerial( ~0x10, 8 ); // Comm reg
writeSerial( ~SetReg, 8 );
while(!(PIN_DRDY&(1<< DRDY)));
while((PIN_DRDY&(1<< DRDY)));
while(!(PIN_DRDY&(1<< DRDY)));
while((PIN_DRDY&(1<< DRDY)));
while(!(PIN_DRDY&(1<< DRDY)));
while((PIN_DRDY&(1<< DRDY)));
while(!(PIN_DRDY&(1<< DRDY)));
while((PIN_DRDY&(1<< DRDY)));
while(!(PIN_DRDY&(1<< DRDY)));
while((PIN_DRDY&(1<< DRDY)));
while(!(PIN_DRDY&(1<< DRDY)));
while((PIN_DRDY&(1<< DRDY)));
while(!(PIN_DRDY&(1<< DRDY)));
while((PIN_DRDY&(1<< DRDY)));
while(!(PIN_DRDY&(1<< DRDY)));
k=0;
do
{
while(!(PIN_DRDY&(1<< DRDY)));
writeSerial( ~0x38, 8 );
*((unsigned char *)(&TestArr[k])+1) = readSerial(8);
*((unsigned char *)(&TestArr[k])) = readSerial(8);
TestArr[k]=~TestArr[k];
if (Fl)
{
inhex(TestArr[k],(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)Buf,sizeof(Buf));
WaitSetRX();
EnableRX_INT();
}
}
while(++k!=sizeArr);
}


unsigned char b[5]="Hello";

__C_task void main(void)
{
static unsigned char a[12]="Min=Max=Res=",Buf[8],k;
unsigned long data=0;
static unsigned int TestArr[16]/*={1,0,36,56,34,87,0xffff,0,45}*/,Min,Max;


//MinMax(TestArr,sizeof(TestArr),&Min,&Max);

//*((unsigned char *)(&data)+2)=0xaa;
Init_DRDY();

//while(!(PIN_DRDY&(1<< DRDY)));
Init_ADC_1();
//WriteByteADC(~0x68,8);
SPI_PORT &=~ (1<<CLKADC);
WriteByteADC(~0xff,8);
WriteByteADC(~0xff,8);
WriteByteADC(~0xff,8);
WriteByteADC(~0xff,8);
writeSerial( ~0x20, 8 ); // Comm reg
writeSerial( ~0x08, 8 ); // Clock reg, 8 bits
writeSerial( ~0x10, 8 ); // Comm reg
writeSerial( ~0x46, 8 ); // Clock reg, 8 bits
Init_Dop_Uart();
InitUART(25);
SetRX();
_SEI();


while(1)
{
switch(ReceiveWaitByte())
{
case 0x31:
DisableRX_INT();
SetTX();
TransmitByte('B');
TransmitByte('B');
TransmitByte('B');
TransmitBytes((char *)a,sizeof(a));
WaitSetRX();
EnableRX_INT();
break;
case 0x32:
DisableRX_INT();
SetTX();
TransmitByte('A');
TransmitByte('A');
TransmitByte('A');
TransmitBytes((char *)b,sizeof(b));
WaitSetRX();
EnableRX_INT();
break;
case 0x33:
WriteByteADC(~0x68,8);
*((unsigned char *)(&data)+2)=ReadByteADC(8);
*((unsigned char *)(&data)+1)=ReadByteADC(8);
*((unsigned char *)(&data))=ReadByteADC(8);
data=~data;
inhex(data,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)Buf,sizeof(Buf));
WaitSetRX();
EnableRX_INT();
WriteByteADC(~0x78,8);
*((unsigned char *)(&data)+2)=ReadByteADC(8);
*((unsigned char *)(&data)+1)=ReadByteADC(8);
*((unsigned char *)(&data))=ReadByteADC(8);
data=~data;
inhex(data,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)Buf,sizeof(Buf));
WaitSetRX();
EnableRX_INT();

writeSerial( ~0x20, 8 ); // Comm reg
writeSerial( ~0x08, 8 ); // Clock reg, 8 bits
SendGain(0x08,0x46,TestArr,16,1);
//ReceiveWaitByte();
MinMax(TestArr,16,&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
WaitSetRX();
EnableRX_INT();
SendGain(0x08,0x4e,TestArr,16,1);
//ReceiveWaitByte();
MinMax(TestArr,16,&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
WaitSetRX();
EnableRX_INT();
SendGain(0x08,0x56,TestArr,16,1);
//ReceiveWaitByte();
MinMax(TestArr,16,&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
WaitSetRX();
EnableRX_INT();
SendGain(0x08,0x5e,TestArr,16,1);
//ReceiveWaitByte();
MinMax(TestArr,16,&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
WaitSetRX();
EnableRX_INT();
SendGain(0x08,0x66,TestArr,16,1);
//ReceiveWaitByte();
MinMax(TestArr,16,&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
WaitSetRX();
EnableRX_INT();
SendGain(0x08,0x6e,TestArr,16,1);
//ReceiveWaitByte();
MinMax(TestArr,16,&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
WaitSetRX();
EnableRX_INT();
SendGain(0x08,0x76,TestArr,16,1);
//ReceiveWaitByte();
MinMax(TestArr,16,&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
WaitSetRX();
EnableRX_INT();
SendGain(0x08,0x7e,TestArr,16,1);
//ReceiveWaitByte();
MinMax(TestArr,16,&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
WaitSetRX();
EnableRX_INT();
break;
case 0x34:

DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
WaitSetRX();
EnableRX_INT();
writeSerial( ~0x10, 8 ); /* Comm reg */
writeSerial( ~0x46, 8 ); /* Setup reg, 8 bits */
//while(PIN_DRDY&(1<< DRDY));

DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
WaitSetRX();
EnableRX_INT();
break;
case 0x35:
SendGain(0x08,0x46,TestArr,16,1);
ReceiveWaitByte();
MinMax(TestArr,sizeof(TestArr),&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
TransmitByte(0x31);
WaitSetRX();
EnableRX_INT();
SendGain(0x08,0x4e,TestArr,16,1);
ReceiveWaitByte();
MinMax(TestArr,sizeof(TestArr),&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
TransmitByte(0x32);
WaitSetRX();
EnableRX_INT();
SendGain(0x08,0x56,TestArr,16,1);
ReceiveWaitByte();
MinMax(TestArr,sizeof(TestArr),&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
TransmitByte(0x33);
WaitSetRX();
EnableRX_INT();
SendGain(0x08,0x5e,TestArr,16,1);
ReceiveWaitByte();
MinMax(TestArr,sizeof(TestArr),&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
TransmitByte(0x34);
WaitSetRX();
EnableRX_INT();
SendGain(0x08,0x66,TestArr,16,1);
ReceiveWaitByte();
MinMax(TestArr,sizeof(TestArr),&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
TransmitByte(0x35);
WaitSetRX();
EnableRX_INT();
SendGain(0x08,0x6e,TestArr,16,1);
ReceiveWaitByte();
MinMax(TestArr,sizeof(TestArr),&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
WaitSetRX();
EnableRX_INT();
SendGain(0x08,0x76,TestArr,16,1);
TransmitByte(0x36);
ReceiveWaitByte();
MinMax(TestArr,sizeof(TestArr),&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
TransmitByte(0x37);
WaitSetRX();
EnableRX_INT();
SendGain(0x08,0x7e,TestArr,16,1);
ReceiveWaitByte();
MinMax(TestArr,sizeof(TestArr),&Min,&Max);
Max=Max-Min;
inhex(Max,(char *)Buf,sizeof(Buf));
DisableRX_INT();
SetTX();
TransmitBytes((char *)a+8,4);
TransmitBytes((char *)Buf,sizeof(Buf));
TransmitByte(0x38);
WaitSetRX();
EnableRX_INT();
break;
case 0x36:
break;

}
} // CRC_Update(&crc,((unsigned char *)(&L_tmp)),1);//подсчет контрольной суммы для массива
// CRC_Update(&crc,((unsigned char *)(&L_tmp)+1),1);//Как обещал Александр
}


Created with The Source Studio - EVALUATION version

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

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru