- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 8 von 8

Thema: RP6Control M32: Rechteck-Generator

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    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
    Geändert von Dirk (24.05.2014 um 12:49 Uhr) Grund: Neue Version

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests