Fórum témák
» Több friss téma |
Ahogyan az adatlapjában szerepel, a címe 0xB8. A kommunikáció a MODBUS RTU táviratokat hasynálja I2C felületen: ld. 11. oldal.
Üdv!
Nos az i2c.c fájl alapján ez így teljesen rossz. Ha jól sejtem, itt valamilyen regiszterbe szeretnél írni, de nem adod meg az eszköz Slave Address-ét (Ez lenne az első érték), helyette a regiszter címét adod meg. Használd inkább az i2c_write2 vagy az i2c_writeN függvényt.
Ja nem, azzal a kóddal csak az I2C vonalat teszteltem, hogy ki e megy az adat, nem a szenzornak küldök parancsot.
Hp41C: igen olvastam az adatlapot, bár még nem tüzetesen mert az I2C busszal szórakoztam, hogy lássam minden rendben van vele. Olvastam és a következőt hámoztam ki belőle.. PIC küldi sensornak: 1. Sensor address (0xB8 + írás/olvasás) 2. Function Code (0x03 olvasás) 3. Starting address (0x00 vagy is melyik regisztertől kezdődjön az olvasás) 4. Number of registers (0x04 (hő és pára 2-2 byte) hány regisztert akarok kiolvasni) Ez után az eszköz válaszol: 1. Function Code -> 0x03 2. Returns the number of bytes -> 0x04 3. Register 1 -> Pára tartalom felső 1byte 4. Register 2 -> Pára tartalom alsó 1byte 5. Register 3 -> Hőmérséklet felső 1byte 6. Register 4 -> Hőmérséklet alsó 1byte 7. CRC code -> ellenörző kód 2 byte Úgy látom, hogy 100KHz-en lehet csak küldeni a szenzort, ezt eddig nem is figyeltem, én 400KHz-en hajtom, lehet ez volt a gondja.. Elég egyértelműen fogalmaz, jó az adatlapja.. Jól értelmeztem, igaz?
Gyakoroltam élesben, de szerintem nem jó az I2C még mindig..
A többinek a helyén kellene lennie. Ötlet?
Kezdj egy olyannal, ami csak megszólítja az eszközt! Amikor nekem nem akart válaszolni a kütyü, akkor készítettem egy olyan programocskát, ami csak kiír az adott címre, majd tovább lép a következő címre, s ennek az eredményét figyeltem a logic-ban (ciklus 11-től ff-ig, ahol van ACK, ott a cím). Amikor megjött az ACK, meg is volt a cím, ahol beszélgethettem az eszközzel.
Van rá esély, hogy neked is az lesz a gond, hogy a megszólítandó eszköz címét nem jól rakod ki, s ezért nem jön válasz (mint említettem 7bit+read/write bit menjen ki). A hozzászólás módosítva: Aug 22, 2017
Amit látsz az egy nagyon alap megszólítás.
Egy parancsot adok ki: Cím, funkció kód, regisztertől, regiszterek száma: 0xb8, 0x03, 0x00, 0x04 Ez után már csak olvasnék.
Akkor mondom neked még egyszer, amit nem látok a képen:
- cím kiírása az adatvonalra, jelezve, hogy melyik eszközt akarod megszólítani UTÁN visszakapott ACK - a kiadott utasítások utáni ACK Kérlek, próbáld ki, amit írtam és csinálj egy alap címkereső programot, ami végigszalad neked a lehetséges címeken! Ha ott jön ACK, akkor nyertél.
Üdv!
A mellékletben találsz egy jól működő I2C adatfolyamot, neked is hasonlót kellene látni. De ahogy előttem is mondták már, rossz lehet a címzés, mert már a Slave Address kiküldésére is NACK választ kapsz. Vagy kötési hiba van, esetleg rossz az eszköz. Rakj a helyére egy egyszerű EEPROM-ot, hátha az mutat valami életjelet.
Igen ezt én is észre vettem és termesztésen olvastam is a bejegyzésed, de nem kimondottan gyanakodtam erre. Arra gondolsz, hogy ciklusban küldjek ki 0-tól 0xFF-ig címet és amelyikre jön vissza ACK az lesz a helyes cím?
Elvileg az adatlap szerint 0xB8 az eszköz címe.. Csak ez az egy szenzor van a vonalon, meg kellene találnia. De pásztázom és meglátom mit mutat.
Köszi, nekem NAK-ek jönnek vissza. Már a parancs sem ér célba.. Ez lehet a gond.
Szia Bakman!
Egy kérdésem lenne az MCP 23S17-tel kapcsolatban: A1-A3 lábat az egy SPI buszra felfűzött Expandereket lehet címezni? Ezeket fixen tápra és földre kell hozni és a SPI kommunikációban kell a címzés szerint megszólítani a bővítőket? Ekkor mindegyik (egy buszon lévő) expander CS lábát egyben lehet kezelni, vagy külön külön? Mert a címzésnek semmi értelme, ha mindegyiknek van Chip Selectje.
Tulajdonképpen igazad van, de ha a CS lábak is össze vannak fűzve, akkor a kontrolleren spórólsz lábakat és az A0 - A2 címválasztó lábakkal kell beállítani az adott MCP23S17 címét. Gyakorlatilag így egy CS lábbal nyolc MCP23S17-es IC tudsz vezérelni, különben nyolc CS lábat kellene használnod. Kicsit szokatlan a dolog SPI kapcsolat esetén de igazábol van értelme.
A hozzászólás módosítva: Aug 23, 2017
Ezért vagyok ennyire értetlen, mert I2C-nél oké a címző lábak. Ráadásul az adatlapban egy ábrán van ábrázolva az S17, meg a 017. Kénytelen voltam egy csomó példát keresni, de mindenki leteszi GND-re. Meg kevés helyen van egyszerre több használva.
OK. Akkor jól gondoltam. Köszönöm a megerősítést.
Ugyan az a szerepük, mint az I2C kommunikációnál.
No mérges lettem már, hogy nem működik és feltettem egy I2C memóriát.
Teszteltem és jó a kommunikáció, már csak a chip lehet hibás vagy a bekötés. De 20szor néztem át és ha a memóriát jól kötöttem fel, akkor ezzel sem lehet nagy probléma.. Sanszos amúgy, hogy a szenzor hibás, vagy én tettem tönkre vagy hibás volt eredetileg is.
Üdv!
Hogyan tudom a PIC-re feltölteni a programot?MPLAB IDE BEN majd a fordító programban (IPE) kiválasztottam a .hex fájlt ,a PICKIT3 hoz is csatlakozott.És mikor rá akarom tölteni kiad egy figyelmeztető ablakot hogy "Ellenőrizze hogy MPLAB IDE-ben kiválasztott eszköz megegyezik-e fizikailag a hibaakereső eszközzel.Ha 5V-os eszközt választ amikor egy 3,3V-os eszköz csatlakoztatva van az eszköz károsodhat amikor a debugger ellenőrzi az eszközazonosítót." +egy hibaüzenet ír hogy nem tudja megállapítani a VDD célfeszültségét és a célkészülék nem található. Hol ronthattam el a dolgokat?
Vagy az lehet a hiba hogy nem adtam a microcontrollernek 5 voltot?
Sziasztok!
Előre is elnézést kérek, mert nem értek a témához, megkért egy ismerősöm, hogy segítsek. Amit meg kellene oldanom: PIC16F877 -ről megszólítani a 34 -es ID -vel rendelkező eszközt, amely LIN hálózaton van. Olvasni tudom a PIC -ről amit küld az eszköz LIN -en keresztül, viszont a küldés nem megy. Nem igazán tudom, hogy kéne megvalósítani a sync break -et. Esetleg tudtok vmi támpontot adni? (Synch break marks the start of a message and has to be at least 13 dominant bits long including start bit. Synch break ends with a “break delimiter” which should be at least one recessive bit.) Az olvasást Usart_Init, Usart_Data_Ready, Usart_Read -el teszem mikroBasic v6.0 -ban (az USART -ot amúgy a mikroBasic 7.10 -ben már nem találtam). Próbáltam az AN1099 source code -ot letölteni de sajnos 403 -at, dob, nincs meg esetleg vkinek? ( LIN 2.0 Compliant Driver Using the PIC16FXXX Family Microcontrollers)
Végül csak össze jött.
Nem volt semmi baja csak valamiért 2szer kell a parancsot elküldeni és utána már működik rendesen a lekérdezés.
Igen ez meg van, de a hivatkozott source code -ot nem lehet letölteni:
For source code please see the LIN Software Libraries page Bővebben: Link AN1099 Description - AppNote
A PICKIT3 nem ad automatikusan tápot a PICnek azt be kell kapcsolni, az IPE-ben, vagy adni kell neki külsőleg tápot. Az ipeben a settings menü advenced mode power opcióban.
A figyelmeztetés mindig meglejenik, bár a PIC típusát kiválasztva az IPE meg az IDE is tudja mekkora fesz kell a PICnek beállítani, de nem garantálja, és nem is életbiztosítás, neked tudnod kell, hogy mekkora táp kell a PICednek és ellenőrizni, hogy az van-e beállítva mielőtt bekapcsolod. Ha zavar a figyelmeztetés kikapcsolható, de a kérdésedből ítélve jobb ha figyelmeztet.
Beállítottam a power opcióban a feszt mos már rátudtam tölteni a programot de a PIC nem csinál semmit. 8db led van kötve a D portjaira és ezt akartam villogtatni,de semmit sem csinál.Hol keressem a hibát?
Beírod a segítőtársadba (Gooooogle) "microchip an1099 zip" és máris megvan a forrás...
PIC típus, kapcsolási rajz, saját program?
Kicsit bővebben.
A target feszültséget nem célszerű 5.00V -ra állítani, mert annyit nem tud kiadni a PICkit3 és a visszamérésnél hibát jelezhet. Mivel a feszültség csak 0.25V -onként állítható, a 4.75V -tal lehet próbálkozni. Egyes típusoknál a törlés min. feszültség igénye 4.70V...
A pic-PIC16F877A
a kapcsolástés a programot a videóból szedtem:https://www.youtube.com/watch?v=K0fcVWey-dU
A MCLR és a Vdd közé 10k ellenállás, a Vss és a Vdd közé mindkét oldalon egy-egy 100nF kerámia kondenzátor kell.
|
Bejelentkezés
Hirdetés |