Fórum témák
» Több friss téma |
Csak egy szenzor van az I2C buszon? Megvannak a felhúzóellenállások az SDA és SCL vonalakon?
Kell-e inicializálni a szenzort? A beírásnál vizsgálod az ACK bit étréket? Valaki válaszol a 0x30 címre (0xC1 0xFF adatsorral), mivel a válaszban van 0 értékű bit.
Elfelejtettél ACK bitet küldeni az első bájt vétele után. (75. sor)
Szia!
Meg tudod légyszi mondani , hogy hogyan kell. Köszönöm szépen! A hozzászólás módosítva: Ápr 1, 2014
Doksi 21. oldal:
UpperByte = i2c_read(ACK) LowerByte = i2c_read(NAK) Ha a master fogad, minden bájt-nál neki kell nyugtázni, hogy megjött az adat. Csak az utolsónál nem. Nálad egyszerű a dolog: fogadottadat=i2c_read(1);
fogadottadat=i2c_read(1);
Átirtam 0-t egyre, de még mindig ertek: 193 at ír. ha kikommentelem az if-es részt (84-99 sor), mert ha nincs kikommentelve az If-es rész akkor meg kijelző nem mutat semmit, és amikor mutat próbálom melegíteni szenzort és végig 193 az érték. Mi lehet a baj?
Igy néz ki kikomenttelve.
MOST TÖRTÉNT VALAMII. Ertek:193 felsősor Alsosor pedig ERTEK: valtozik a decimális szám. Most az a kérdésem, hogy hogy lehet hogy celsius fokot irjon ki? köszönöm a segítséget!! A hozzászólás módosítva: Ápr 1, 2014
Az szép feladat lesz.
![]() Ahogy nézem a doksit, valami egészen trükkös az adatstruktúra. Még jelzőflag-ek is vannak a felső bájtban. Ezt most így hirtelen ki nem bogarászom neked. A doksi 25. oldalán van példaprogram, azt próbáld ki.
Sziasztok!
16f887 komparátor modulját próbálom használni infra megszakításra. Az AN0-án. Belső referenciával. Nem tudom mit csinálok rosszul. Be van állítva a megszakítás a C1IE. Ki is lép megszakításra, De nem követi rendesen az infrát mintha lassaban észlelné. Ugyanakkor a C1OUT hiába van kikapcslva, akkor is bekapcsolja a komparátor kivezetését a kimeneten, sőt az nem is csinál semmit csak mindig 1. Hol ronthatom el? Leheséges egyáltalán amit akarok?
Szia!
Azt, az If-es szintaktikát azt altudnád nekem magyarázni? mert nem nagyon értem. Mert valamiért ha nem kommentelem ki a részt, akkor kijelzőn semmisem jelenik meg, nem értem, de most alsosor végig változik, az érték alapból kb 135, és elmegy 200 ig is ha megfogom. Köszönöm szépen!!!! A hozzászólás módosítva: Ápr 1, 2014
Ha a fogadottadat 4. bitje 1, azaz ha TA < 0°C, akkor lemaszkolja a határátlépéseket és a előjelet jelző biteket és kiszámolja a hőmérsékletet: Temperature = 256.0 - (fogadottadat *16 + (float)(fogadottadat2) / 16.0); Egyébként (nálad erre megy, hiszen a 0xC1 -ben a 4. bit 0) kiszámolja a hőmérsékletet: Temperature = ( (fogadottadat * 16 + fogadottadat2)/ 16.0);
Szia!
Köszönöm, hogy segítesz. A fogadottadatot ha kiiratom az LCD-re nálam egyenlő 193 A fogadottadat2 pedig most alapból 123, ha elkezdem melegíteni a szenzort, akkor a fogadottadat2, 220 ig is felmászik, de a fogadottadat mindig marad 193 Ha a Temperatur képletbe behelyettesitek, akkor mondjuk 193 és 123 as értékekkel: Temperature = ((193*16+123/)/16) = 200 és ez igy még mindig nem vmi jo. Mi lehet még a gond? Köszönöm: Adrián
Temperature = (193 x 16 + 123 / 16)=3095
Ez a kod a MCP9808 adatlapjaban talalhato. A CCS C-ben a i2c_read(1) az i2c_read(ACK), mig a i2c_read(0) az i2c_read(NAK). A hozzászólás módosítva: Ápr 1, 2014
A 193-at 0x1F-fel maszkolni kell, hogy a jelzőbiteket ne számold már bele a hőmérsékletbe, tehát valójában csak 1 marad belőle.
Temperature = 1*16 + 123/16 = 23,6875 C Ez jobban tetszik?
Mennyival több információt ad egy kép.... Ha az MCP9808 A2, A1, A0 kivezetése mind magas szintre van húzva, akkor a címe az I2C buszon 0x3E és nem 0x30. Cím = 0x30 + A2 * 8 + A1 * 4 +A0 * 2. De akkor ki válaszot a 0x30 címre?
Látom már javítva...
Sziasztok!
Még midig a compare módot próbálgatom, most megszakítás nélkül nézem az infrát. Tulajdonképpen negálom és az így vett jelet nézem a pickit2 logikai analizátorával. De az így vett jel semmire sem jó. Nemtudom mivel lehet a baj, de nem hinném hogy ennyire lassú. Megnéztem az adatlapot az a le és felfutó élre 1000 és 600 ns ot ír. A változás érvényeségére 10us-ot. Szerintem jónak kéne lennie, máshol lehet a baj.
Megvan a megoldás a C2RSEL nem volt egyre állítva. De viszont a C2OE hiába van 0-án a CCP2 kimenet mindig világít azaz mindig 1. Tehát nem is követi a C2OUT-ot, de kikapcsolni se tudom közvetlen már a portra írással hogy az 0 legyen.
Megvan ez is a CCP2CON-ban a comparator mód, csak belső beállítás. Mondjuk akkor nem értem minek a C2OE. De mostmár ott veszi az infrát, működik is. Újra szabad a kör megszakításra az RB0.
Üdv!
Kis segítséget kérnék, elakadtam: 18f8720, F6, F4, F3 -as portot hiába teszem 1-be, nincs változás a kimeneten. Van valami kizáró tényező esetleg ennél a típusnál? A "program" amivel a hibát keresem, most csak ezt a 3 portot teszi 1-be, semmi mást nem csinál. Sajnos az adatlapot nem tudom csatolni mert 6 Mega. A hozzászólás módosítva: Ápr 2, 2014
Analóg funkciók. Letiltásuk ld. Adatlap Example 10-6 Bár a kimenetnek működnie kellene. TRISF beállítása?
A hozzászólás módosítva: Ápr 2, 2014
Sziasztok!
Úgy a fórum mint PIC- dolgaiban kezdő vagyok. C nyelvben c18-as fordítót használva, jelenleg pic18f4550 - es PIC szenvedi próbálkozásaimat. Kérdésem az lenne, hol van elrontva - vagy hogy hol adjam meg a mellékelt programnak: LCD-n írja a PIC az a/d konverter értékét - egyszer, aztán megáll. Lehet maga a program szerkezete is javítandó. Valahogy nem boldogulok a ciklus szervezéssel. Ha tudnátok ötleteket adni, én kipróbálom hogy tanuljak azzal is. Köszönöm!
A while(1) ciklus törzsébe (a kapcsos zárójelek közé) kell megadni azokat az utasításokat, amelyeket ismételgetni szeretnél. Most üres a ciklustörzs, tehát nem csinál semmit.
Ha kiíratás van, akkor célszerű egy késleltetést is berakni a ciklusba (a túl gyors villogást sem a szemed, sem az LCD nem tudná követni).
C -ben nézve úgy tűnik nagyjából megvan a hiba, legalábbis úgy néz ki, nem én vagyok stupid. A progi Flowcoddal készül, úgyhogy ott folytatom a hibakeresést. A lényeg, hogy rosszul címzi az F portot a progi.
Köszönöm!
Sziasztok! Az LCD modulok kontraszt és háttér világításának szabályzását, hogy kell megoldani? Talán pwm?
Háttérvilágítás sima 5 volt ellenállással. Vagy pwm + ellenállás ha erősséget is akarsz állítani.
A kontrasztot a gnd és 5V közötti potival tudod állítani, de erre is hallatom pwm es megoldást...
PWM is jó megoldás, de használhatsz valami analóg módszert is. Én csak a háttérvilágítást csökkentem PWM-el, a kontraszthoz poti, vagy maximum (ha indokolt) egy tranyó ami ki/be kapcsolja.
|
Bejelentkezés
Hirdetés |














