Add the write method on the YMF262 hal and cretead a policy based system to manipulate gpio
This commit is contained in:
parent
682f8e1753
commit
7898563f39
|
|
@ -0,0 +1,19 @@
|
||||||
|
#ifndef FAKE_GPIO_HPP
|
||||||
|
#define FAKE_GPIO_HPP
|
||||||
|
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include "GPIO.hpp"
|
||||||
|
|
||||||
|
struct FakeGpio {
|
||||||
|
void set_data_bus(uint8_t val){}
|
||||||
|
void set_a0(Port port){}
|
||||||
|
void set_a1(Bank address_bank){}
|
||||||
|
void set_cs(State state){}
|
||||||
|
void set_wr(State state){}
|
||||||
|
void set_ic(State state){}
|
||||||
|
void set_rd(State state){}
|
||||||
|
void delay_ticks(uint32_t n){}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
#ifndef GPIO_HPP
|
||||||
|
#define GPIO_HPP
|
||||||
|
|
||||||
|
enum class State{
|
||||||
|
ACTIVE,
|
||||||
|
INACTIVE
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
enum class Port{
|
||||||
|
DATA,
|
||||||
|
ADDRESS
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class Bank{
|
||||||
|
BANK_0,
|
||||||
|
BANK_1,
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -2,11 +2,13 @@
|
||||||
#define YMF262_HAL_HPP
|
#define YMF262_HAL_HPP
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include "GPIO.hpp"
|
||||||
|
|
||||||
template <class GPIOPolicy>
|
template <class GPIOPolicy>
|
||||||
class YMF262_HAL{
|
class YMF262_HAL{
|
||||||
private:
|
private:
|
||||||
GPIOPolicy _gpio;
|
|
||||||
|
GPIOPolicy _gpio;
|
||||||
uint32_t _t_icw_ticks;
|
uint32_t _t_icw_ticks;
|
||||||
uint32_t _t_as_ticks;
|
uint32_t _t_as_ticks;
|
||||||
uint32_t _t_ah_ticks;
|
uint32_t _t_ah_ticks;
|
||||||
|
|
@ -19,6 +21,21 @@ class YMF262_HAL{
|
||||||
uint32_t _t_acc_ticks;
|
uint32_t _t_acc_ticks;
|
||||||
uint32_t _t_rdh_ticks;
|
uint32_t _t_rdh_ticks;
|
||||||
uint32_t _t_recovery_ticks;
|
uint32_t _t_recovery_ticks;
|
||||||
|
|
||||||
|
void write_bus(Bank bank, Port port, uint8_t data){
|
||||||
|
_gpio.set_a0(port);
|
||||||
|
_gpio.set_a1(bank);
|
||||||
|
_gpio.delay_ticks(_t_as_ticks);
|
||||||
|
_gpio.set_cs(State::ACTIVE);
|
||||||
|
_gpio.set_wr(State::ACTIVE);
|
||||||
|
_gpio.set_data_bus(data);
|
||||||
|
_gpio.delay_ticks(_t_wds_ticks);
|
||||||
|
_gpio.set_wr(State::INACTIVE);
|
||||||
|
_gpio.set_cs(State::INACTIVE);
|
||||||
|
_gpio.delay_ticks(_t_wdh_ticks);
|
||||||
|
_gpio.delay_ticks(_t_recovery_ticks);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
@ -38,6 +55,12 @@ class YMF262_HAL{
|
||||||
_t_acc_ticks = (uint32_t)(150 * ticks_per_ns);
|
_t_acc_ticks = (uint32_t)(150 * ticks_per_ns);
|
||||||
_t_rdh_ticks = (uint32_t)(10 * ticks_per_ns);
|
_t_rdh_ticks = (uint32_t)(10 * ticks_per_ns);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void write(Bank bank, uint8_t reg, uint8_t data){
|
||||||
|
write_bus(bank,Port::ADDRESS,reg);
|
||||||
|
write_bus(bank,Port::DATA,data);
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
Loading…
Reference in New Issue