Forum Replies Created
-
AuthorPosts
-
MichaelKeymaster
The jumper and switch settings are documented on the product page:
http://nootropicdesign.com/ve/For overlay, the SYNC SELECT jumper should be set to V INPUT
and the OUTPUT SELECT switch should be set to OVERLAY.Seems like a synchronization issue. What are you using as a video input source? A video camera?
MichaelKeymasterGlad you are having success with a different camera. It does seem strange that the camera you references can output PAL or NTSC, yet there’s no switch to change the mode. Have you tried using PAL instead of NTSC in the overlay code? Just change NTSC to PAL in the TVout initialization.
I have changed the forum parameters to allow attachments, so you can try again. You are also free to email images to me.
I have devised a way to make a dark gray background behind text (as long as the dark gray block spans the entire line). If this would help with your contrast issues, let me know. It requires a 74HC4066 analog switch chip (about 35 cents) and some code modifications. I will be blogging about this soon but can get you started if you are interested.
MichaelKeymasterWhat country are you in? That is, do you have a PAL television? If so, the TVout library needs to be initialized with PAL instead of NTSC.
So, the most basic test would be to set the sync select jumper to the D9 position, and the output select switch to the “sync only” position. Turn the R4 pot (small one) to the lowest (counterclockwise) setting. Then load the DemoNTSC (or DemoPAL if you are not in North America) and run it.
You aren’t using an Arduino Mega are you? VE is not compatible with Arduino Mega.
Assembly things to check:
– ensure you installed the diodes with the correct polarity (direction)
– ensure the LM1881 chip is oriented correctlyI’m happy to look at any photographs or videos you may be able to provide.
MichaelKeymasterSounds like you’re making progress. Memory issues are frustrating because they can be nondeterministic and hard to debug. You will save space by storing your string literals in PROGMEM, so I encourage you to try that again. To access the string, you need to do it a bit differently than normal by using the function pgm_read_word.
Lots of explanation here: http://www.arduino.cc/en/Reference/PROGMEM
It makes most sense when your strings are longer than a few characters. If the string is short, then you don’t really save anything because you are using memory to store the pointers to the strings….
MichaelKeymasterThe VE does NOT work on an Arduino Mega!
MichaelKeymasterPerhaps that’s because I don’t know how to change “tv.set_hbi_hook(pserial.begin(4800));” to “tv.set_hbi_hook(Serial.begin(4800));”. set_hbi_hook is looking for a function, not a serial commands. I don’t understand what’s happening at that low level.
pserial is a polling version of serial communication. We tell the TVout library to invoke this polling library during the horizontal blanking interval of each line. That’s what the set_hbi_hook does: it tells TVout to invoke this hook function during horizontal blanking interval (HBI). If using ordinary Serial, you don’t need to do this because the Serial library will run an interrupt routine when a character is received. Interrupts interfere with the video processing. The TVout library (which I did not write) uses timer interrupts to get the perfect timing of the video lines. If other interrupts are occuring, the timing is messed up. That’s why you can’t use Serial with TVout. You use pserial as a polling substitute. Hope that helps with the understanding.
I just open up the serial monitor, that’s all.
But that means that the Serial monitor program running on your computer and the GPS are both connected to the single UART on the ATmega328. That won’t work reliably (I can’t believe it works at all!). It’s like using one phone line for two conversations. That’s why NewSoftSerial library was invented — so you can use two serial devices. I actually fried an ATmega328 by accidentally opening a Serial monitor when I had a GPS communicating with the UART. (It got very hot!)
And is your GPS module only outputting RMC and GGA sentences or is it by default outputting all? I really matters. When you have the VE shield connected, your ATmega328 processor is VERY busy processing interrupts and generating video and doesn’t have much time to deal with the GPS. Also, your program above is doing a ton of I/O and that interrupt-driven I/O is going to cause the video generation to not run the way it should. It won’t run fast enough to stay in sync with the TV.
MichaelKeymasterAnd I’m still generally confused about how you are using the Arduino’s single UART to communicate with two devices at the same time. I would not expect that to work. I suggest you use the tv as debug output instead of the serial monitor. Just use tv.println to watch your debug output on the screen.
Isn’t your gps module getting confused by all debug info you are writing into it?
MichaelKeymasterThat’s very good to hear, and your new Digit Shield will ship on the 5th!
MichaelKeymasterOk, here are some thoughts:
The memory numbers reported at upload time are for the flash memory and not SRAM.
The routine you used for determining free mem is better than the malloc version I had used. I saw the new approach on dangerousprototypes.com recently.
A value of 511 by my routine means you’ve blown the stack (in my experience)
The large value (1400+) from the new routine is wrong, too. A correct Val is <200.
If your code works well enough with Serial, then that’s great. The serial interrupts may not disrupt the video much.
pserial is primitive and has a small buffer (64?) so if you don’t read data quickly and frequently, maybe it has problems.
MichaelKeymasterAlso, have you adjusted the R4 potentiometer? It should be at a very low setting.
I’ll be able to support you easier next week. I’m on vacation in London and am typing on an iPod which is maddening…
MichaelKeymasterThe demontsc sketch is not for overlay. It came with the original tvout.
What is your sync select jumper set to? It should be on “input”.
I don’t know why you are aren’t this doubling. Are you in an NTSC or pal country? If pal, then you need to modify the code to init tvout with pal.
Ok, I’m very confused about why you are trying to create a folder named “Sketch”.
The folder that has your projects is called you sketchbook folder. It ISN’T named that. That’s just what we call it.
In this folder, at the same level as your projects, create folder “libraries”. Dont use the Arduino IDE to create it– just use Finder.
Install you libraries here.MichaelKeymasterI’m glad you’ve made progress. You can’t use the serial monitor for debugging if the gps is connected to the uart. The uart can only communicate with one device. To debug, why not just print to the tv screen?
Tv.println()Ok, here’s the deal with the gps overlay sketch: there’s barely enough SRAM for it to work, and any mods you make are likely to push it over the limit, which causes the arduino to freeze up or put funny lines of pixels on the screen. I’m not sure you’ll be able to do much more than the sketch I provided. You’re doing super cool stuff and I hope your memory usage can be trimmed down. String literals are expensive so consider storing them in flash memory with PROGMEM (see arduino site).
I found it critical to limit gps output to rmc and GGA. Or it didn’t work.
I’ll look at your code more next week but I’m on vacation in London now and only have an iPod and typing is tedious…
MichaelKeymasterCan you describe the problem in detail?
MichaelKeymasterI don’t think it will display anything until some data is received.
Did you properly configure the em406 to only output RMC and GGA sentences?
MichaelKeymasterI don’t know what the problem is. Please know that I use a Mac for all development!
Install libraries in your sketchbook, not the arduino app’s package contents. This is a folder named “libraries” in your sketchbook folder. Only have ONE version of tvout installed…the VE version of course.
Don’t mess with importing the library in the IDE …the demo sketches will compile as-is. In other words, the library is already “imported” which is the Arduino terminology for adding the #include statement.
I know there’s nothing wrong with the library because hundreds of people are using it…
-
AuthorPosts