Pages: 1 2 3 [4] 5   Go Down
Author Topic: Code: VGA RGB Signal  (Read 15277 times)
0 Members and 1 Guest are viewing this topic.
Japan
Offline Offline
Jr. Member
**
Karma: 16
Posts: 79
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I uploaded some pictures foe wiring.
https://picasaweb.google.com/117534855759200010314/VGA11

Best Regards,
Nabe
Logged

Brazil
Offline Offline
God Member
*****
Karma: 3
Posts: 616
Wusik Dot Com
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Thank you so much!  smiley-cool

Wk
Logged


Brooklyn, NY
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Great thread!

I am looking for a simple ready made solution for generating a 640x480 or 800x600 VGA synch signals from my arduino setup.

I don't need to generate RGB signals, only the sync signals.

I have a Duemilanove board that I am working with.

Can you recommend any programs to start working with (links)?  Anything that can generate a solid synch signal would be OK.  I'm interested in gutting the code if necessary.

Thanks!

BTW - some work that I have been doing with analog VGA synthesis can be found here: http://youtu.be/r1FtvA-pXFg I'm using audio feedback to drive the RGB lines on a VGA signal.  The only thing I'm missing is a good compact and integrated synch generator.
Logged

Japan
Offline Offline
Jr. Member
**
Karma: 16
Posts: 79
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi pixelform!
Thanks for your comment.
Recently, I enjyoy with RC plane every weekend.
So I have not refined code an not add comment in English yet.
I uploaded the new video and code.
It's currently - temporary version.


code
http://code.google.com/p/arduino-vgaout/downloads/list

Quote
I have a Duemilanove board that I am working with.
I have used a Duemilanove board for NTSC or RGB signal generate.

Quote
I don't need to generate RGB signals, only the sync signals.
H-sync signal is made with timer1
V-sync signal is made by software ( in interrupt routine )

Quote
Can you recommend any programs to start working with (links)?  Anything that can generate a solid synch signal would be OK.  I'm interested in gutting the code if necessary.

Please check following  sources. You can downlod the code from Google code.

defTimer.h  timer1        - set data ( sorry include Japanese comment )
SYS_Ini.cpp : IniTimer( ) - initialize timer1
INT_ICF1.cpp                - interrupt function pointer table
INT_ICF1_RGB_TEST.cpp - display test mode  P_VSYNC_OFF/P_VSYNC_ON <- V-sync generate

Quote
BTW - some work that I have been doing with analog VGA synthesis can be found here: http://youtu.be/r1FtvA-pXFg I'm using audio feedback to drive the RGB lines on a VGA signal.  The only thing I'm missing is a good compact and integrated synch generator.

Nice ! and I want to try.

Best regards

Nabe
« Last Edit: January 07, 2012, 10:55:18 am by Nabe_RMC » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I HATE the fact I'm resurrecting an old post... but this project is too damn interest to let it forgotten xD.
Any news on the development? I'd thank if someone had the actual wiring diagrams. I have a Arduino Mega 2560, , but I think I could change things to make it work in this one too,. If someone has anything to help me out, I'd be really thankful.
Logged

Europe. Czech
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I'd like to say thanks to Nabe_RMC for sharing his code.

Connection of VGA to Mega 2560 for Nabe_RMC code I found

Code:
digital pin 32 ---vvv---|       1k
digital pin 33 ---vvv---|       470
                                 |______________ VGA pin 1  (RED)


digital pin 34 ---vvv---|       1k
digital pin 35 ---vvv---|       470
                                 |_____________ VGA pin 2  (GREEN)



digital pin 36 ---vvv---|       1k
digital pin 37 ---vvv---|       470
                                 ______________ VGA pin 3  (RED)


                        470
digital pin 53 ---vvv--- >VGA pin 14
 
                        470
PWM  pin 11  ---vvv--- >VGA pin 13


This works without any change of code, however, I stil have sync problem. I just poked file defTimer.h ... By default settings sync values for 640x480VGA aporximately match - video -see on frequency counter http://youtu.be/2NdowIZpLMg , but picture doesn't sync on my two different LCD panels.
default settings are
Code:
#define CRT_OCR1A_HS    61          /* (1/16MHz)×61 = 3.8125us             */
#define CRT_OCR1A_VS    (508- 61)
#define CRT_ICR1        508  

