Страница 1 из 1

Software I2C AVR

Добавлено: Вт сен 20, 2011 13:14:13
Errorkpi
Пытаюсь написать программный I2C. Хочу "Дрыгать ногами", но вот незадача, на сайте ув. DI HALT есть такая фраза:"Ни в коем случае нельзя переключать вывод микроконтроллера в OUT и дергать ногу на +5".
Испугавшись за МК или устройство таргет, хочу сделать вот так:

Код: Выделить всё

#include <iotiny85.h>
#include <intrinsics.h>

#define i2c_port PORTB
#define i2c_ddr DDRB
#define i2c_scl DDB0
#define i2c_sda DDB1

void i2c_init(void)
{
   //ставим порт в Tri-state (Hi-Z)
  i2c_port=(0<<i2c_scl | 0<<i2c_sda); 
  __no_operation();
  i2c_ddr=(0<<i2c_scl | 0<<i2c_sda);
}

int main()
{
  i2c_init();
  
  while(1)
  {
   //дрыгаю ногами
    i2c_ddr=1<<i2c_scl; // Output Low (Sink)
    __delay_cycles(50);
    i2c_ddr=0<<i2c_scl; // Tri-state (Hi-Z)
    __delay_cycles(50);
  }
}
В общем-то вопрос: не сожжет ли такой вариант "дрыгания ногами" МК или устройство таргет. Читать буду тоже в режиме Tri-state (Hi-Z).

Re: Software I2C AVR

Добавлено: Вт сен 20, 2011 14:38:21
koyodza
правильно. Нужные биты в PORT ставите в 0, а потом управляете с помощью DDR