Go Down

Topic: How do I use the clock output on atmega328p? (Read 9653 times) previous topic - next topic



I'm trying to interface a thermopile sensor with my arduino duemilanove with atmega328p 16Mhz.
The sensor is working with an odd version of SPI and I need to feed it with 1Mhz clock.
I use the arduino-0022 environment.
I defined f_cpu 1000000UL in the software.
I connected the clock pin to the arduino pin no. 8.
I changed the low fuse in the boards.txt to 0x80.
When sniffing the pin with arduinoscope I can see voltage running trough it but so does any other pin I sniff (which wasn't defined by pinMode).

The Atmega328p datasheet say that:

the normal operation of I/O
pin will be overridden when the fuse is programmed

but when I call pinMode(8, OUTPUT), the arduinoscope show me that the voltage in pin8 is 0.
What am I doing wrong?

Hope that there is someone out there that can help a frustrated man...



changing th fuse setting in boards.txt wont do anything until you go to bootload another chip


I burned the program to the chip after the changes if that what you mean. If not, please explain.


You almost certainly don't want to change the fuses - the SPI clock isn't a continuous clock, it sends bursts of 8 pulses only.  (Though you did say it was an odd SPI I suppose...)

It's possible to set the SPI clock to 8, 4, 2, 1MHz, 500, 250, 125kHz (Assuming a 16MHz system clock).  The fastest SPI rate is half the system clock.

What is the sensor? - someone may well have interfaced to it before on here...

And the fuses are not programmed when a sketch is downloaded, only the application area of flash memory is overwritten.  An ISP programmer is needed to change fuses or bootloader area.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]


This sensor is called HTPA from heimann, I doubt it if anyone tried to interface it but I will be glad to meet him  ;)
The sensor need to be feed with the chip Master clock as well as the SPI clock (two different legs), that is why I need it.
Is there another way to get a 1Mhz clock to this sensor?
About the fuses, I thought that the arduino doesn't need a programmer like the STK does, I just use my AVRKSP II.


Coding Badly

Each timer is able to directly manipulate up to two output pins.  I suggest you configure Timer 1 or Timer 2 to toggle an output pin at 1 MHz.  The datasheet and this should help...



I think you might mean one of this series?  http://www.heimannsensor.com/Heimann_Sensor_complete_Datasheet_HTPA_Rev6-1.pdf

That indeed requires an external 1MHz clock in addition to  SPI clock and data.  I think the CONT input controls whether the device acts as SPI slave or master and there's only one data pin for both modes - not really SPI!  In master mode it clocks at half the master clock so I think its safe to assume it can handle 500kHz SPI clock on SCLK_IO

BTW here's code that should set pin 3 to 1MHz - it uses timer2 and the normal analogWrite function for pins 3 and 11 won't be available if you do this.

Note that the pin and timer assignments are different on the Arduino Mega - this code is for standard Arduino only:
Code: [Select]

#define PWMout 3

void setup ()
 TCCR2A = 0xB3 ; // fast PWM with programmed TOP val
 TCCR2B = 0x09 ; // divide by 1 prescale
 TCNT2  = 0x00 ;
 OCR2A  = 0x0F ; // TOP = 15, cycles every 16 clocks
 OCR2B  = 0x07 ; // COMP for pin3
 pinMode (PWMout, OUTPUT) ;

[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]



I think I'm in love with you  :)
It worked!
And the sensor gives a signal!
No matter what other bad stuff will happen, tonight I can sleep like a baby (Unless my baby will wake me up).

Thank you all for your help, for now  ;)


Great!  If you can't sleep there's always the ATmega328 datasheets to read LOL.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]


Incidentally are those sensors expensive - I've just seen the thermal image examples on their website for the 32x31 pixel version - a low cost thermal imaging camera would be very very sweet...
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]


They are cheap only if you buy them in stocks (like 1000pcs.).
1 sensor of 8x8 costs several hundred US dollars.

Go Up