by setting timers to
Code:
#define CRT_OCR1A_HS    61     /* (1/16MHz)×61 = 3.8125us             */
#define CRT_OCR1A_VS    (615- 61)
#define CRT_ICR1         615     /* (1/16MHz) × (1017+1) = 31.75us     */
image does sync... is still  little bit blurry, sync signal is out of range, but synced. I found this values experimentaly, and I am aware these are nonsenses - but works. -video and frequency counter readings here http://youtu.be/d7OAr8abiMM (White rectangle in the middle of the screen is LCD's complaint about "OUT OF RANGE"
As a totaly newbie I get Nabe_RMCs notes in code, however i didn't get whole display routine timing ao I am hopeless where to change other display loop parameters. Do you have any suggestions ? Thanks.

Hope I didn't broke rules of this forum, this is my very first post here.
« Last Edit: February 10, 2013, 02:10:13 pm by patrik_msc » Logged

Japan
Offline Offline
Jr. Member
**
Karma: 16
Posts: 79
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi! patrik_msc, I'm Nabe.
I watched your work. Nice try and thanks for using that code.

I was referring to these sites for VGA signal.
http://www.epanorama.net/documents/pc/vga_timing.html
http://tinyvga.com/vga-timing

I cheked again.But I couldn't find around horizontal frequency - 26kHz.
So, I searched display spec and found thie (Japanese) site.
http://www.sharp.co.jp/lcd-display/crisia/lineup/ll-m17w1/connect.html
There seems to be displays horizontal frequency - 24.8kHz, vertical frequency - 56.4Hz.
If this timing, then please change the data and try.

[ defTimer.h ]
Code:
#define CRT_ICR1    645     /* H-sync:24.8kHz  (1/16MHz) *(644+1) = 40.31us */

[ CRTdef.h ]

Code:
#define H_NUM_FRM_VGA_A         64
#define H_NUM_TXT_ROW           16
#define V_SYNC_START_VGA_A      0
#define V_SYNC_END_VGA_A        2
#define V_BLANK_VGA_A           ( V_SYNC_END_VGA_A + 28 )
#define H_LINE_FRM_VGA_A        ( V_BLANK_VGA_A + H_NUM_FRM_VGA_A *6 )
#define H_LINE_FRM_VGA_NUCO     ( V_BLANK_VGA_A + H_NUM_FRM_VGA_A *6 )
#define H_LINE_TXT_END          ( V_BLANK_VGA_A + H_NUM_TXT_ROW *20 )
#define H_LINE_END_VGA_A        440

#define V_SYNC_START_DRAW       0
#define V_SYNC_END_DRAW         2
#define V_BLANK_DRAW            30
#define H_LINE_FRM_DRAW         414
#define H_LINE_END_DRAW         440

And please replace "VGA_LINE_TBL.h" to "VGA_LINE_56400_TBL.h"
I attached the file. So please download and return the file name to "VGA_LINE_TBL.h".
I 'm afraid that front and back porch is too short.
To use your display it may be necessary to reduce the line.
I 'm sorry I don't have 24.8kHz display. So, I cannot try that data.

Last year I had enjoyed another hobby. http://youtu.be/C3oNNU6s63Y  smiley
But I came back here.
I decided to write some fuctions for VGAout.
So I made new thread. Please check this.
http://arduino.cc/forum/index.php/topic,143827.0.html
This week end I will add some functions and up next example.

Code:
#define CRT_ICR1         615     /* (1/16MHz) × (1017+1) = 31.75us      */
I 'm sorry that comment is wrong.
"(1/16MHz) × (1017+1) = 63.625us" this data is for NTSC signal.
like this
http://homepage3.nifty.com/two_legs/neo/project/Arduino/proj_Arduino.htm
http://homepage3.nifty.com/two_legs/neo/project/Arduino_LCD/proj_Arduino_LCD.htm

Thanks and enjoy with Arduino!

Nabe

* VGA_LINE_56400_TBL.h (2.58 KB - downloaded 20 times.)
Logged

Japan
Offline Offline
Jr. Member
**
Karma: 16
Posts: 79
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi! patrik_msc,

I changed the data and checked.

