i2c przetwornik

Panowie prosze o pomoc z uruchomieniem przetwornika A/C Max1169. Jest to moj pierwszy projekt z i2c wiec liczę na wyrozumiałość. Jest to 16- bitowy przetwornik, wiecej o nim tutaj:

formatting link
Przetwornik jest podlaczony do atmegi8 wg schematu z manuala. Proboje odczytac z niego dane w ten sposob:

Kod: #include <avr/io.h>

#include <stdlib.h>

#include <stdio.h>

#include "D:\AVR\Project Proteus\header\lcd.h" #include "D:\AVR\Project Proteus\header\i2c.h" #include "D:\AVR\Project Proteus\header\rs232.h"

unsigned char tmp; unsigned int pomiar1; char bufor1[20],lcd_buf[15];

int main(void) { DDRB=0xFF; PORTB =0xFF; DDRC = 0xFF; PORTC = 0xFF; PORTC &= ~(1 << 3);

while(1) { lcd_init(); i2cstart(); i2cwrite(110); tmp = i2cread(NOACK); i2cstop(); ltoa(tmp,bufor1,10); write_text(bufor1); waitms(40); write_command(0x01); } return (0); }

Plik i2c.h wyglada tak:

Kod:

delay(); CLR_SCL; } // funkcja generujaca sygnał stop void i2cstop(void) { CLR_SDA; delay(); SET_SCL; delay(); SET_SDA; delay(); }

// funkcja wysyłająca bajt na szynę I2C void i2cwrite(unsigned char x) { unsigned char count = 9; do { CLR_SCL; if(x & 0x80) SET_SDA; else CLR_SDA; x <<= 1; delay(); SET_SCL; delay(); }while(--count); CLR_SCL; }

// funkcja odczytujaca bajt z szyny I2C unsigned char i2cread(unsigned char ack) { unsigned char count = 8, temp = 0; SET_SDA; SDA_IN; do { delay(); SET_SCL; delay(); temp <<= 1; if (GET_SDA) temp++; CLR_SCL; } while (--count); if(ack) SET_SDA; delay(); SET_SCL; delay(); CLR_SCL; return (temp); }

Na wyswietlaczu pokazuje sie wartosc 255 i nic wiecej. Jak odebrac te

16bitow z przetwornika i wyswietlic je?
Reply to
rzeszow.pl
Loading thread data ...

Dnia 25 Feb 2007 03:58:32 -0800, snipped-for-privacy@gmail.com napisał(a):

<ciach kod>

Proponuję na początek ściągnąć z

formatting link
kod obsługi I2C(część

6, EdW 12/2005) dla AVRów w C i używając go sprawdzić najpierw, czy sam przetwornik żyje. Jeśli wynik testu będzie pozytywny to wtedy szukać błędu w swoim kodzie. Oczywiście program z EdW został napisany pod PCF8591 ale zawarte w nim podstawowe procedury I2C pozwalają obsłużyć chyba każdy układ z magistralą I2C.
Reply to
badworm

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.