register zugriff verschönert
This commit is contained in:
parent
78e8ab5d1c
commit
72c34b6ba4
|
@ -5,31 +5,30 @@
|
||||||
|
|
||||||
const char PLOT_FILE[] = "plot.bin";
|
const char PLOT_FILE[] = "plot.bin";
|
||||||
|
|
||||||
constexpr uint8_t SFR_OFFSET = 0x20;
|
|
||||||
constexpr uint8_t SFR_DDRB = 0x04;
|
|
||||||
constexpr uint8_t SFR_WDTCSR = 0x60;
|
|
||||||
constexpr uint8_t SFR_PORTB = 0x05;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dieses Beispiel erzeugt einen 300ms langen Impuls an PB0.
|
* Dieses Beispiel erzeugt einen 300ms langen Impuls an PB0.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
uint8_t DDRB, PORTB;
|
uint8_t tmp;
|
||||||
B15F& drv = B15F::getInstance();
|
B15F& drv = B15F::getInstance();
|
||||||
|
|
||||||
DDRB = drv.getRegister(SFR_DDRB + SFR_OFFSET);
|
|
||||||
DDRB |= (1<<0);
|
|
||||||
drv.setRegister(SFR_DDRB + SFR_OFFSET, DDRB);
|
|
||||||
|
|
||||||
PORTB = drv.getRegister(SFR_PORTB + SFR_OFFSET);
|
tmp = drv.getRegister(&DDRB);
|
||||||
PORTB |= (1<<0);
|
tmp |= (1<<0);
|
||||||
drv.setRegister(SFR_PORTB + SFR_OFFSET, PORTB);
|
drv.setRegister(&DDRB, tmp);
|
||||||
|
|
||||||
|
|
||||||
|
tmp = drv.getRegister(&PORTB);
|
||||||
|
tmp |= (1<<0);
|
||||||
|
drv.setRegister(&PORTB, tmp);
|
||||||
|
|
||||||
|
|
||||||
drv.delay_ms(300);
|
drv.delay_ms(300);
|
||||||
|
|
||||||
PORTB = drv.getRegister(SFR_PORTB + SFR_OFFSET);
|
|
||||||
PORTB &= ~(1<<0);
|
tmp = drv.getRegister(&PORTB);
|
||||||
drv.setRegister(SFR_PORTB + SFR_OFFSET, PORTB);
|
tmp &= ~(1<<0);
|
||||||
|
drv.setRegister(&PORTB, tmp);
|
||||||
}
|
}
|
||||||
|
|
|
@ -393,14 +393,14 @@ bool B15F::pwmSetValue(uint8_t value)
|
||||||
return aw == MSG_OK;
|
return aw == MSG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool B15F::setRegister(uint8_t adr, uint8_t val)
|
bool B15F::setRegister(volatile uint8_t* adr, uint8_t val)
|
||||||
{
|
{
|
||||||
usart.clearInputBuffer();
|
usart.clearInputBuffer();
|
||||||
|
|
||||||
uint8_t rq[] =
|
uint8_t rq[] =
|
||||||
{
|
{
|
||||||
RQ_SET_REG,
|
RQ_SET_REG,
|
||||||
adr,
|
static_cast<uint8_t>(reinterpret_cast<size_t>(adr)),
|
||||||
val
|
val
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -411,14 +411,14 @@ bool B15F::setRegister(uint8_t adr, uint8_t val)
|
||||||
return aw == val;
|
return aw == val;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t B15F::getRegister(uint8_t adr)
|
uint8_t B15F::getRegister(volatile uint8_t* adr)
|
||||||
{
|
{
|
||||||
usart.clearInputBuffer();
|
usart.clearInputBuffer();
|
||||||
|
|
||||||
uint8_t rq[] =
|
uint8_t rq[] =
|
||||||
{
|
{
|
||||||
RQ_GET_REG,
|
RQ_GET_REG,
|
||||||
adr
|
static_cast<uint8_t>(reinterpret_cast<size_t>(adr))
|
||||||
};
|
};
|
||||||
|
|
||||||
usart.transmit(&rq[0], 0, sizeof(rq));
|
usart.transmit(&rq[0], 0, sizeof(rq));
|
||||||
|
|
|
@ -18,6 +18,11 @@
|
||||||
#include "driverexception.h"
|
#include "driverexception.h"
|
||||||
#include "timeoutexception.h"
|
#include "timeoutexception.h"
|
||||||
|
|
||||||
|
// wichtig für die Register-Zugriffe
|
||||||
|
#define _AVR_IO_H_ 1 // Erzwinge die Inklusion
|
||||||
|
#include "/usr/lib/avr/include/avr/sfr_defs.h"
|
||||||
|
#include "/usr/lib/avr/include/avr/iom1284p.h"
|
||||||
|
|
||||||
typedef std::function<void(std::exception&)> errorhandler_t;
|
typedef std::function<void(std::exception&)> errorhandler_t;
|
||||||
|
|
||||||
|
|
||||||
|
@ -217,14 +222,14 @@ public:
|
||||||
* \param val Neuer Wert für das Register
|
* \param val Neuer Wert für das Register
|
||||||
* \throws DriverException
|
* \throws DriverException
|
||||||
*/
|
*/
|
||||||
bool setRegister(uint8_t adr, uint8_t val);
|
bool setRegister(volatile uint8_t* adr, uint8_t val);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Liefert den Wert eines MCU Registers.
|
* Liefert den Wert eines MCU Registers.
|
||||||
* \param adr Speicheradresse des Registers
|
* \param adr Speicheradresse des Registers
|
||||||
* \throws DriverException
|
* \throws DriverException
|
||||||
*/
|
*/
|
||||||
uint8_t getRegister(uint8_t adr);
|
uint8_t getRegister(volatile uint8_t* adr);
|
||||||
|
|
||||||
/*************************/
|
/*************************/
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue