Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: помогите победить pcf8591 (ilf8591)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
d71
бьюсь, измотанной мухой об стекло sad.gif

прога - смотреть не на что, функции i2c написаны и работают, проверил на 24с16 и 24с64, а вот с 8591
затык вышел, читать ацп - никаких траблов, в вот цап sad.gif
не получается. посылаю адрес устройства - подтвреждает, контрольный байт - не подтвержнает sad.gif до самого байта данных так дело и не доходит. мысли кончились sad.gif
плиз-з-з-з-з-з-з
d71
народ в протеусе кто пробовал 8591? проблем не было?
Halfback
тоже прошу помощи.
Компилятор - CAVR v2.03.9 , использую его же драйвер для i2c.
На плате с датчиком температуры DS1820 и экспандером портов PCA9557 всё работает а PCF8591 по всем каналам присылает 0xFF
Решил отладиться в протеусе - тоже самое (см. пример). Физический адрес = 1. Хочу прочитать что на AIN1. Автоинкремент для считывания всех входов АЦП пока не трогаю.
Вот мой код:
Код
....
unsigned int i;
.......
//бла-бла-бла
......

// I2C Bus initialization
i2c_init();

while (1)
      {
      // Place your code here  
      i=0;
      
      i2c_start();        
      i2c_write(0b10010101);
      i2c_write(0b00000001);
      i= i2c_read(0);
      i2c_stop();
      PORTD = (unsigned int) i;    
      delay_ms(100);
      };

Порт в состоянии 0xFF. По осциллографу видно что на линии SDA тоже 0xFF в тот промежуток времени, когда полевик в АЦП должен долбить оцифровку напряжения на входе AIN1.

Вобщем прошу помощи. АЦП не ахти но достаточно известный. ДУмаю много тут кто с нм мел дело.
ILYAUL
Цитата(d71 @ Feb 20 2006, 05:57) *
бьюсь, измотанной мухой об стекло sad.gif

прога - смотреть не на что, функции i2c написаны и работают, проверил на 24с16 и 24с64, а вот с 8591
затык вышел, читать ацп - никаких траблов, в вот цап sad.gif
не получается. посылаю адрес устройства - подтвреждает, контрольный байт - не подтвержнает sad.gif до самого байта данных так дело и не доходит. мысли кончились sad.gif
плиз-з-з-з-з-з-з

Скорость ? Судя по DS не выше 100
AndreyKeil
Работал с этой м/с - никаких траблов в режиме ЦАП не наблюдал.
Может, как тут говорил "ILYAUL", скорость не та? Должна быть не больше 100кГц. У меня на плате было 55кГц. Если получилось в режиме чтения, то должно получиться и в режиме записи. У вас ведь получилось сконфигурировать АЦП?

Ой! smile.gif Прошу прощения, ответил не тому, очень старое сообщение.

Halfback, эта АЦП выдаёт результат предыдущего преобразования! То есть, чтобы прочитать достоверный результат, её надо дважды прочитать. Первое чтение выдает состояние её внутреннего буфера!
Halfback
Разобрался наконец. В том числе и про то что упомянул AndreyKeil. имхо криво как-то АЦП работает но бог с ним...
Вот примеры рабочего кода для АЦП и ЦАП.

Код
unsigned char GET_ADC_VALUE(unsigned char num_ch) {
        unsigned char value;    
        if(num_ch>3) return 0;
        i2c_start();
        i2c_write(0b10010000);
        i2c_write((1<<6) | num_ch);
        i2c_stop();
        delay_ms(1);
        i2c_start();
        i2c_write(0b10010001);
        value = (unsigned char) i2c_read(1);        
        value = (unsigned char) i2c_read(0);
        i2c_stop();          
        return value;
        }


Код
void SET_DAC_VALUE(unsigned char value) {
        i2c_start();
        i2c_write(0b10010000);
        i2c_write(1<<6);
        i2c_write(value);
        i2c_stop();
        }
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.