PCF8591 co jest nie tak?

Witam.

W poniższym fragmencie programu chyba coś jest nie tak bo odczytuję ciągle 255. A1, A2, A3 mam zwarte do masy:

/***************************************************** This program was produced by the CodeWizardAVR

Chip type : ATmega8515 Program type : Application Clock frequency : 7,372800 MHz Memory model : Small External SRAM size : 0 Data Stack size : 128

*****************************************************/

#include <mega8515.h>

#include <delay.h>

// Standard Input/Output functions #include <stdio.h>

// I2C Bus functions #asm .equ __i2c_port=0x07 ;PORTE .equ __sda_bit=0 .equ __scl_bit=1 #endasm #include <i2c.h>

// Declare your global variables here char k; unsigned char ch; void main(void) { // Declare your local variables here

// Input/Output Ports initialization // Port A initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTA=0x00; DDRA=0xFF;

// Port B initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTB=0x00; DDRB=0xFF;

// Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00;

// Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00;

// Port E initialization // Func2=In Func1=In Func0=In // State2=T State1=T State0=T PORTE=0x00; DDRE=0x00;

// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00;

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;

// External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; EMCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;

// USART initialization // Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On // USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 9600 UCSRA=0x00; UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x2F;

// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; i2c_init(); while (1) { /* receive the character */ k=getchar(); /* and echo it back */ i2c_start(); i2c_write(0x90); i2c_write(0x40); i2c_stop(); i2c_start(); i2c_write(0x91); ch=i2c_read(0); i2c_stop();

PORTA=~k; putchar(ch); PORTB=0; delay_ms(1000); PORTB=255; delay_ms(1000);

}; }

Reply to
uC PC
Loading thread data ...

Sprawdzaj co zwraca i2c_write - zobaczysz czy uklad potwierdza komunikacje. Jeszcze podaj co masz podlaczone do 8591 na piny Vref, OSC, EXT, AIN0 Zakladam ze zasilanie jest ok

Ostatnio bylo jakies pytanie o 8591 i, o ile pamietam, byla tak dosc interesujaca odpowiedz.

Reply to
Krzysztof Rudnik

Dane dotyczące schematu:

Vref do 5V OSC - niepodłączony EXT do masy (GND) AINO do 2,5V (napięcie mierzone) Vdd=5V

Reply to
uC PC

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.