Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   970 / 1209
(#) Hp41C válasza don_peter hozzászólására (») Aug 22, 2017 /
 
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.
(#) eSDi válasza don_peter hozzászólására (») Aug 22, 2017 /
 
Üdv!

  1. i2c_write1(0x11, 0x34);
  2. i2c_write1(0x22, 0x56);


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.
(#) don_peter válasza eSDi hozzászólására (») Aug 22, 2017 /
 
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?
(#) don_peter hozzászólása Aug 22, 2017 /
 
Gyakoroltam élesben, de szerintem nem jó az I2C még mindig..
A többinek a helyén kellene lennie.
Ötlet?

i2c_2.JPG
    
(#) bbb válasza don_peter hozzászólására (») Aug 22, 2017 /
 
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
(#) don_peter válasza bbb hozzászólására (») 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.
(#) bbb válasza don_peter hozzászólására (») Aug 22, 2017 /
 
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.
(#) eSDi válasza don_peter hozzászólására (») Aug 22, 2017 /
 
Ü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.
(#) don_peter válasza bbb hozzászólására (») Aug 23, 2017 /
 
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.
(#) don_peter válasza eSDi hozzászólására (») Aug 23, 2017 /
 
Köszi, nekem NAK-ek jönnek vissza. Már a parancs sem ér célba.. Ez lehet a gond.
(#) HuG válasza Bakman hozzászólására (») Aug 23, 2017 /
 
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.
(#) Bakman válasza HuG hozzászólására (») Aug 23, 2017 /
 
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
(#) bbb válasza don_peter hozzászólására (») Aug 23, 2017 /
 
Igen, pont erre gondoltam.
(#) HuG válasza Bakman hozzászólására (») 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.
(#) Hp41C válasza HuG hozzászólására (») Aug 23, 2017 /
 
Ugyan az a szerepük, mint az I2C kommunikációnál.

MCP23S17.JPG
    
(#) HuG válasza Hp41C hozzászólására (») Aug 23, 2017 /
 
Köszi.
(#) don_peter válasza bbb hozzászólására (») Aug 23, 2017 /
 
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.
(#) bugyi680 hozzászólása Aug 23, 2017 /
 
Ü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?
(#) bugyi680 válasza bugyi680 hozzászólására (») Aug 23, 2017 /
 
Vagy az lehet a hiba hogy nem adtam a microcontrollernek 5 voltot?
(#) egodzzo hozzászólása Aug 23, 2017 /
 
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)
(#) Tasznka válasza egodzzo hozzászólására (») Aug 23, 2017 /
 
(#) don_peter hozzászólása Aug 23, 2017 /
 
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.
(#) egodzzo válasza Tasznka hozzászólására (») Aug 23, 2017 /
 
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
(#) usane válasza bugyi680 hozzászólására (») Aug 24, 2017 / 1
 
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.
(#) bugyi680 válasza usane hozzászólására (») Aug 24, 2017 /
 
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?
(#) Hp41C válasza egodzzo hozzászólására (») Aug 24, 2017 /
 
Beírod a segítőtársadba (Gooooogle) "microchip an1099 zip" és máris megvan a forrás...
(#) usane válasza bugyi680 hozzászólására (») Aug 24, 2017 /
 
PIC típus, kapcsolási rajz, saját program?
Kicsit bővebben.
(#) Hp41C válasza usane hozzászólására (») Aug 24, 2017 /
 
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...
(#) bugyi680 válasza usane hozzászólására (») Aug 24, 2017 /
 
A pic-PIC16F877A
a kapcsolástés a programot a videóból szedtem:https://www.youtube.com/watch?v=K0fcVWey-dU
(#) Hp41C válasza bugyi680 hozzászólására (») Aug 24, 2017 /
 
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.
Következő: »»   970 / 1209
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem