Hallo Leute,
ich hatte noch die RP6uart_2 Lib vergessen. Die wird von dem Programm gebraucht und muss auch ins makefile mit:
SRC += $(RP6_LIB_PATH)/RP6common/RP6uart_2.c
... eingetragen werden.
RP6uart_2.h:
Code:
#ifndef RP6UART_2_H
#define RP6UART_2_H
#include "RP6uart.h"
#define PRECISION 6
#define DTOSTR_ALWAYS_SIGN 0x01
#define DTOSTR_PLUS_SIGN 0x02
#define DTOSTR_UPPERCASE 0x04
char receiveBuffer[UART_RECEIVE_BUFFER_SIZE + 1];
void writeLong(int32_t number, uint8_t base);
void writeLongLength(int32_t number, uint8_t base, uint8_t length);
void writeDouble(double number, uint8_t width, uint8_t prec);
void writeDoubleExp(double number, uint8_t prec, uint8_t flags);
uint8_t getInputLine(void);
void enterString(void);
#endif
RP6uart_2.c:
Code:
#include "RP6uart_2.h"
void writeLong(int32_t number, uint8_t base) {char buffer[33]; ltoa(number, &buffer[0], base); writeString(&buffer[0]);}
void writeLongLength(int32_t number, uint8_t base, uint8_t length) {char buffer[33]; ltoa(number, &buffer[0], base); int8_t cnt = length - strlen(buffer); if(cnt > 0) {for(; cnt > 0; cnt--, writeChar('0')); writeString(&buffer[0]);} else writeStringLength(&buffer[0], length, -cnt);}
void writeDouble(double number, uint8_t width, uint8_t prec) {char buffer[width + 1]; dtostrf(number, width, prec, &buffer[0]); writeString(&buffer[0]);}
void writeDoubleExp(double number, uint8_t prec, uint8_t flags) {char buffer[prec + 8]; dtostre(number, &buffer[0], prec, flags); writeString(&buffer[0]);}
uint8_t getInputLine(void) {static uint8_t buffer_pos = 0; if(getBufferLength()) {receiveBuffer[buffer_pos] = readChar(); if((receiveBuffer[buffer_pos] == '\n') || (receiveBuffer[buffer_pos] == '\r')) {receiveBuffer[buffer_pos] = '\0'; buffer_pos = 0; return 1;} else if(buffer_pos >= UART_RECEIVE_BUFFER_SIZE) {receiveBuffer[UART_RECEIVE_BUFFER_SIZE] = '\0'; buffer_pos = 0; return 2;} buffer_pos++;} return 0;}
void enterString(void) {while(!getInputLine());}
In dieser Lib sind einige UART-Funktionen ausgelagert.
Gruß Dirk
Lesezeichen