Just spend an hour and was able to finish the UART code I had to leave untested last night. I seem to be able to reliably move data at 115200 baud. Now I take a short break from coding to attaching the GPS so I can start working on the uBlox code.
Fast update from last post. I got ChaN’s FAT32 working and can read and write files at 200kbytes/second. Not too shabby.
With the FAT32 behind me, I set myself the goal of connecting my uBlox LEA-6H module to my ARM processor this weekend. As it turns out, I missed my goal, but I got awfully close. Continue reading
It has been a while since I have posted last on my process towards getting my AVC robot up and running. Part of that was getting busy around the house and at work. Part of the delay was not wanting to stop to post as I was making large strides. Tonight I am taking a short break. Continue reading
For the last few weeks I have been banging my head against the wall trying to get an Atmel SAM7S256 processor up and running. It has taken lots of time, but I think I see the end of the tunnel. Last night was a watershed moment when I got the real time operating system running a single thread. Continue reading
I have put aside the SUNDAR as it is just too cold and cloudy to do any testing. But I have been working fast and furioud on the ARM processor I plan to use for AVC. I have now gotten Yagarto, Eclipse, and OpenOCD to play nice. I still need to learn to get GDB working. In the mean time, I have been writting device drivers and organizing the code into modules. I have gotten stuck on the GDBU UART driver. Till recently I did not realize that the GDBU shared an interrupt with a BUNCH of other peripherals. I plan to use at least one other (the interval timer) so I had to write an interrupt routine to determine the cause of the interrupt and call the appropriate routine. In writing this down, it does not sound like I have accomplised a whole lot, but I can feel the learning curve falling away ahead of me.
As mentioned before I purchased an Olimex AT91SAM7S256 header board over a year ago. Well I got a simple LED blink program working a few weekends ago. This weekend I was very busy and wrote device drivers for the IO, UART, interrupt controller, watchdog timer, power manager, PWM, and programmable interval timer. I have hit a few snags (the UART does not have a hardware FIFO!), but I am making fast progress.
I still have many things left to do including:
- Remaining low level drivers for I2C and SPI
- Integrating with Eclipse
- Integrating with the debugger in Eclipse
- Porting the Micrium ucosII RTOS.
- Starting to write the application to support AVC.
This weekend was bitter cold. With the temperature in the single positive digits (F) I was unwilling to drag my gear outside. But at the same time I needed to run some experiments. So I set myself up in the dinning room and looked out the window at the sun. By the time I got set up, the sun was quickly setting. I was able to get some time under bright conditions, then hazy, then partially obscured, and finally completely obscured by my neighbor’s roof. Continue reading
I took the time to create a YouTube video on the SUNDAR. This gives an overview of the system:
And this is some more detail on the sensor head:
I also found that I could get much better accuracy if I narrowed the slit even more. It is now the width of a playing card. As such, the sun is only visible to the sensor for a very few motor microsteps. I collected data over an hour and found that the standard deviation in heading error was under 1/2 degree. I think I can live with that!
The Arduino’s I have been playing with are nice and fun, but they do not have the horsepower that I would like for my AVC robot. At work I have been using ARM processors and really like them. They are small, fast, and have a million peripherals. So I wanted to take the leap, but some issues help me back.
I have a nearly complete prototype of the sensor at this point. The scanner will find and then track the sun as the car turns. If it losses the sun, it will open up its scan window to get it back. The gyro integrates at over 1kHz and provides clear prompts to the scanner as to how the car has turned so that it can adjust. The sun heading is output over a serial line at about 2Hz. It includes the azimuth and a figure of merit based on how strong the sun signature was found and if the scanner has the sun locked or not. The accuracy is pretty amazing as well. In a lab setting, the variation in angles in about 0.003 degrees. Thats right, much less than a single degree!
The last issue to resolve before I build a working unit for my AVC robot is to test the sensor against the real sun and not my 2 watt LED. I am a bit afraid that the near IR content of the sun may pass through my ND filters and saturate the sensor. But it has been to cold and overcast to get outside to test. This morning was 0 deg F and we expect 5 inches of snow. Possibly tomorrow we may see the sun.
SUNDAR may possibly have been a bad name to give this unit. I tried to setup a Google alert for the word, but was getting thousands of hits. SUNDAR appears to be a popular Indian name. Need to think of a better/different name.