i2c przetwornik
rzeszow.pl@gmail.com - 25-02-2007 14:45
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:
http://datasheets.maxim-ic.com/en/ds/MAX1169.pdfPrzetwornik 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 - 25-02-2007 16:45
Dnia 25 Feb 2007 03:58:32 -0800, rzeszow.pl@gmail.com napisał(a):
> 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>
> 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/
Piotr Chmiel - 26-02-2007 12:45
On Sun, 25 Feb 2007, rzeszow.pl@gmail.com wrote:
> 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[...]
Storna 16 pdfa.
Upewnij się, że masz działające funcje obsługi i2c.
--
Piotr Chmiel
gg: 3440801
zanotowane.pldoc.pisz.plpdf.pisz.plkonstruktor.keep.pl