RTV forum PL | NewsGroups PL

Jak poprawnie odczytać 16-bitowe wartości z przetwornika A/C Max1169 przez I2C?

i2c przetwornik

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak poprawnie odczytać 16-bitowe wartości z przetwornika A/C Max1169 przez I2C?

Guest

Sun Feb 25, 2007 12:58 pm   



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: http://datasheets.maxim-ic.com/en/ds/MAX1169.pdf

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?

badworm
Guest

Sun Feb 25, 2007 3:27 pm   



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

Quote:
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: http://datasheets.maxim-ic.com/en/ds/MAX1169.pdf
Przetwornik jest podlaczony do atmegi8 wg schematu z manuala. Proboje
odczytac z niego dane w ten sposob:

<ciach kod>

Quote:
Na wyswietlaczu pokazuje sie wartosc 255 i nic wiecej. Jak odebrac te
16bitow z przetwornika i wyswietlic je?

Proponuję na początek ściągnąć z www.elportal.pl 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.
--
Pozdrawiam Bad Worm badworm[maupa]post{kopek}pl
IET9@WEiA-PG student
GG#2400455 ICQ#320399066
http://photobucket.com/albums/b252/badworm/

elektroda NewsGroups Forum Index - Elektronika Polska - Jak poprawnie odczytać 16-bitowe wartości z przetwornika A/C Max1169 przez I2C?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map