added mem 16
This commit is contained in:
parent
fbf95edb58
commit
a76321eb6b
6 changed files with 153 additions and 32 deletions
|
@ -423,14 +423,15 @@ bool B15F::pwmSetValue(uint8_t value)
|
|||
return aw == MSG_OK;
|
||||
}
|
||||
|
||||
bool B15F::setRegister(volatile uint8_t* adr, uint8_t val)
|
||||
bool B15F::setMem8(volatile uint16_t* adr, uint8_t val)
|
||||
{
|
||||
usart.clearInputBuffer();
|
||||
|
||||
uint8_t rq[] =
|
||||
{
|
||||
RQ_SET_REGISTER,
|
||||
static_cast<uint8_t>(reinterpret_cast<size_t>(adr)),
|
||||
RQ_SET_MEM_8,
|
||||
static_cast<uint8_t >(reinterpret_cast<size_t>(adr) & 0xFF),
|
||||
static_cast<uint8_t >(reinterpret_cast<size_t>(adr) >> 8),
|
||||
val
|
||||
};
|
||||
|
||||
|
@ -441,14 +442,15 @@ bool B15F::setRegister(volatile uint8_t* adr, uint8_t val)
|
|||
return aw == val;
|
||||
}
|
||||
|
||||
uint8_t B15F::getRegister(volatile uint8_t* adr)
|
||||
uint8_t B15F::getMem8(volatile uint16_t* adr)
|
||||
{
|
||||
usart.clearInputBuffer();
|
||||
|
||||
uint8_t rq[] =
|
||||
{
|
||||
RQ_GET_REGISTER,
|
||||
static_cast<uint8_t>(reinterpret_cast<size_t>(adr))
|
||||
RQ_GET_MEM_8,
|
||||
static_cast<uint8_t >(reinterpret_cast<size_t>(adr) & 0xFF),
|
||||
static_cast<uint8_t >(reinterpret_cast<size_t>(adr) >> 8)
|
||||
};
|
||||
|
||||
usart.transmit(&rq[0], 0, sizeof(rq));
|
||||
|
@ -458,6 +460,54 @@ uint8_t B15F::getRegister(volatile uint8_t* adr)
|
|||
return aw;
|
||||
}
|
||||
|
||||
bool B15F::setMem16(volatile uint16_t* adr, uint16_t val)
|
||||
{
|
||||
usart.clearInputBuffer();
|
||||
|
||||
uint8_t rq[] =
|
||||
{
|
||||
RQ_SET_MEM_16,
|
||||
static_cast<uint8_t >(reinterpret_cast<size_t>(adr) & 0xFF),
|
||||
static_cast<uint8_t >(reinterpret_cast<size_t>(adr) >> 8),
|
||||
static_cast<uint8_t >(val & 0xFF),
|
||||
static_cast<uint8_t >(val >> 8)
|
||||
};
|
||||
|
||||
usart.transmit(&rq[0], 0, sizeof(rq));
|
||||
|
||||
uint16_t aw;
|
||||
usart.receive(reinterpret_cast<uint8_t *>(&aw), 0, sizeof(aw));
|
||||
return aw == val;
|
||||
}
|
||||
|
||||
uint16_t B15F::getMem16(volatile uint16_t* adr)
|
||||
{
|
||||
usart.clearInputBuffer();
|
||||
|
||||
uint8_t rq[] =
|
||||
{
|
||||
RQ_GET_MEM_16,
|
||||
static_cast<uint8_t >(reinterpret_cast<size_t>(adr) & 0xFF),
|
||||
static_cast<uint8_t >(reinterpret_cast<size_t>(adr) >> 8)
|
||||
};
|
||||
|
||||
usart.transmit(&rq[0], 0, sizeof(rq));
|
||||
|
||||
uint16_t aw;
|
||||
usart.receive(reinterpret_cast<uint8_t *>(&aw), 0, sizeof(aw));
|
||||
return aw;
|
||||
}
|
||||
|
||||
bool B15F::setRegister(volatile uint8_t* adr, uint8_t val)
|
||||
{
|
||||
return setMem8(reinterpret_cast<volatile uint16_t*>(adr), val);
|
||||
}
|
||||
|
||||
uint8_t B15F::getRegister(volatile uint8_t* adr)
|
||||
{
|
||||
return getMem8(reinterpret_cast<volatile uint16_t*>(adr));
|
||||
}
|
||||
|
||||
/*************************/
|
||||
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#include <sys/ioctl.h>
|
||||
#include <termios.h>
|
||||
|
||||
#include "../../../firmware/requests.h"
|
||||
#include "requests.h"
|
||||
#include "usart.h"
|
||||
#include "driverexception.h"
|
||||
#include "timeoutexception.h"
|
||||
|
@ -223,17 +223,61 @@ public:
|
|||
bool pwmSetValue(uint8_t value);
|
||||
|
||||
/**
|
||||
* Setzt direkt den Wert eines MCU Registers.
|
||||
* Setzt direkt den Wert einer MCU Speicherzelle der Größe 8 Bit.
|
||||
* Diese kann ein Register oder RAM-Daten sein.
|
||||
* *Wichtig:* bei einer falschen Adresse kann das Board 15 ernsthaften Schaden nehmen!
|
||||
* \param adr Speicheradresse des Registers
|
||||
* \param adr Speicheradresse
|
||||
* \param val Neuer Wert für die Zelle
|
||||
* \return true, falls Vorgang erfolgreich
|
||||
* \throws DriverException
|
||||
*/
|
||||
bool setMem8(volatile uint16_t* adr, uint8_t val);
|
||||
|
||||
/**
|
||||
* Liefert den Wert einer MCU Speicherzelle der Größe 8 Bit.
|
||||
* Diese kann ein Register oder RAM-Daten sein.
|
||||
* \param adr Speicheradresse
|
||||
* \return Wert der Speicherzelle
|
||||
* \throws DriverException
|
||||
*/
|
||||
uint8_t getMem8(volatile uint16_t* adr);
|
||||
|
||||
/**
|
||||
* Setzt direkt den Wert einer MCU Speicherzelle der Größe 16 Bit.
|
||||
* Diese kann ein Register oder RAM-Daten sein.
|
||||
* *Wichtig:* bei einer falschen Adresse kann das Board 15 ernsthaften Schaden nehmen!
|
||||
* \param adr Speicheradresse
|
||||
* \param val Neuer Wert für die Zelle
|
||||
* \return true, falls Vorgang erfolgreich
|
||||
* \throws DriverException
|
||||
*/
|
||||
bool setMem16(volatile uint16_t* adr, uint16_t val);
|
||||
|
||||
/**
|
||||
* Liefert den Wert einer MCU Speicherzelle der Größe 16 Bit.
|
||||
* Diese kann ein Register oder RAM-Daten sein.
|
||||
* \param adr Speicheradresse
|
||||
* \return Wert der Speicherzelle
|
||||
* \throws DriverException
|
||||
*/
|
||||
uint16_t getMem16(volatile uint16_t* adr);
|
||||
|
||||
/**
|
||||
* Setzt direkt den Wert eines 8-Bit MCU Registers.
|
||||
* Diese Funktion arbeitet analog zu setMem8(), jedoch mit einer 8-Bit Adresse.
|
||||
* *Wichtig:* bei einer falschen Adresse kann das Board 15 ernsthaften Schaden nehmen!
|
||||
* \param adr Speicheradresse
|
||||
* \param val Neuer Wert für das Register
|
||||
* \return true, falls Vorgang erfolgreich
|
||||
* \throws DriverException
|
||||
*/
|
||||
bool setRegister(volatile uint8_t* adr, uint8_t val);
|
||||
|
||||
/**
|
||||
* Liefert den Wert eines MCU Registers.
|
||||
* \param adr Speicheradresse des Registers
|
||||
* Liefert den Wert eines 8-Bit MCU Registers.
|
||||
* Diese Funktion arbeitet analog zu getMem8(), jedoch mit einer 8-Bit Adresse.
|
||||
* \param adr Speicheradresse
|
||||
* \return Wert des Registers
|
||||
* \throws DriverException
|
||||
*/
|
||||
uint8_t getRegister(volatile uint8_t* adr);
|
||||
|
|
48
control/src/drv/requests.h
Normal file
48
control/src/drv/requests.h
Normal file
|
@ -0,0 +1,48 @@
|
|||
#ifndef REQUESTS_H
|
||||
#define REQUESTS_H
|
||||
|
||||
constexpr static uint8_t RQ_DISCARD = 0;
|
||||
constexpr static uint8_t RQ_TEST = 1;
|
||||
constexpr static uint8_t RQ_INFO = 2;
|
||||
constexpr static uint8_t RQ_INT_TEST = 3;
|
||||
constexpr static uint8_t RQ_SELF_TEST = 4;
|
||||
constexpr static uint8_t RQ_DIGITAL_WRITE_0 = 5;
|
||||
constexpr static uint8_t RQ_DIGITAL_WRITE_1 = 6;
|
||||
constexpr static uint8_t RQ_DIGITAL_READ_0 = 7;
|
||||
constexpr static uint8_t RQ_DIGITAL_READ_1 = 8;
|
||||
constexpr static uint8_t RQ_READ_DIP_SWITCH = 9;
|
||||
constexpr static uint8_t RQ_ANALOG_WRITE_0 = 10;
|
||||
constexpr static uint8_t RQ_ANALOG_WRITE_1 = 11;
|
||||
constexpr static uint8_t RQ_ANALOG_READ = 12;
|
||||
constexpr static uint8_t RQ_ADC_DAC_STROKE = 13;
|
||||
constexpr static uint8_t RQ_PWM_SET_FREQ = 14;
|
||||
constexpr static uint8_t RQ_PWM_SET_VALUE = 15;
|
||||
constexpr static uint8_t RQ_SET_MEM_8 = 16;
|
||||
constexpr static uint8_t RQ_GET_MEM_8 = 17;
|
||||
constexpr static uint8_t RQ_SET_MEM_16 = 18;
|
||||
constexpr static uint8_t RQ_GET_MEM_16 = 19;
|
||||
|
||||
uint8_t const rq_len[] = {
|
||||
1 /* RQ_DISCARD */,
|
||||
1 /* RQ_TEST */ + 1 /* test byte */,
|
||||
1 /* RQ_INFO */,
|
||||
1 /* RQ_INT_TEST */ + 1 /* test int high low */ + 1 /* test int high high */,
|
||||
1 /* RQ_SELF_TEST */,
|
||||
1 /* RQ_DIGITAL_WRITE_0 */ + 1 /* port value */,
|
||||
1 /* RQ_DIGITAL_WRITE_1 */ + 1 /* port value */,
|
||||
1 /* RQ_DIGITAL_READ_0 */,
|
||||
1 /* RQ_DIGITAL_READ_1 */,
|
||||
1 /* RQ_READ_DIP_SWITCH */,
|
||||
1 /* RQ_ANALOG_WRITE_0 */ + 1 /* test int high low */ + 1 /* test int high high */,
|
||||
1 /* RQ_ANALOG_WRITE_1 */ + 1 /* test int high low */ + 1 /* test int high high */,
|
||||
1 /* RQ_ANALOG_READ */ + 1 /* adc channel */,
|
||||
1 /* RQ_ADC_DAC_STROKE */ + 1 /* channel a */ + 1 /* channel b */ + 1 /* start low */ + 1 /* start high */ + 1 /* delta low */ + 1 /* delta high */ + 1 /* count low */ + 1 /* count high */,
|
||||
1 /* RQ_PWM_SET_FREQ */ + 1 /* freq low low */ + 1 /* freq low high */ + 1 /* freq high low */ + 1 /* freq high high */,
|
||||
1 /* RQ_PWM_SET_VALUE */ + 1 /* pwm value */,
|
||||
1 /* RQ_SET_MEM_8 */ + 1 /* memory address low */ + 1 /* memory address high */ + 1 /* memory value (8-bit) */,
|
||||
1 /* RQ_GET_MEM_8 */ + 1 /* memory address low */ + 1 /* memory address high */,
|
||||
1 /* RQ_SET_MEM_16 */ + 1 /* memory address low */ + 1 /* memory address high */ + 1 /* memory value low */ + 1 /* memory value high */,
|
||||
1 /* RQ_GET_MEM_16 */ + 1 /* memory address low */ + 1 /* memory address high */,
|
||||
};
|
||||
|
||||
#endif // REQUESTS_H
|
Loading…
Add table
Add a link
Reference in a new issue