Zdravim,
mam zostavu : Atmega32+ina219(i2c)+Lcd(4-bit hd44780). Nejde mi komunikacia z ina219.
Vyskusal som senzor na aduine a vsetko slapalo, takze senzor je OK - adresa 0x40.
Na MCU mam na SDA a SCL pull-upy 4k7. I2C funguje pretoze mi ide druhy lcd cez toto rozhranie.
Pouzivam upravenu i2c kniznicu od petra fleuryho. Zavolam init a potom start s adresou 0x40.
Ale dostavam na deviatom bite NACK ako keby tam ziaden senzor nebol. Kontroloval som zapojenie asi 10 krat
a stale nic. Neviete kde by som mal hladat chybu ?
Diky
ATMEGA32+INA219+I2C
Moderátori: psichac, Moderátori
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: ATMEGA32+INA219+I2C
Ja tam nič závadného nevidím. Ale možno by bolo lepšie to nabrať osciloskopom pozrieť hrany, prípadne nejaké skryté pulzy na CLK. Ak to s arduínom ide a s iným procesorom nie, tak by som porovnával oba priebehy a snažil a aby boli úplne rovnaké
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: ATMEGA32+INA219+I2C
Ono priebehy su rovnake, akurat ze pri starte (atmega) dostanem NACK a tym padom je vlastne senzor "nenajdeny" lebo neodpovedal.
Rozdiel je akurat v 9-tom bite. Z Arduina ide 0 (ACK) a z atmegy 1 (NACK).
Rozdiel je akurat v 9-tom bite. Z Arduina ide 0 (ACK) a z atmegy 1 (NACK).
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: ATMEGA32+INA219+I2C
to ACK/NACK nejde z procesora. To ide z toho senzora. Procesor si to iba číta a podľa toho vie či slave je na zbernici alebo nie. Nejaká rozdielnosť tam byť musí. Napätia? časovanie? hrany? Zákmity na CLK? Tá knižnica to robí sw? alebo sa požíva TWI procesora?
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: ATMEGA32+INA219+I2C
Je mi jasne ze ACK/NACK posiela (nastavuje) receiver.
No sprava sa to ako keby tam ten senzor ani nebol. Skusal som menit frkvenciu I2C (100kHz - 400kHz) - nepomohlo. Stale vracia NACK.
Zmenil som adresu a rovnako nic.
Skusim este "rozobrat"ten arduino kod, ci tam nerobia nejaku prasarnu
Nie som arduinista, tak sa opytam. Aka je default I2C frekvecia ak ju nikde nenastavim ?
[size=75][color=#999999]-- Spojený príspevok 30 Mar 2018, 21:31 --[/size][/color]
No zistil som ze arduino kod pouziva adresu 0x80 aj ked ma v *ina219.h definovane
#define INA219_ADDRESS (0x40)
s druhou adresou sa to rozbehlo !!!
uz to len nejako nakonfigurovat a citat hodnoty !!
Diky
No sprava sa to ako keby tam ten senzor ani nebol. Skusal som menit frkvenciu I2C (100kHz - 400kHz) - nepomohlo. Stale vracia NACK.
Zmenil som adresu a rovnako nic.
Skusim este "rozobrat"ten arduino kod, ci tam nerobia nejaku prasarnu
Nie som arduinista, tak sa opytam. Aka je default I2C frekvecia ak ju nikde nenastavim ?
[size=75][color=#999999]-- Spojený príspevok 30 Mar 2018, 21:31 --[/size][/color]
No zistil som ze arduino kod pouziva adresu 0x80 aj ked ma v *ina219.h definovane
#define INA219_ADDRESS (0x40)
s druhou adresou sa to rozbehlo !!!
uz to len nejako nakonfigurovat a citat hodnoty !!
Diky
0
- jirka.jirka.
- Ultimate člen
- Príspevky: 1537
- Dátum registrácie: 17 Okt 2008, 00:00
- Bydlisko: Uherské Hradiště
- Kontaktovať používateľa:
Re: ATMEGA32+INA219+I2C
Adresa je 7 bitová.
skutečná adresa toho senzoru je:
0x40 = 0b01000000
A u I2C musíš adresu šiftnout o 1 doleva, protože 0 bit určuje zápis/čtení z I2C.
A po posunu dostaneš 0b10000000 = 0x80.
skutečná adresa toho senzoru je:
0x40 = 0b01000000
A u I2C musíš adresu šiftnout o 1 doleva, protože 0 bit určuje zápis/čtení z I2C.
Kód: Vybrať všetko
(0b01000000 << 1) = 0b10000000
0
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 17 Odpovedí
- 2347 Zobrazení
-
Posledný príspevok od používateľa Sani1