Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 14.03.2021, 18:43  
neid_nnov
Временная регистрация
 
Регистрация: 05.10.2010
Сообщений: 68
Сказал спасибо: 12
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
neid_nnov на пути к лучшему
По умолчанию Библиотека INA226 или как с ней работать

Добрый вечер форумчане! Народ есть у кого библиотека для INA 226,или хотя бы пару строк как с неё прочитать банальные регистры Vbus и ShuntVolt. Инфы в сети только под ардуино, или смт32, для авр кот наплакал( Можно даже на примере INA 219.
Реклама:
neid_nnov вне форума  
Непрочитано 14.03.2021, 19:15  
welcome61
Почётный гражданин KAZUS.RU
 
Аватар для welcome61
 
Регистрация: 11.06.2006
Адрес: 51° 46′ 0″ N, 55° 6′ 0″ E
Сообщений: 1,975
Сказал спасибо: 370
Сказали Спасибо 1,725 раз(а) в 706 сообщении(ях)
welcome61 на пути к лучшему
По умолчанию Re: Библиотека INA226 или как с ней работать

Сообщение от neid_nnov Посмотреть сообщение
Инфы в сети только под ардуино, или смт32, для авр кот наплакал( Можно даже на примере INA 219.
Какая разница?
https://www.ccsinfo.com/forum/viewto...ghlight=ina219
Вот под PIC.
Есть же даташит, есть примеры работы. Если разберетесь как работает INAxxx. то сможете применить любой подходящий МК.
welcome61 вне форума  
Сказали "Спасибо" welcome61
neid_nnov (14.03.2021)
Непрочитано 14.03.2021, 20:39  
neid_nnov
Временная регистрация
 
Регистрация: 05.10.2010
Сообщений: 68
Сказал спасибо: 12
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
neid_nnov на пути к лучшему
По умолчанию Re: Библиотека INA226 или как с ней работать

Сообщение от welcome61 Посмотреть сообщение
Какая разница?
Есть же даташит, есть примеры работы. Если разберетесь как работает INAxxx. то сможете применить любой подходящий МК.
Для меня есть разница пока, я пытаюсь правильно думать в этом направление. для смт вообще не воспринимается пока, примеры для ардуин полно, но библиотечные функии сидишь высматриваешь что и куда... тяжко из аз того что много приходится перечитывать и додумывать что там написано, по это причине и написал здесь на форуме.
Даже ваш пример вроде нагляднее намного чем в ардуиновских))
вот что я пытался написать за сегодняшний день:
Код:
unsigned int readByte(unsigned char addr, unsigned char deviceAddr){       //  чтение 2 байта по адресу I2C
unsigned char data, MSB, LSB;                    
i2c_start();                       //Кидаем команду "Cтарт" на шину I2C
i2c_write(deviceAddr);           //Кидаем на шину адрес INA226
i2c_write(addr);                   //Кидаем какой регистр хотим читать
i2c_stop();                        
delay_us(10);
i2c_start(); 
i2c_write(deviceAddr+1);            //Обращаемся к INA226 в режиме чтения, т.е. по адресу 1b1000001
MSB=i2c_read(0x00);                  //старший байт
LSB=i2c_read(0x01);                   //младший байт
i2c_stop();                        //Посылаем команду "Cтоп"
data=MSB;
data = (data ‹‹ 8)+LSB;
return data;                       //Возвращаем значение прочитанного
}

Последний раз редактировалось neid_nnov; 14.03.2021 в 20:44.
neid_nnov вне форума  
Непрочитано 19.03.2021, 10:20  
neid_nnov
Временная регистрация
 
Регистрация: 05.10.2010
Сообщений: 68
Сказал спасибо: 12
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
neid_nnov на пути к лучшему
По умолчанию Re: Библиотека INA226 или как с ней работать

Сижу ковыряюсь дальше с INA226. Не могу правильно считать старший и младший байт, на логическом анализаторе после чтения старшего байта видно что NACK - как я понимаю нет подтверждения но мастера. Что не так делаю? Особо примеров перед глаза не нашлось...
Код:
//Функция чтения 
int16_t read2Byte(uint8_t addr, uint8_t deviceAddr){       //  чтение 2 байта по адресу I2C
int16_t data; //16-bit 
uint8_t MSB, LSB; //8-bit                   
i2c_start();                        //Кидаем команду "Cтарт" на шину I2C
i2c_write(deviceAddr‹‹1); //Кидаем на шину адрес INA226 = 10000000
i2c_write(addr);                 //Кидаем какой регистр хотим читать
i2c_stop();                        
delay_us(10);
i2c_start(); 
i2c_write((deviceAddr‹‹1)+1);   //Обращаемся к INA226 в режиме чтения = 10000001
MSB=i2c_read(0);                      //читаем старший байт
LSB=i2c_read(1);                       //читаем младший байт
i2c_stop();                                 //Посылаем команду "Cтоп"
data=MSB;
data = (data ‹‹ 8)+LSB;           //Склеиваем data= data ‹‹ 8/LSB; или data= word(MSB, LSB); 
return data;                              //Возвращаем значение прочитанного
}
Перфое фото нет ACK, мой код

Второе как отвечает работает библиотека ардуино, данные принимаются адекватные

Последний раз редактировалось neid_nnov; 19.03.2021 в 10:25.
neid_nnov вне форума  
Непрочитано 19.03.2021, 11:07  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,780
Сказал спасибо: 2,909
Сказали Спасибо 3,117 раз(а) в 2,108 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Библиотека INA226 или как с ней работать

