mirror of
https://github.com/sergeyyarkov/pdsp188x.git
synced 2026-10-11 10:28:54 +03:00
delay to interface
This commit is contained in:
parent
c4bcf30630
commit
3a9ffdb4c5
22
pdsp188x.c
22
pdsp188x.c
@ -11,12 +11,12 @@ static void ClearAddrLine(uint8_t pin_mask) { driver->set_pins(PDSP188x_ADDR_LIN
|
|||||||
#define MemSelectControlWord() SetAddrLine(A4)
|
#define MemSelectControlWord() SetAddrLine(A4)
|
||||||
#define MemSelectNone() ClearAddrLine(A3 | A4)
|
#define MemSelectNone() ClearAddrLine(A3 | A4)
|
||||||
#define SetAddrNone() ClearAddrLine(A0 | A1 | A2 | A3 | A4)
|
#define SetAddrNone() ClearAddrLine(A0 | A1 | A2 | A3 | A4)
|
||||||
#define FlashCycle() \
|
#define FlashCycle() \
|
||||||
do { \
|
do { \
|
||||||
ClearDataLine(WR); \
|
ClearDataLine(WR); \
|
||||||
_delay_us(1); \
|
driver->delay_us(1); \
|
||||||
SetDataLine(WR); \
|
SetDataLine(WR); \
|
||||||
_delay_us(1); \
|
driver->delay_us(1); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
uint8_t pos = 0;
|
uint8_t pos = 0;
|
||||||
@ -37,14 +37,14 @@ void PDSP188x_SetBrightness(uint8_t level) {
|
|||||||
SetAddrLine(A4);
|
SetAddrLine(A4);
|
||||||
driver->send_byte(level);
|
driver->send_byte(level);
|
||||||
FlashCycle();
|
FlashCycle();
|
||||||
_delay_us(5);
|
driver->delay_us(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PDSP188x_SendChar(char c, uint8_t digit) {
|
void PDSP188x_SendChar(char c, uint8_t digit) {
|
||||||
if (driver == NULL || driver->send_byte == NULL) return;
|
if (driver == NULL || driver->send_byte == NULL) return;
|
||||||
|
|
||||||
driver->send_byte(c);
|
driver->send_byte(c);
|
||||||
_delay_us(1);
|
driver->delay_us(1);
|
||||||
MemSelectCharRAM();
|
MemSelectCharRAM();
|
||||||
|
|
||||||
/* digit set */
|
/* digit set */
|
||||||
@ -52,10 +52,10 @@ void PDSP188x_SendChar(char c, uint8_t digit) {
|
|||||||
if (digit & 0x02) SetAddrLine(A1);
|
if (digit & 0x02) SetAddrLine(A1);
|
||||||
if (digit & 0x04) SetAddrLine(A2);
|
if (digit & 0x04) SetAddrLine(A2);
|
||||||
|
|
||||||
_delay_us(1);
|
driver->delay_us(1);
|
||||||
FlashCycle();
|
FlashCycle();
|
||||||
SetAddrNone();
|
SetAddrNone();
|
||||||
_delay_us(1);
|
driver->delay_us(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PDSP188x_Clear(void) {
|
void PDSP188x_Clear(void) {
|
||||||
@ -80,6 +80,8 @@ void PDSP188x_SendStr(char *str) {
|
|||||||
void PDSP188x_BlinkEn(uint8_t control) {
|
void PDSP188x_BlinkEn(uint8_t control) {
|
||||||
uint8_t control_command = control ? 0x10 : 0;
|
uint8_t control_command = control ? 0x10 : 0;
|
||||||
|
|
||||||
|
if (driver == NULL || driver->send_byte == NULL) return;
|
||||||
|
|
||||||
SetAddrNone();
|
SetAddrNone();
|
||||||
MemSelectControlWord();
|
MemSelectControlWord();
|
||||||
SetDataLine(FL);
|
SetDataLine(FL);
|
||||||
|
|||||||
@ -1,9 +1,7 @@
|
|||||||
#if !defined(_PDSP188x_H_)
|
#if !defined(_PDSP188x_H_)
|
||||||
# define _PDSP188x_H_
|
# define _PDSP188x_H_
|
||||||
|
|
||||||
# include <avr/io.h>
|
|
||||||
# include <stdlib.h>
|
# include <stdlib.h>
|
||||||
# include <util/delay.h>
|
|
||||||
|
|
||||||
# ifdef __AVR__
|
# ifdef __AVR__
|
||||||
|
|
||||||
@ -35,6 +33,8 @@ typedef struct {
|
|||||||
void (*send_byte)(uint8_t byte);
|
void (*send_byte)(uint8_t byte);
|
||||||
void (*write_char)(char c, uint8_t pos);
|
void (*write_char)(char c, uint8_t pos);
|
||||||
void (*set_pins)(uint8_t set_mask, uint8_t pin, uint8_t state);
|
void (*set_pins)(uint8_t set_mask, uint8_t pin, uint8_t state);
|
||||||
|
void (*delay_ms)(uint8_t ms);
|
||||||
|
void (*delay_us)(uint8_t us);
|
||||||
} PDSP188x_DriverInterface_t;
|
} PDSP188x_DriverInterface_t;
|
||||||
|
|
||||||
# define PDSP188x_BRIGHTNESS_LEVEL_100 0x00
|
# define PDSP188x_BRIGHTNESS_LEVEL_100 0x00
|
||||||
|
|||||||
@ -38,4 +38,17 @@ static void SendByte(uint8_t byte) {
|
|||||||
_delay_us(5);
|
_delay_us(5);
|
||||||
}
|
}
|
||||||
|
|
||||||
const PDSP188x_DriverInterface_t PDSP188x_AVR_Driver = {.init = Init, .send_byte = SendByte, .set_pins = SetPins};
|
static void DelayMS(uint8_t ms) {
|
||||||
|
while (ms--) {
|
||||||
|
_delay_ms(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void DelayUS(uint8_t us) {
|
||||||
|
while (us--) {
|
||||||
|
_delay_us(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const PDSP188x_DriverInterface_t PDSP188x_AVR_Driver = {
|
||||||
|
.init = Init, .send_byte = SendByte, .set_pins = SetPins, .delay_ms = DelayMS, .delay_us = DelayUS};
|
||||||
Loading…
x
Reference in New Issue
Block a user