aboutsummaryrefslogtreecommitdiffstats
path: root/examples/vga.cpp
diff options
context:
space:
mode:
authorbnewbold <bnewbold@robocracy.org>2010-06-25 21:46:55 -0400
committerbnewbold <bnewbold@robocracy.org>2010-07-20 15:37:09 -0400
commit480dad829fe7870883d51cb641ce05aa62074424 (patch)
treec5e4b123fd33a2f86426e9bd76222a25e10501a3 /examples/vga.cpp
parentf06fcac502619bc7f6155aa75947dc4340efccd5 (diff)
downloadlibrambutan-480dad829fe7870883d51cb641ce05aa62074424.tar.gz
librambutan-480dad829fe7870883d51cb641ce05aa62074424.zip
awesome vga demos, need vga+systick disabled
Diffstat (limited to 'examples/vga.cpp')
-rw-r--r--examples/vga.cpp262
1 files changed, 0 insertions, 262 deletions
diff --git a/examples/vga.cpp b/examples/vga.cpp
deleted file mode 100644
index c2e61ae..0000000
--- a/examples/vga.cpp
+++ /dev/null
@@ -1,262 +0,0 @@
-
-#include "wirish.h"
-
-/*
-D5 PB6 - TIM4_CH1 I2C1_SCL - - Y
-D6 PA8 - TIM1_CH1 - USART1_CK - Y
-D7 PA9 - TIM1_CH2 - USART1_TX - Y
-D8 PA10 - TIM1_CH3 - USART1_RX - Y
-D9 PB7 - TIM4_CH2 I2C1_SDA - - Y
-*/
-
-//gpio_write_bit(GPIOB_BASE, 6, 1); // VGA_R
-//gpio_write_bit(GPIOB_BASE, 6, 0);
-
-//(GPIOA_BASE)->BSRR = BIT(8);
-//asm volatile("nop");
-//(GPIOA_BASE)->BRR = BIT(8);
-/*
- gpio_write_bit(GPIOB_BASE, 6, 1); // VGA_R
- gpio_write_bit(GPIOB_BASE, 6, 0);
- gpio_write_bit(GPIOA_BASE, 8, 1); // VGA_G
- gpio_write_bit(GPIOA_BASE, 8, 0);
- gpio_write_bit(GPIOA_BASE, 9, 1); // VGA_B
- gpio_write_bit(GPIOA_BASE, 9, 0);
- gpio_write_bit(GPIOA_BASE, 10, 1); // VGA_V
- gpio_write_bit(GPIOA_BASE, 10, 0);
- gpio_write_bit(GPIOB_BASE, 7, 1); // VGA_H
- gpio_write_bit(GPIOB_BASE, 7, 0);
-*/
-
-#define LED_PIN 13
-#define VGA_R 5 // B6
-#define VGA_G 6 // A8
-#define VGA_B 7 // A9
-#define VGA_V 11 // A6
-#define VGA_H 12 // A7
-#define VGA_R_HIGH (GPIOB_BASE)->BSRR = BIT(6)
-#define VGA_R_LOW (GPIOB_BASE)->BRR = BIT(6)
-#define VGA_G_HIGH (GPIOA_BASE)->BSRR = BIT(8)
-#define VGA_G_LOW (GPIOA_BASE)->BRR = BIT(8)
-#define VGA_B_HIGH (GPIOA_BASE)->BSRR = BIT(9)
-#define VGA_B_LOW (GPIOA_BASE)->BRR = BIT(9)
-#define VGA_V_HIGH (GPIOA_BASE)->BSRR = BIT(6)
-#define VGA_V_LOW (GPIOA_BASE)->BRR = BIT(6)
-#define VGA_H_HIGH (GPIOA_BASE)->BSRR = BIT(7)
-#define VGA_H_LOW (GPIOA_BASE)->BRR = BIT(7)
-
-void isr_porch(void);
-void isr_start(void);
-void isr_stop(void);
-void isr_update(void);
-
-void setup()
-{
- pinMode(LED_PIN, OUTPUT);
- digitalWrite(LED_PIN, 1);
- pinMode(VGA_R, OUTPUT);
- pinMode(VGA_G, OUTPUT);
- pinMode(VGA_B, OUTPUT);
- pinMode(VGA_V, OUTPUT);
- pinMode(VGA_H, OUTPUT);
-
- /* Send a message out USART2 */
- Serial2.begin(9600);
- Serial2.println("Video time...");
-
-
- digitalWrite(VGA_R, 0);
- digitalWrite(VGA_G, 0);
- digitalWrite(VGA_B, 0);
- digitalWrite(VGA_H,1);
- digitalWrite(VGA_V,1);
-
- timer_set_prescaler(4,0);
- timer_set_mode(4, 1, TIMER_OUTPUTCOMPARE);
- timer_set_mode(4, 2, TIMER_OUTPUTCOMPARE);
- timer_set_mode(4, 3, TIMER_OUTPUTCOMPARE);
- timer_set_mode(4, 4, TIMER_OUTPUTCOMPARE);
- timer_set_reload(4, 2287);
- timer_set_compare_value(4,1,200);
- timer_set_compare_value(4,2,300);
- timer_set_compare_value(4,3,2170); // 2219 max...
- timer_set_compare_value(4,4,1);
- timer_attach_interrupt(4,1,isr_porch);
- timer_attach_interrupt(4,2,isr_start);
- timer_attach_interrupt(4,3,isr_stop);
- timer_attach_interrupt(4,4,isr_update);
-
- timer_set_count(4,0);
-}
-
-int toggle = 0;
-uint16 x = 0;
-uint16 y = 0;
-uint8 v_active = 1;
-GPIO_Port *portb = GPIOB_BASE;
-
-void isr_porch(void) {
- VGA_H_HIGH;
- y++;
- if(y>=523) {
- y=1;
- v_active = 1;
- return;
- }
- if(y>=492) {
- VGA_V_HIGH;
- return;
- }
- if(y>=490) {
- VGA_V_LOW;
- return;
- }
- if(y>=479) { // 479
- v_active = 0;
- return;
- }
-}
-
-uint8 logo[18][16] = {
- {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,},
- {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,},
- {0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,},
- {0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,},
- {0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,},
- {0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,},
- {0,0,1,0,0,1,0,1,0,1,0,0,1,0,0,0,},
- {0,1,0,0,0,0,1,1,1,0,0,0,0,1,0,0,},
- {0,1,0,1,0,0,0,1,0,0,0,1,0,1,0,0,},
- {1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,},
- {1,0,0,0,0,1,0,1,0,1,0,0,0,0,1,0,},
- {1,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,},
- {0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,},
- {0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,},
- {0,0,0,0,1,1,1,0,1,1,1,0,0,0,0,0,},
- {0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,},
- {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,},
- {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, };
-
-void isr_start(void) {
- if(!v_active) { return; }
- VGA_R_HIGH;
- //delayMicroseconds(2);
- //gpio_write_bit(GPIOA_BASE, 8, 1); // VGA_G
- for(x=0; x<32; x++) {
- if(logo[y/28][x/2]) {
- VGA_G_HIGH;
- VGA_B_HIGH;
- } else {
- VGA_G_LOW;
- VGA_B_LOW;
- }
- }
-
-}
-void isr_stop(void) {
- if(!v_active) { return; }
- VGA_R_LOW;
- VGA_G_LOW;
- VGA_B_LOW;
-}
-void isr_update(void) {
- VGA_H_LOW;
-}
-
-void loop() {
- /*
- toggle ^= 1;
- digitalWrite(LED_PIN, toggle);
- delay(100);
- Serial2.println("HIHIHI!");
- */
- //for(y=0; y<480; y++) {
- /*
- for(y=0; y<160; y++) {
- VGA_R_LOW;
- VGA_H_LOW;
- delayMicroseconds(3);
- VGA_H_HIGH;
- VGA_R_HIGH;
- delayMicroseconds(8);
- VGA_G_HIGH;
- delayMicroseconds(10);
- VGA_B_HIGH;
- delayMicroseconds(10);
- VGA_R_LOW;
- VGA_B_LOW;
- VGA_G_LOW;
- //VGA_G_HIGH;
- }
- for(y=0; y<160; y++) {
- VGA_R_LOW;
- VGA_H_LOW;
- delayMicroseconds(3);
- VGA_H_HIGH;
- VGA_G_HIGH;
- delayMicroseconds(8);
- VGA_R_HIGH;
- delayMicroseconds(10);
- VGA_B_HIGH;
- delayMicroseconds(10);
- VGA_R_LOW;
- VGA_B_LOW;
- VGA_G_LOW;
- //VGA_G_HIGH;
- }
- for(y=0; y<160; y++) {
- VGA_R_LOW;
- VGA_H_LOW;
- delayMicroseconds(3);
- VGA_H_HIGH;
- VGA_B_HIGH;
- delayMicroseconds(8);
- VGA_G_HIGH;
- delayMicroseconds(10);
- VGA_R_HIGH;
- delayMicroseconds(10);
- VGA_R_LOW;
- VGA_B_LOW;
- VGA_G_LOW;
- //VGA_G_HIGH;
- }
- for(y=0; y<11; y++) {
- VGA_R_LOW;
- VGA_H_LOW;
- delayMicroseconds(3);
- VGA_R_LOW;
- VGA_H_HIGH;
- delayMicroseconds(28);
- }
- VGA_V_LOW;
- for(y=0; y<2; y++) {
- VGA_R_LOW;
- VGA_H_LOW;
- delayMicroseconds(3);
- VGA_R_LOW;
- VGA_H_HIGH;
- delayMicroseconds(28);
- }
- VGA_V_HIGH;
- for(y=0; y<30; y++) {
- VGA_R_LOW;
- VGA_H_LOW;
- delayMicroseconds(3);
- VGA_R_LOW;
- VGA_H_HIGH;
- delayMicroseconds(28);
- }
- */
-
-}
-
-
-int main(void) {
- init();
- setup();
-
- while (1) {
- loop();
- }
- return 0;
-}