[Display on my monitor]
https://picasaweb.google.com/117534855759200010314/VGA11#5845566926330086018
[Horizontal synchronization signal]
https://picasaweb.google.com/117534855759200010314/VGA11#5845566981056715602
[Vertical synchronization signal]
https://picasaweb.google.com/117534855759200010314/VGA11#5845566995481222610

Sync signals are no problem. I think so.
And I think your monitor is not 24.8kH - 56Hz.
Do you have any information about your monitor?

I hope that you try until what you wnat to do.

Thanks!
Logged

Europe. Czech
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi NABE,
I sent you PM yesterday ... there is my LCD datasheet, and video of previous  updated code ... Please check your personal messages in arduino.cc user panel

One of my two monitors is NEC accusync lcd72vm, the second one is DELL 1905FP.

I agree with you, sync itself is not problem, sync signal is generated correctly, but RGB signals doesn't fit to sync in my (dumb) opinion. Former sync frequency was OK.

Thank you for your work

 
Logged

Japan
Offline Offline
Jr. Member
**
Karma: 16
Posts: 79
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi patrik_msc,
I received the information of your monitor.
And I found this manual ( in Japanese ).
http://www.support.nec-display.com/dl_service/data/display_j/manual/lcd52_72_92vm_m.pdf
The display supports this.( page 18 )
640 x 480 Horizontal frequency - 31.5kHz, Vertical frequency - 60Hz

The horizontal sync signal is made of the timer ( hardware ).
The vertical sync signal (PB_0) is made in software.
Code:
#define P_VSYNC_ON      asm volatile("sbi 0x05,0"::)    /* PORTB.0          */
#define P_VSYNC_OFF     asm volatile("cbi 0x05,0"::)
There is no difference at ATmega2560 and ATmega328P.
I think so.
Mystery...

You had checked horizontal sync signal yet.
Can you check vertical sync signal out?
Logged

Europe. Czech
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi NABE,
You rocks!
I got some blank atmega328PU chips in my drawer... So I will burn duemilanove bootloader and try to make some breadboard ardiuno with them and then test your original unchanged code from code.google.com... , so we can definitely sort that mysterium/compatibility issue out. If there will be some spare time tomorrow I'm gonna to measure frequencies for you too.
Thanks
Logged

Japan
Offline Offline
Jr. Member
**
Karma: 16
Posts: 79
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi patrik_msc,
There is one thing that I want to confirm.
Connection of ground line okay?
I connected in the following.
VGA connector Pin 5,6,7,8,10 ->  Arduino Ground
http://en.wikipedia.org/wiki/VGA_connector
Oh! the schematic is wrong!
https://picasaweb.google.com/117534855759200010314/VGA11#5846292272292453042
My cable - Pin 9 - Non    smiley-confuse
https://picasaweb.google.com/117534855759200010314/VGA11#5846301913748295314

Yes! That's my hobby.
If you do not have a deadline,
It's no need to rush?
We will enjoy with Arduino.

Thanks!

Logged

Europe. Czech
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi Nabe_RMC,
I just hand crafted arduino duemilanove and tested your latest code. It works just right of the box ! I tried to ground/unground pin 9 of VGA connector with duemilanove - no difference at all. Maybe I'll found my test monitor faulty :-)  I uploaded new video on YT here http://www.youtube.com/watch?v=Tfh8p9QqYuo&feature=youtu.be.  You know, as Europeans, we are race of fire by destiny, so we are in the rush all the time.
When I'll find any spare free time, i try to replicate the same result with mega 2560. I really apreciate your development and support. Have a nice day !
Logged

Japan
Offline Offline
Jr. Member
**
Karma: 16
Posts: 79
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi patrik_msc,
I watched your new video on Youtube.Thank you for informing the result immediately.I'm glad to know the good result.
I cheked a manual of MEGA2560 a little.Registers address for port B seems to be the same.So, It will go well about MEGA2560.
Mega2560 has many ports. So, 3bit,3bit,2bit - 256 colors are available. like this.


> You know, as Europeans, we are race of fire by destiny, so we are in the rush all the time.
In Japan, It is also the same. So, we must learn, study more hard.....

If you have any questions or requests, please write this forum or send me E-mail.
I'm so glad to have opportunities to read and to write in English.
I need to learn more English.

I hope you are always happy!



 
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

How can i make font size small from 64X64 to 8X12????
Logged

Pages: 1 2 3 [4] 5   Go Up
Jump to: