postanowilem odkurzyc uklad i sprobowac na sprzetowym i2c (twi)
ktos pomoze mnie naprowadzic ? (atmega16)
RST podpiete pod PD2 , SCLK pod PC0(SCL) ,I/O pod PC1 (SDA)
scl i scl probowalem z rezystorami podciagajacymi 4,7 k i bez...
uklad na starym kodzie dziala...
Utworzyłem nowy temat, ponieważ "nie pasował do starego".
[zumek]
ktos pomoze mnie naprowadzic ? (atmega16)
#define ACK 1
#define NOACK 0
#define CE PD2
// procedura transmisji sygnału START
void twistart(void)
{
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
while (!(TWCR & (1<<TWINT)));
}
// procedura transmisji sygnału STOP
void twistop(void)
{
TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO);
while ((TWCR & (1<<TWSTO)));
}
// procedura transmisji bajtu danych
void twiwrite(char data)
{
TWDR = data;
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
}
//procedura odczytu bajtu danych
char twiread(char ack)
{
TWCR = ack
? ((1 << TWINT) | (1 << TWEN) | (1 << TWEA))
: ((1 << TWINT) | (1 << TWEN)) ;
while (!(TWCR & (1<<TWINT)));
return TWDR;
}
main:
DDRD |= _BV(CE);
char tmp;
PORTD &= ~(_BV(CE));
PORTD |= _BV(CE);
twistart();
twiwrite(0x81); //do odczytania sekund
tmp = twiread(NOACK);
twistop();
PORTD &= ~(_BV(CE));
RST podpiete pod PD2 , SCLK pod PC0(SCL) ,I/O pod PC1 (SDA)
scl i scl probowalem z rezystorami podciagajacymi 4,7 k i bez...
uklad na starym kodzie dziala...
Utworzyłem nowy temat, ponieważ "nie pasował do starego".
[zumek]