Witam Panów, otóż moje pytanie dotyczy czy ktoś może już prubował uruchomić bądź uruchomił ten przetwornik w bascomie. Niby są w necie jakieś biblioteki na arduino ale to wiadomo inne środowisko programistyczne.
Wychodzę z tym zapytaniem bo kupiłem taki moduł no ale przydało by się jego chociaż uruchomić na jednym kanale.
Jeśli chodzi o datashet to jest tam jakaś wzmianka o uarcie "Connection to 8xC51 MicrocontrollerUART with a 2-Wire Interface" i jak by to ugryść?
Przetwornik ADS1256
- Karlos128@nos
- Posty: 54
- Rejestracja: 18 sie 2015, 13:32
- niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Przetwornik ADS1256
To zwykłe ADC po SPI
DIN - Data In to MOSI czyli Master Output Slave Input
DOUT - Data Output to MISO czyli Master Input Slave Output
SCLK to zegar czyli SCK
CS to Chip Select czyli SS - Slave Select
Na pinie DRDY masz informację, że dane sa gotowe do pobrania Data Ready
Można więc z tym pogadać sprzętowym SPI, albo programowym a nawet poleceniami Shiftin i Shiftout na dowolnych pinach.
Na pewno trzeba na chwilę usiąść i to skonfigurować
DIN - Data In to MOSI czyli Master Output Slave Input
DOUT - Data Output to MISO czyli Master Input Slave Output
SCLK to zegar czyli SCK
CS to Chip Select czyli SS - Slave Select
Na pinie DRDY masz informację, że dane sa gotowe do pobrania Data Ready
Można więc z tym pogadać sprzętowym SPI, albo programowym a nawet poleceniami Shiftin i Shiftout na dowolnych pinach.
Na pewno trzeba na chwilę usiąść i to skonfigurować
- Karlos128@nos
- Posty: 54
- Rejestracja: 18 sie 2015, 13:32
Re: Przetwornik ADS1256
Zanim wyprubuje to może podpowiesz jak zamienić taką składnię poniżej na język bascom
np.
czy to by było równoznaczne?
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- #define SPI_SPEED 2500000
- /* For information to the register and settings see manual page (p..) */
- /* ADS1248 Register (see p42 for Register Map) */
- #define STATUS 0x00 //Status Control Register 0
- #define MUX 0x01 //Multiplexer Control Register 0
- #define ADCON 0x02 //A/D Control Register 0
- #define DRATE 0x03 //A/D Data Rate Control Register 0
- #define IO 0X04 //GPIO Control Register 0
- #define OFC0 0x05 //Offset Calibration Coefficient Register 1
- #define OFC1 0x06 //Offset Calibration Coefficient Register 2
- #define OFC2 0x07 //Offset Calibration Coefficient Register 2
- #define FSC0 0x08 //Full scale Callibration Coefficient Register 0
- #define FSC1 0x09 //Full scale Callibration Coefficient Register 1
- #define FSC2 0x0A //Full scale Callibration Coefficient REgister 2
- /*STATUS - Status Control Register 0 ( see p30)*/
- /* BIT7 - BIT6 - BIT5 - BIT4 - BIT3 - BIT2 - BIT1 - BIT0 */
- /* ID - ID - ID - ID - ORDER - ACAL - BUFEN - DRDY */
- #define STATUS_RESET 0x01 // Reset STATUS Register
- /*Bits 7 - 4 ID3, ID2, ID1, ID0 Factory Programmed Identification Bits(Read Only)*/
- /*ORDER1:0 Data Output Bit Order*/
- #define ORDER_MSB B00000000 // Most significant Bit first (default)
- #define ORDER_LSB B00001000//Least significant Bit first
- /*Input data is always shifted in most significant byte and bit first. Output data is always shifted out most significant
- byte first. The ORDER bit only controls the bit order of the output data within the byte.*/
- /*ACAL1:0 Auto Calibration*/
- #define ACAL_OFF B00000000 // Auto Calibration Disabled (default)
- #define ACAL_ON B00000100 // Auto Calibration Enabled
- /*When Auto-Calibration is enabled, self-calibration begins at the completion of the WREG command that changes
- the PGA (bits 0-2 of ADCON register), DR (bits 7-0 in the DRATE register) or BUFEN (bit 1 in the STATUS register)
- values.*/
- /*BUFEN1:0 Analog Input Buffer Enable*/
- #define BUFEN_OFF B00000000 //Buffer Disabled (default)
- #define BUFEN_ON B00000010 //BUffer Enabled
- /*DRDY1:0 Data Ready (Read Only) Duplicates the state of the DRDY pin*/
- /* MUX - Multiplexer Control Register 0 (see p31 - bring together with bitwise OR | */
- /* BIT7 - BIT6 - BIT5 - BIT4 - BIT3 - BIT2 - BIT1 - BIT0 */
- /* PSEL3 - PSEL2 - PSEL1 - PSEL0 - NSEL3 - NSEL2 - NSEL1 - NSEL0 */
- #define MUX_RESET 0x01 // Reset MUX0 Register
- /* PSEL3:0 Positive input channel selection bits */
- #define P_AIN0 B00000000 //(default)
- #define P_AIN1 B00010000
- #define P_AIN2 B00100000
- #define P_AIN3 B00110000
- #define P_AIN4 B01000000
- #define P_AIN5 B01010000
- #define P_AIN6 B01100000
- #define P_AIN7 B01110000
- #define P_AINCOM B10000000
- /* NSEL3:0 Negativ input channel selection bits */
- #define N_AIN0 B00000000
- #define N_AIN1 B00000001 //(default)
- #define N_AIN2 B00000010
- #define N_AIN3 B00000011
- #define N_AIN4 B00000100
- #define N_AIN5 B00000101
- #define N_AIN6 B00000110
- #define N_AIN7 B00000111
- #define N_AINCOM B00001000
- /*ADCON - A/D Control Register 0 ( see p31)*/
- /* BIT7 - BIT6 - BIT5 - BIT4 - BIT3 - BIT2 - BIT1 - BIT0 */
- /* 0 - CLK1 - CLK0 - SDCS1 - SDCS0 - PGA2 - PGA1 - PAG0 */
- #define ADCON_RESET 0x20 // Reset ADCON Register
- /*CLK2:0 D0/CLKOUT Clock Out Rate Setting*/
- #define CLK_OFF B00000000 //Clock Out off
- #define CLK_1 B00100000 //Clock Out Frequency = fCLKIN (default)
- #define CLK_2 B01000000 //Clock Out Frequency = fCLKIN/2
- #define CLK_4 B01100000 //Clock Out Frequency = fCLKIN/4
- /*When not using CLKOUT, it is recommended that it be turned off. These bits can only be reset using the RESET pin.*/
- /*SDCS2:0 Sensor Detection Current Sources*/
- #define SDCS_OFF B00000000//Sensor Detect Off (default)
- #define SDCS_05 B00001000//Sensor Detect Current 0.5?A
- #define SDCS_2 B00010000//Sensor Detect Current 2?A
- #define SDCS_10 B00011000//Sensor Detect Current 10?A
- /*The Sensor Detect Current Sources can be activated to verify the integrity of an external sensor supplying a signal to the
- ADS1255/6. A shorted sensor produces a very small signal while an open-circuit sensor produces a very large signal.*/
- /*PGA3:0 Programmable Gain Amplifier Setting*/
- #define PGA_1 //(default)
- #define PGA_2
- #define PGA_4
- #define PGA_8
- #define PGA_16
- #define PGA_32
- #define PGA_64 B00100111
- /*DRATE - A/D Data Rate Register 0 ( see p32)*/
- /* BIT7 - BIT6 - BIT5 - BIT4 - BIT3 - BIT2 - BIT1 - BIT0 */
- /* DR7 - DR6 - DR5 - DR4 - DR3 - DR2 - DR1 - DR0 */
- #define DRATE_RESET 0xF0 // Reset DRATE Register
- /*DR7:0 Data Rate Setting*/
- #define DR_30000 B11110000 //30.000 SPS (default)
- #define DR_15000 B11100000 //15.000 SPS
- #define DR_7500 B11010000 //7.500 SPS
- #define DR_3750 B11000000 //3.750 SPS
- #define DR_2000 B10110000 //2.000 SPS
- #define DR_1000 B10100001 //1.000 SPS
- #define DR_500 B10010010 //500 SPS
- #define DR_100 B10000010 //100 SPS
- #define DR_60 B01110010 //60 SPS
- #define DR_50 B01100011 //50 SPS
- #define DR_30 B01010011 //30 SPS
- #define DR_25 B01000011 //25 SPS
- #define DR_15 B00110011 //15 SPS
- #define DR_10 B00100011 //10 SPS
- #define DR_5 B00010011 //5 SPS
- #define DR2_5 B00000011 //2,5 SPS
- /*IO - GPIO Control Register 0 ( see p32)*/
- /* BIT7 - BIT6 - BIT5 - BIT4 - BIT3 - BIT2 - BIT1 - BIT0 */
- /* DIR3 - DIR2 - DIR1 - DIR0 - DIO3 - DIO2 - DIO1 - DIO0 */
- #define IO_RESET 0xE0 // Reset IO Register
- /*DIR3 - Digital I/O Direction for Pin D3*/
- #define DIR3_OUT B00000000 //D3 is an output
- #define DIR_IN B10000000 //D3 is an input (default)
- /*DIR2 - Digital I/O Direction for Pin D3*/
- #define DIR2_OUT B00000000 //D2 is an output
- #define DIR2_IN B01000000 //D2 is an input (default)
- /*DIR1 - Digital I/O Direction for Pin D3*/
- #define DIR1_OUT B00000000 //D1 is an output
- #define DIR1_IN B00100000 //D1 is an input (default)
- /*DIR0 - Digital I/O Direction for Pin D3*/
- #define DIR0_OUT B00000000 //D0/CLKOUT is an output
- #define DIR0_IN B00010000 //D0/CLKOUT is an input (default)
- /*DIO3:0 Status of Digital I/O, Read Only*/
- /* SPI COMMAND DEFINITIONS (p34) */
- /*SYSTEM CONTROL */
- #define WAKEUP 0x00 //Exit Sleep Mode
- #define STANDBY 0xFD //Enter Sleep Mode
- #define SYNC 0xFC //Synchornize the A/D Conversion
- #define RESET 0xFE //Reset To Power UP values
- #define NOP 0xFF //No operation
- /*DATA READ*/
- #define RDATA 0x01 //Read data once
- #define RDATAC 0x03 //Read data continously
- #define SDATAC 0x0F //Stop reading data continously
- /*READ REGISTER */
- #define RREG 0x10 //Read From Register
- #define WREG 0x50 //Write To Register
- /*Calibration */
- #define SYSOCAL 0xF3 //System Offset Calibration
- #define SYSGCAL 0xF2 //System Gain Calibration
- #define SELFCAL 0xF0 //Self Offset Calibration
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- Const Status = &H00
- Const Mux = &H01
- niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Przetwornik ADS1256
Tak. Właśnie tak to czasem przepisuję.
Mogę Tobie podpowiedzieć myk.
Uruchamiasz program Notepad++ i potem możesz dużo rzeczy zamienić z automatu.
Na przykład zaznaczasz "#define" i wciskasz CTRL+R (replace) i w okienku na co to zamienić wpisujesz "Const"
Wszystkie 0x możesz zamienić na &H i wszystkie "//" na apostrof i tak dalej...
Bascom też ma te funkcje, ale ja dodatkowo mam włączone na stałe "Reformat code" i za dużo by mi do czasu naprawy kodu pozmieniał.
Mogę Tobie podpowiedzieć myk.
Uruchamiasz program Notepad++ i potem możesz dużo rzeczy zamienić z automatu.
Na przykład zaznaczasz "#define" i wciskasz CTRL+R (replace) i w okienku na co to zamienić wpisujesz "Const"
Wszystkie 0x możesz zamienić na &H i wszystkie "//" na apostrof i tak dalej...
Bascom też ma te funkcje, ale ja dodatkowo mam włączone na stałe "Reformat code" i za dużo by mi do czasu naprawy kodu pozmieniał.
- Karlos128@nos
- Posty: 54
- Rejestracja: 18 sie 2015, 13:32
Re: Przetwornik ADS1256
Narazie dzięki. Popracuję nad tym i odezwę się.
- Karlos128@nos
- Posty: 54
- Rejestracja: 18 sie 2015, 13:32
Re: Przetwornik ADS1256
Witam szanownych.
Po długim czasie postanowiłem pobawić się z tym ADS1256, ale coś nie za bardzo mi wychodzi ta pogawędka z tym scalakiem.
Opieram się o dataschet oraz gotowe biblioteki lecz nie bascomowe.
Na początek moje pytanko czy dobrze skonfigurowałem interfejs SPI oraz CS i RDY.
Program oparty jest o xmega256a3u.
Następnie próbuje zainicjować układ w taki to sposób:
Wstawiam próbke z analizatora fotke PNG.
Czy według was to dobry sposób na komunikacje spi bo wydaje mi się że nic nie odbiera.
Po długim czasie postanowiłem pobawić się z tym ADS1256, ale coś nie za bardzo mi wychodzi ta pogawędka z tym scalakiem.
Opieram się o dataschet oraz gotowe biblioteki lecz nie bascomowe.
Na początek moje pytanko czy dobrze skonfigurowałem interfejs SPI oraz CS i RDY.
Program oparty jest o xmega256a3u.
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- '*************** Konfiguracja SPI dla ADS1256 24bit ****************************
- Config Portd.4 = Output ' CS=0 aktywny ; CS=1 nieaktywny
- Ads1256_cs Alias Portd.4
- Ads1256_cs = 1
- Config Portd.0 = Output
- Ads1256_rst Alias Portd.0
- Ads1256_rst = 0
- Waitms 500
- Ads1256_rst = 1
- 'On Portd_int1 Rdy_int
- 'Enable Portd_int1 , Lo 'Enable this Interrupt as Lo Level Interrupt
- 'Config Pind.1 = Input ' T-Q
- 'Portd_pin1ctrl = &B00_011_010 ' _011 Pullup - 010 Reaction on falling edge
- 'Portd_int1mask = &B0000_00_10
- Rdy_ads1256 Alias Pind.1 : Config Rdy_ads1256 = Input ' RDY = 1>0 nowe dane
- Config Xpin = Portd.1 , Outpull = Pullup , Sense = Low_level
- Config Spid = Hard , Master = Yes , Mode = 1 , Clockdiv = Clk128 , Data_order = Msb , Ss = None
- Open "SPID" For Binary As #15
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- Waitms 5
- Ads1256_cs = 0
- Waitms 5
- Bitwait Rdy_ads1256 , Reset
- Print #15 , Ads1256_cmd_wakeup , &H00
- Bitwait Rdy_ads1256 , Reset
- Print #15 , Ads1256_cmd_wreg
- Bitwait Rdy_ads1256 , Reset
- Print #15 , Ads1256_reg_adcon , &H00
- Bitwait Rdy_ads1256 , Reset
- Print #15 , Ads1256_reg_drate , Ads1256_drate_5sps
- Bitwait Rdy_ads1256 , Reset
- Print #15 , Ads1256_reg_mux , Ads1256_muxp_ain0 , Ads1256_muxp_aincom
- 'Print #15 ,
- 'Ads1256_cs = 1
- Bitwait Rdy_ads1256 , Reset
- Print #15 , Ads1256_cmd_rdata , 3
- Input #15 , Ads1256_bufor(1)
- Input #15 , Ads1256_bufor(2)
- Input #15 , Ads1256_bufor(3)
- Waitms 5
- Print #15 , Ads1256_cmd_sdatac
- Ads1256_cs = 1
Czy według was to dobry sposób na komunikacje spi bo wydaje mi się że nic nie odbiera.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.