Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программный I2C на AVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
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).
Alex_1811
Вот проверенный код с которым можно ничего не боятся rolleyes.gif .
Errorkpi
Спасибо. Судя по коду "ногодрыгание" именно так и происходит . Оч интересный исходник, почерпнул для себя много нового. Еще раз спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.