i2c przetwornik

Feb 25, 2007 2 Replies

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?

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.

[...]

Storna 16 pdfa. Upewnij siê, ¿e masz dzia³aj±ce funcje obs³ugi i2c.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required