با سلام
من میخواستم مقادیر (ADS7816 (adc 12bit رو بخونم این ایسی 8 پایه مقادیر رو به صورت spi می فرسته برنامهای با سی نوشتم که اون رو بخونه خروجی من اصلا پایداری نداره می خواستم ببینم آیا درست نوشتم یا کار دیگه ای باید انجام بدم ممنونم
من میخواستم مقادیر (ADS7816 (adc 12bit رو بخونم این ایسی 8 پایه مقادیر رو به صورت spi می فرسته برنامهای با سی نوشتم که اون رو بخونه خروجی من اصلا پایداری نداره می خواستم ببینم آیا درست نوشتم یا کار دیگه ای باید انجام بدم ممنونم
کد:
#include <mega16a.h> #include <delay.h> #include <stdlib.h> #include <stdio.h> #define XTAL 11059200 #define CLK PORTA.0 #define CS PORTA.1 #define Input PINA.2 //data reader int Spi_Read(void); char s[5]; void main(void) { // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out // State7=T State6=T State5=T State4=T State3=T State2=T State1=0 State0=0 PORTA=0x00; DDRA=0x03; // USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: Off // USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 19200 UCSRA=0x00; UCSRB=0x08; UCSRC=0x86; UBRRH=0x00; UBRRL=0x23; while (1) { itoa(Spi_Read(),s); puts(s); delay_ms(500); } } int Spi_Read(void) { int Data=0,i; Data=0; CS=0; //pin CS enable for (i=0;i<12;i++) { CLK=1; delay_us(10); Data=Data | Input<<11-i; CLK=0; delay_ms(1); } return Data; CS=1; //pin CS disable delay_us(100); };
دیدگاه