From: Kai H. K. <Kai...@st...> - 2008-03-27 16:17:10
|
Hi Guys, thank you for the last very quick and comprehensive response. This helped me a lot and encouraged me to finally place the order. Since I wish to developpe an almost realtime application to run on the robostix I considered the ATmega128 Datasheet as must to read. Since I have finished this today, I initially have some questions concerning the application of the Atmel on the Robostix. I'm sorry but I did not succeed in finding any clues on the buildroot wiki: By the way, how can I register in the wiki ? - as I'm making the first experiences on this material I probably get some time later on to the point I might find some information not already present in the wiki so I would be happy to provide this myself. Concerning the Robostix: In the Datasheet on page 242 - Section ADC Multiplexer Selection Register ADMUX which configuration of REFS1, REFS0 is preferable in the case of the robostix. I tried to seek out how the lines AVCC, AREF, and AGND are attached on the robostix but I could not find any suitable information about - is it perhaps applied, like exposed in Figure 114? What should I do else to obtain a possible analog digital conversion between 0 and 5V? What is the default clock speed of the Atmega128 on the Robostix? As I saw in the wiki the first thing to do is to set the FUSES concerning clocking to external crystal oscillator (DataSheet page 39, Figure 19). Next I have to programme the CKOPT FUSE to raise the possible clocking frequency. But what will this final frequency turn out to be ? - 16 MHz or less? On pictures of the board I could see some condensators seated nearby the ATmel with a capacity of 22pF, but I could not detect a resonator or anything else. In the case I try to do realtime programming in C (whether possible or not) are there any possibilities to judge about CPU cycle consumption of the provided C - code or do I need to poke around in the hex after compilation to seek out how much time I will probably need to accomplish ? My problem is that I will have a task scheme likely to turn out as followes: gumstix ----- <<I>> (serial transceiver) ||| I2C ___________ RC - Receiver ----> | Robostix | ----> Servos ------------- ||| USART acceleration unit CPU - ATmega128 |-frame syncronised to RC receiver----------------|------------------------> |* incoming PWM - signal frame | | *incoming PWM ... | USART,I2C data transfer ||calculations.... | | USART, I2C data... miscellaneous... Counter 1/3 |-counter frame for PWM signal output ----------------------|-------------> | update puffered counter compare values | ___________________________________________----------------___________ _________________________________________------------------___________ _____________________________________________-------------___________ .... Tasks in |...| should be finished in their initial frame. My main problem is that in most cases I will need to work with interrupts and therefor I'm not quite sure whether the CPU with a given frequency would be theoretically capable to pass all the necessary instructions in time. In case their are any documents available online or any other hints - please let me know. Esspecially I would be interested in CPU cycle needed to treat requested interrupts on initialization and termination. As PWM signals coming out of a Radio Receiver in a strict order I thought about taking the rising edge of the first impulse as clock signal for a counter to get on the one hand the possibility to syncronise to the receiver and on the other hand to be capable to skip a defined number of frames (counter compare match) to be able to do something else in the meantime. What do you think about this idea. Another big point is still the communication between the robostix (TWI) and the gumstix (I2C). My first big question, would be whether these two designations of data transfer protocols are compatible to talk to each other? As well as the TWI interface on the ATmel is well documented I'm having problems to get the same global overview on the gumstix side. There are some examples but I have not had the chance to get behind the facts....is their a solution to exploit the already existing i2c communication modules in a way that I can write a daemon to take over the i2c bus and communicate with the instances connected to it? - in case there is, in which build environment (buildroot or open embedded) are these modules available and are their any docs explaining howto exploit these modules? In case I need to write my own kernel modules to perform a SR, ST communication, are their any docs I should have read to accomplish on the gumstix? Besides the fact that the open embedded wiki is almost empty are any other realiable docs explaining how things are going in OE? - or should I better start in buildroot and later try to port things to OE? as I have never worked neither with buildroot nor with OE, I'm lacking a bit the arguments to decide whether one or the other. When I flash from buildroot to OE do I need to pay attention to anything particular or may I just follow the recepies in the wiki? Thanks in advance for any efforts this may cause and thank you as well for the last quick response which really helped me a lot. Best regards Henning Koch |
From: Dave H. <dhy...@gm...> - 2008-03-27 17:09:37
|
Hi Henning, > thank you for the last very quick and comprehensive response. This helped me a > lot and encouraged me to finally place the order. > Since I wish to developpe an almost realtime application to run on the > robostix I considered the ATmega128 Datasheet as must to read. Since I have > finished this today, I initially have some questions concerning the > application of the Atmel on the Robostix. I'm sorry but I did not succeed in > finding any clues on the buildroot wiki: > By the way, how can I register in the wiki ? - as I'm making the first > experiences on this material I probably get some time later on to the point I > might find some information not already present in the wiki so I would be > happy to provide this myself. There are actually 2 wikis. On the first one: <http://docswiki.gumstix.com/Main_Page> There is a "Log in/create account" item in the top right corner. The second (newer) wiki is similar: <http://gumstix.net/wiki/index.php?title=Main_Page> When you go to one of the wiki pages, > Concerning the Robostix: > In the Datasheet on page 242 - Section ADC Multiplexer Selection Register > ADMUX > which configuration of REFS1, REFS0 is preferable in the case of the robostix. > I tried to seek out how the lines AVCC, AREF, and AGND are attached on the > robostix but I could not find any suitable information about - is it perhaps > applied, like exposed in Figure 114? You should check the schematics for the particular revision of board that you have. On the newer boards, AREF is not connected to anything. I normally use the REFS set to pick the AVCC (REFS1=0, REFS0=1) > What should I do else to obtain a possible analog digital conversion between 0 > and 5V? See the sample code in the robostix tree. To grab the entire tree do: cd gumstix-buildroot cd .. svn co http://svn.gumstix.com/gumstix-buildroot/branches/projects/robostix robostix Then look in robostix/Common/a2d_8.c or a2d_10.c > What is the default clock speed of the Atmega128 on the Robostix? By default, the ATMega128 is shipped from the factory running at 1 MHz (using the internal oscillator). There is a 16 MHz crystal on the board, so if the fuses get set properly, it will run at 16 MHz. > As I saw in > the wiki the first thing to do is to set the FUSES concerning clocking to > external crystal oscillator (DataSheet page 39, Figure 19). Next I have to > programme the CKOPT FUSE to raise the possible clocking frequency. But what > will this final frequency turn out to be ? - 16 MHz or less? On pictures of > the board I could see some condensators seated nearby the ATmel with a > capacity of 22pF, but I could not detect a resonator or anything else. > > In the case I try to do realtime programming in C (whether possible or not) > are there any possibilities to judge about CPU cycle consumption of the > provided C - code or do I need to poke around in the hex after compilation to > seek out how much time I will probably need to accomplish ? You can get assembler generated from the C, but personally, I prefer to profile stuff using a timer. Set one of the 16-bit timers up with a divide by 1 prescalar. Then the timer will increment by one count for each clock cycle. You can use that to profile sections of code up to 65,536 cycles. ...snip... > Tasks in |...| should be finished in their initial frame. My main problem is > that in most cases I will need to work with interrupts and therefor I'm not > quite sure whether the CPU with a given frequency would be theoretically > capable to pass all the necessary instructions in time. In case their are any > documents available online or any other hints - please let me know. > Esspecially I would be interested in CPU cycle needed to treat requested > interrupts on initialization and termination. The instruction set summary on page 364 of the datasheet shows how many cycles each instruction takes. > As PWM signals coming out of a Radio Receiver in a strict order I thought > about taking the rising edge of the first impulse as clock signal for a > counter to get on the one hand the possibility to syncronise to the receiver > and on the other hand to be capable to skip a defined number of frames > (counter compare match) to be able to do something else in the meantime. What > do you think about this idea. What I did for a situation like this was to find a single signal that I could connect up to the robostix. See this page: <http://docswiki.gumstix.com/Robostix_RC_input> > Another big point is still the communication between the robostix (TWI) and > the gumstix (I2C). My first big question, would be whether these two > designations of data transfer protocols are compatible to talk to each other? Yep. See the following pages: <http://docswiki.gumstix.com/Robostix_i2c_bootloader> <http://docswiki.gumstix.com/Robostix_i2c_load> <http://docswiki.gumstix.com/Robostix_i2c_io> <http://docswiki.gumstix.com/I2CQuickStart> Some of the stuff on the last page is old, so just use it as a guide. > As well as the TWI interface on the ATmel is well documented I'm having > problems to get the same global overview on the gumstix side. There are some > examples but I have not had the chance to get behind the facts....is their a > solution to exploit the already existing i2c communication modules in a way > that I can write a daemon to take over the i2c bus and communicate with the > instances connected to it? - in case there is, in which build environment > (buildroot or open embedded) are these modules available and are their any > docs explaining howto exploit these modules? In case I need to write my own > kernel modules to perform a SR, ST communication, are their any docs I should > have read to accomplish on the gumstix? The above pages have i2c code for running on the gumstix, including some general purpose libraries that I wrote for using the i2c communications. > Besides the fact that the open embedded wiki is almost empty are any other > realiable docs explaining how things are going in OE? - or should I better > start in buildroot and later try to port things to OE? as I have never worked > neither with buildroot nor with OE, I'm lacking a bit the arguments to decide > whether one or the other. > When I flash from buildroot to OE do I need to pay attention to anything > particular or may I just follow the recepies in the wiki? I haven't had any chance to really play around with OE, but there is a getting started section in the new wiki. -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |