line buffer dynamic update
This commit is contained in:
parent
9eaf78d6b5
commit
1764a5f2b3
3
const.h
3
const.h
@ -3,3 +3,6 @@
|
|||||||
#define VERTICAL_OFFSET 30
|
#define VERTICAL_OFFSET 30
|
||||||
#define HORIZONTAL_OFFSET 192
|
#define HORIZONTAL_OFFSET 192
|
||||||
#define LINE_BUFFER_SIZE 160
|
#define LINE_BUFFER_SIZE 160
|
||||||
|
|
||||||
|
#define BLACK 0x00
|
||||||
|
#define WHITE 0xff
|
||||||
|
11
main.S
11
main.S
@ -2,14 +2,6 @@
|
|||||||
#include "macro.h"
|
#include "macro.h"
|
||||||
#include "const.h"
|
#include "const.h"
|
||||||
|
|
||||||
.data
|
|
||||||
|
|
||||||
frame:
|
|
||||||
.word 0
|
|
||||||
|
|
||||||
line:
|
|
||||||
.word 0
|
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
.global main
|
.global main
|
||||||
@ -43,11 +35,12 @@ main:
|
|||||||
ldi r16, 1
|
ldi r16, 1
|
||||||
sts line, r16
|
sts line, r16
|
||||||
|
|
||||||
call main_c
|
call setup_c
|
||||||
|
|
||||||
sei ; global interrupt enable
|
sei ; global interrupt enable
|
||||||
|
|
||||||
1:
|
1:
|
||||||
|
call loop_c
|
||||||
rjmp 1b
|
rjmp 1b
|
||||||
|
|
||||||
.global int_horizontal_sync
|
.global int_horizontal_sync
|
||||||
|
21
main.c
21
main.c
@ -2,7 +2,9 @@
|
|||||||
#include <avr/interrupt.h>
|
#include <avr/interrupt.h>
|
||||||
#include "const.h"
|
#include "const.h"
|
||||||
|
|
||||||
char line_buffer[LINE_BUFFER_SIZE];
|
volatile uint16_t frame;
|
||||||
|
volatile uint16_t line;
|
||||||
|
volatile char line_buffer[LINE_BUFFER_SIZE];
|
||||||
|
|
||||||
ISR(INT0_vect, ISR_NAKED) {
|
ISR(INT0_vect, ISR_NAKED) {
|
||||||
asm("jmp int_vertical_sync");
|
asm("jmp int_vertical_sync");
|
||||||
@ -14,8 +16,23 @@ ISR(TIMER0_COMPA_vect, ISR_NAKED) {
|
|||||||
asm("jmp int_timer_0");
|
asm("jmp int_timer_0");
|
||||||
}
|
}
|
||||||
|
|
||||||
void main_c() {
|
void setup_c() {
|
||||||
|
/*
|
||||||
for (int i = 0; i < LINE_BUFFER_SIZE; ++i) {
|
for (int i = 0; i < LINE_BUFFER_SIZE; ++i) {
|
||||||
line_buffer[i] = (i % 2) ? 0x0 : 0xff;
|
line_buffer[i] = (i % 2) ? 0x0 : 0xff;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop_c() {
|
||||||
|
for (;;) {
|
||||||
|
const int current_line = line;
|
||||||
|
line_buffer[20] = (current_line > 50 && current_line < 100) ? WHITE : BLACK;
|
||||||
|
if (current_line % 8 == 0) {
|
||||||
|
const uint8_t current_number = frame >> 2;
|
||||||
|
for (uint8_t i = 0; i < 8; ++i) {
|
||||||
|
line_buffer[i] = ((current_number >> i) & 0x1) ? WHITE : BLACK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user