Subversion Repositories BL-Ctrl

Compare Revisions

Ignore whitespace Rev 22 → Rev 23

/trunk/main.c
18,7 → 18,7
unsigned int Drehzahl = 0; // in 100UPM 60 = 6000
unsigned int KommutierDelay = 10;
unsigned int I2C_Timeout = 0;
unsigned char SIO_Timeout = 0;
unsigned int SIO_Timeout = 0;
unsigned int SollDrehzahl = 0;
unsigned int IstDrehzahl = 0;
unsigned int DrehZahlTabelle[256];//vorberechnete Werte zur Drehzahlerfassung
/trunk/main.h
101,7 → 101,7
#include "PPM_Decode.h"
 
extern unsigned int I2C_Timeout;
extern unsigned char SIO_Timeout;
extern unsigned int SIO_Timeout;
extern unsigned int PWM;
extern unsigned int Strom; //ca. in 0,1A
extern unsigned char Strom_max;
/trunk/uart.c
22,6 → 22,8
unsigned volatile char NeuerDatensatzEmpfangen = 0;
unsigned volatile char UebertragungAbgeschlossen = 1;
unsigned char MeineSlaveAdresse;
unsigned char MotorTest[4] = {0,0,0,0};
unsigned volatile char AnzahlEmpfangsBytes = 0;
 
struct str_DebugOut DebugOut;
 
53,15 → 55,40
else ptr = 0;
}
 
// --------------------------------------------------------------------------
void Decode64(unsigned char *ptrOut, unsigned char len, unsigned char ptrIn,unsigned char max) // Wohin mit den Daten; Wie lang; Wo im RxdBuffer
{
unsigned char a,b,c,d;
unsigned char ptr = 0;
unsigned char x,y,z;
while(len)
{
a = RxdBuffer[ptrIn++] - '=';
b = RxdBuffer[ptrIn++] - '=';
c = RxdBuffer[ptrIn++] - '=';
d = RxdBuffer[ptrIn++] - '=';
if(ptrIn > max - 2) break; // nicht mehr Daten verarbeiten, als empfangen wurden
 
x = (a << 2) | (b >> 4);
y = ((b & 0x0f) << 4) | (c >> 2);
z = ((c & 0x03) << 6) | d;
 
if(len--) ptrOut[ptr++] = x; else break;
if(len--) ptrOut[ptr++] = y; else break;
if(len--) ptrOut[ptr++] = z; else break;
}
 
}
 
 
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++ Empfangs-Part der Datenübertragung
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SIGNAL(INT_VEC_RX)
{
static unsigned char serPacketCounter = 100;
#if X3D_SIO == 1
static unsigned char serPacketCounter = 100;
SioTmp = UDR;
if(SioTmp == 0xF5) // Startzeichen
{
97,12 → 124,20
crc2 = '=' + crc % 64;
CrcOkay = 0;
if((crc1 == RxdBuffer[buf_ptr-2]) && (crc2 == RxdBuffer[buf_ptr-1])) CrcOkay = 1; else { CrcOkay = 0; };
if(!NeuerDatensatzEmpfangen && CrcOkay) // Datensatz schon verarbeitet
if(CrcOkay) // Datensatz schon verarbeitet
{
NeuerDatensatzEmpfangen = 1;
//NeuerDatensatzEmpfangen = 1;
AnzahlEmpfangsBytes = buf_ptr;
RxdBuffer[buf_ptr] = '\r';
if(/*(RxdBuffer[1] == MeineSlaveAdresse || (RxdBuffer[1] == 'a')) && */(RxdBuffer[2] == 'R')) wdt_enable(WDTO_250MS); // Reset-Commando
uart_putchar(RxdBuffer[2]);
if (RxdBuffer[2] == 't') // Motortest
{ Decode64((unsigned char *) &MotorTest[0],sizeof(MotorTest),3,AnzahlEmpfangsBytes);
SIO_Sollwert = MotorTest[MOTORADRESSE - 1];
SIO_Timeout = 500; // werte für 500ms gültig
}
}
}
else