From: fenriswolfnews on 18 Apr 2006 16:31 I'm having a real heck of a time with this chip, the TI ADS1256 A to D converter. Has anyone else here programmed this device before with a uC .. I am using an atmel atmega 162 . All of my outputs look alive and well, and the ADC sends back semi random data when I attempt to just read a configuration register. If anyone here has example code (pseudo code, assembler, c, any processor) I would be relieved to just see some example of the proper sequence or timing. I've been through the data sheet several times and have cut back from a complete configuration and data acquisition to a very simple "what's in this register" and still don't have it working. TI doesn't have any examples of coding on their website as far as I can tell. I'm truly at a loss here, as the signals all look fairly clean (SPI signals), as far as I can tell I'm sending the right sequences and still I just get random gibberish from the chip. Thanks!
From: Rene Tschaggelar on 18 Apr 2006 16:56 fenriswolfnews(a)hotmail.com wrote: > I'm having a real heck of a time with this chip, the TI ADS1256 A to D > converter. Has anyone else here programmed this device before with a uC > . I am using an atmel atmega 162 . All of my outputs look alive and > well, and the ADC sends back semi random data when I attempt to just > read a configuration register. If anyone here has example code (pseudo > code, assembler, c, any processor) I would be relieved to just see some > example of the proper sequence or timing. I've been through the data > sheet several times and have cut back from a complete configuration and > data acquisition to a very simple "what's in this register" and still > don't have it working. TI doesn't have any examples of coding on their > website as far as I can tell. I'm truly at a loss here, as the signals > all look fairly clean (SPI signals), as far as I can tell I'm sending > the right sequences and still I just get random gibberish from the > chip. Thanks! The signals look fairly clean ? They have to be identical to the datasheet. With matching timing. Some ADC requires some idle time after a reset. But this will also be mentioned in the datsheet. Meaning you will have to actually measure your SPI signals and compare each detail with the datasheet. Not just the timings, but also the written details Rene -- Ing.Buero R.Tschaggelar - http://www.ibrtses.com & commercial newsgroups - http://www.talkto.net
From: Stef Mientki on 18 Apr 2006 17:28 fenriswolfnews(a)hotmail.com wrote: > I'm having a real heck of a time with this chip, the TI ADS1256 A to D > converter. Has anyone else here programmed this device before with a uC > . I am using an atmel atmega 162 . All of my outputs look alive and > well, and the ADC sends back semi random data when I attempt to just > read a configuration register. If anyone here has example code (pseudo > code, assembler, c, any processor) I would be relieved to just see some > example of the proper sequence or timing. I've been through the data > sheet several times and have cut back from a complete configuration and > data acquisition to a very simple "what's in this register" and still > don't have it working. TI doesn't have any examples of coding on their > website as far as I can tell. I'm truly at a loss here, as the signals > all look fairly clean (SPI signals), what kind of SPI signals, there are 4 or 8 different definitions of SPI, regarding on which clock edge data should be valid etc. Even the same manufacturer (i.e. TI) uses different SPI definitions for different devices !! Stef Mientki as far as I can tell I'm sending > the right sequences and still I just get random gibberish from the > chip. Thanks! >
From: fenriswolfnews on 18 Apr 2006 19:18 TI just specifies the timing and voltages. They don't specify a "type" of SPI. I am meeting all the timing diagrams and specs in the document as far as I can tell. I'm doing the proper significant digit order as well. I really could benefit from sample code if anyone has any. I'm doing things in the proper order as well as I can discern from the ADS1256 manual. However, the manual doesn't contain a single example of a proper end to end timing diagram or configuration sequence or data reads like the other ADC's I've used on this project. I've done SPI interfaces with no problem before. I think this problem lies more in configuration sequence or my misunderstanding of the proper sequence of events to get the chip up and going. Stef Mientki wrote: > fenriswolfnews(a)hotmail.com wrote: > > I'm having a real heck of a time with this chip, the TI ADS1256 A to D > > converter. Has anyone else here programmed this device before with a uC > > . I am using an atmel atmega 162 . All of my outputs look alive and > > well, and the ADC sends back semi random data when I attempt to just > > read a configuration register. If anyone here has example code (pseudo > > code, assembler, c, any processor) I would be relieved to just see some > > example of the proper sequence or timing. I've been through the data > > sheet several times and have cut back from a complete configuration and > > data acquisition to a very simple "what's in this register" and still > > don't have it working. TI doesn't have any examples of coding on their > > website as far as I can tell. I'm truly at a loss here, as the signals > > all look fairly clean (SPI signals), > what kind of SPI signals, > there are 4 or 8 different definitions of SPI, > regarding on which clock edge data should be valid etc. > Even the same manufacturer (i.e. TI) uses different SPI definitions > for different devices !! > > Stef Mientki > > as far as I can tell I'm sending > > the right sequences and still I just get random gibberish from the > > chip. Thanks! > >
From: Stef Mientki on 23 Apr 2006 06:05
>> as far as I can tell I'm sending >>> the right sequences and still I just get random gibberish from the >>> chip. Thanks! >>> > I just tried to connect the ADS1255 to a PIC, and indeed me too had troubles. Problem was caused by parameter t6, which I've never seen so bad in any other SPI device ;-) In case it might help, below is my test code for a PIC, written in JAL. succes, Stef Mientki -- initialization of the SPI port -- ADS1255 / ADS1256 @ 7.68 MHz -- SPI clock t1-max = 4tclock = 2 MHz const SPI_clock = target_clock / 16 -- 20Mc/16 = 1_250_000 const SPI_device_has_DIO = false -- if device has combined data-IO !! -- from figure 1 at page 6 const SPI_clock_idle = low -- Din is defined at the falling clock edge, -- setup time t4-minimal = 50 nsec -- hold time t5-minimal = 50 nsec const SPI_master_out_active_edge = falling_edge -- Dout is changed on rising edge, so sampling should be on falling edge -- propagation delay t7-max = 50 nsec -- hold time t8-min = 0 nsec const SPI_master_in_active_edge = falling_edge ----------------------------------------------------------------------------- -- Read IO ----------------------------------------------------------------------------- function ADC24_IO return byte is var byte data spi_send_mssp(_ADS1256_cmd_read_regs | _ADS1256_regs_io) spi_send_mssp( 0 ) delay_10us( _ADS1256_T6_10usec ) <<<=== T6 VERY IMPORTANT spi_read_mssp( data ) return data end function ----------------------------------------------------------------------------- -- the main test program, IO should read as 0xE1 forever loop ADC24_IO Serial_HW_write(ADC24_IO) delay_100ms(5) end loop |