Сообщение от neid_nnov Посмотреть сообщение
Перфое фото нет ACK, мой код
[не даёт ACK на первом-же байте]
Сообщение от neid_nnov Посмотреть сообщение
Код:
MSB=i2c_read(0); //читаем старший байт
LSB=i2c_read(1); //читаем младший байт
Значит надо с пристрастием рассматривать i2c_read(NNN). "0" и "1" - должны определять выдавать или нет ACK? Поменять их местами?
Код:
MSB=i2c_read(1); //читаем старший байт
LSB=i2c_read(0); //читаем младший байт
__________________
Экзорцист 40-го уровня.

Последний раз редактировалось ForcePoint; 19.03.2021 в 11:10.
ForcePoint вне форума  
Сказали "Спасибо" ForcePoint
neid_nnov (19.03.2021)
Непрочитано 19.03.2021, 11:31  
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,330
Сказал спасибо: 85
Сказали Спасибо 596 раз(а) в 361 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Библиотека INA226 или как с ней работать

PHP код:
data = (data ‹‹ 8)+LSB;
return 
data
вот это не будет работать, т.к. unsigned char data.
либо сделать int16_t data;

Либо:

PHP код:
return (((int16_t )data‹‹ 8)+LSB
pambaru вне форума  
Непрочитано 19.03.2021, 11:44  
neid_nnov
Временная регистрация
 
Регистрация: 05.10.2010
Сообщений: 68
Сказал спасибо: 12
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
neid_nnov на пути к лучшему
По умолчанию Re: Библиотека INA226 или как с ней работать

Сообщение от pambaru Посмотреть сообщение
вот это не будет работать, т.к. unsigned char data.
либо сделать int16_t data;
это почти сразу переделал, чуть ниже код с исправлениями
neid_nnov вне форума  
Непрочитано 19.03.2021, 11:48  
neid_nnov
Временная регистрация
 
Регистрация: 05.10.2010
Сообщений: 68
Сказал спасибо: 12
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
neid_nnov на пути к лучшему
По умолчанию Re: Библиотека INA226 или как с ней работать

Сообщение от ForcePoint Посмотреть сообщение
Значит надо с пристрастием рассматривать i2c_read(NNN). "0" и "1" - должны определять выдавать или нет ACK? Поменять их местами?
Код:
MSB=i2c_read(1); //читаем старший байт
LSB=i2c_read(0); //читаем младший байт
можете на пальцах объяснить почему так надо делать? по сухой теории сколько не читал, мало где встречается и обычно о записи идет речь, а не о чтение... мои рассуждения и привели к чтению старшего и младшего, но как именно их записать правильно пока не знаю? доберусь до дома, попробую вашу подсказку испытать!
neid_nnov вне форума  
Непрочитано 19.03.2021, 12:11  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,780
Сказал спасибо: 2,909
Сказали Спасибо 3,117 раз(а) в 2,108 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Библиотека INA226 или как с ней работать

Сообщение от neid_nnov Посмотреть сообщение
можете на пальцах объяснить почему так надо делать? по сухой теории .....
Оригинальную спецификацию интерфейса читали или только перепевки?
https://www.nxp.com/docs/en/user-guide/UM10204.pdf

Сообщение от I2C-bus specification and user manual UM10204
3.1.6 Acknowledge (ACK) and Not Acknowledge (NACK)
The acknowledge takes place after every byte. The acknowledge bit allows the receiver to signal the transmitter that the byte was successfully received and another byte may be sent. ..... There are five conditions that lead to the generation of a NACK:
.....
5. A master-receiver must signal the end of the transfer to the slave transmitter.
Кратко: при приёме от ведомого - мастер подтверждает каждый байт, кроме последнего. После передачи NACK - мастер должен выполнить STOP или repeated START.
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
Непрочитано 19.03.2021, 12:27  
neid_nnov
Временная регистрация
 
Регистрация: 05.10.2010
Сообщений: 68
Сказал спасибо: 12
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
neid_nnov на пути к лучшему
По умолчанию Re: Библиотека INA226 или как с ней работать

Сообщение от ForcePoint Посмотреть сообщение
Оригинальную спецификацию интерфейса читали или только перепевки?
Кратко: при приёме от ведомого - мастер подтверждает каждый байт, кроме последнего. После передачи NACK - мастер должен выполнить STOP или repeated START.
нет, перепевки... уроки и примеры по тематике...
перевел datasheet INA226 по чтению и записи байта. Сказано следующее:
мастер генерирует условие запуска и отправляет байт адреса подчиненного устройства с высоким битом R / W, чтобы инициировать команду чтения. Следующий байт передается ведомым устройством и является старшим байтом регистра, указанного указателем регистра. За этим байтом следует подтверждение от мастера; затем ведомое устройство передает младший байт. Мастер подтверждает получение байта данных. Мастер может прекратить передачу данных, не генерируя подтверждение после получения любого байта данных или генерируя условие запуска или остановки. Получается тож самое что и вы сказали, но вот на реализации этого у меня не хватает))))
neid_nnov вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЦАП -должно работать совместно с компьютером! san384 Цифровые сигнальные процессоры 13 23.05.2011 22:53
AVReAl -Как с ней работать yostaf Микроконтроллеры, АЦП, память и т.д 23 09.02.2011 20:26
Техногенная катастрофа и что с ней теперь делать VOVOKA Отвлекитесь, эмбеддеры! 122 05.01.2011 19:23
USB HID девайс на 18F13K50 не хочет работать. DK Микроконтроллеры, АЦП, память и т.д 17 26.02.2010 18:31
[Решено] В какой обстановке Вам наиболее комфортно работать? Don_Ambrosio Отвлекитесь, эмбеддеры! 66 27.05.2008 14:02


Часовой пояс GMT +4, время: 23:56.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot