summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
f4ffb77)
Reduce the amount of spam sent by s88w-t
Optimize the LCD output code in s88w-r
volatile uint8_t rx_fill = 0xFF;
volatile uint8_t input[128] = { 0 };
volatile uint8_t latch[128] = { 0 };
volatile uint8_t rx_fill = 0xFF;
volatile uint8_t input[128] = { 0 };
volatile uint8_t latch[128] = { 0 };
+uint8_t log_row = 0;
+uint8_t log_col = 0;
lcd_gotoxy(19-offset-nibbles, 0);
for(i=0; i<=nibbles; ++i)
lcd_write(rx_buf[3+i]);
lcd_gotoxy(19-offset-nibbles, 0);
for(i=0; i<=nibbles; ++i)
lcd_write(rx_buf[3+i]);
- lcd_gotoxy(log_pos%20, 1+log_pos/20);
+ lcd_gotoxy(log_col, 1+log_row);
- ++log_pos;
- if(log_pos>=60)
- log_pos = 0;
- if(log_pos%20==0)
- lcd_gotoxy(log_pos%20, 1+log_pos/20);
+ ++log_col;
+ if(log_col>=20)
+ {
+ log_col = 0;
+ ++log_row;
+ if(log_row>=3)
+ log_row = 0;
+ lcd_gotoxy(log_col, 1+log_row);
+ }
volatile uint8_t nibbles = 2;
volatile uint8_t offset = 0;
volatile uint16_t state = 0;
volatile uint8_t nibbles = 2;
volatile uint8_t offset = 0;
volatile uint16_t state = 0;
+volatile uint8_t time_since_send = 0;
PORTB = 0x3F; // 00111111
serial_init(9600);
PORTB = 0x3F; // 00111111
serial_init(9600);
- timer_start_hz(1, 1, 2);
+ timer_start_hz(1, 100, 1);
uint16_t input = 0;
uint16_t valid = 0xFFF;
for(i=0; i<100; ++i)
{
uint16_t input = 0;
uint16_t valid = 0xFFF;
for(i=0; i<100; ++i)
{
+ uint16_t pins = 0;
+ for(j=0; j<100; ++j)
+ pins |= ~((PIND>>2) | ((PINB&0x3F)<<6));
- pins = ~((PIND>>2) | ((PINB&0x3F)<<6));
valid &= ~(pins^input);
}
valid &= ~(pins^input);
}
input |= state&~valid;
input &= (1<<(nibbles*4))-1;
input |= state&~valid;
input &= (1<<(nibbles*4))-1;
+ if(input!=state && time_since_send>5)
{
state = input;
send_state();
{
state = input;
send_state();
void send_state(void)
{
uint8_t i;
void send_state(void)
{
uint8_t i;
serial_write(':');
serial_write(hexdigit(offset>>8));
serial_write(hexdigit(offset>>4));
serial_write(':');
serial_write(hexdigit(offset>>8));
serial_write(hexdigit(offset>>4));
for(i=nibbles; i--;)
serial_write(hexdigit(state>>(i*4)));
serial_write('.');
for(i=nibbles; i--;)
serial_write(hexdigit(state>>(i*4)));
serial_write('.');
+
+ time_since_send = 0;
+}
+
+void timer(void)
+{
+ ++time_since_send;
+ if(time_since_send>200)
+ send_state();
-TIMER_SET_CALLBACK(1, send_state)
+TIMER_SET_CALLBACK(1, timer)
uint8_t hexdigit(uint8_t n)
{
uint8_t hexdigit(uint8_t n)
{