Fórum témák
» Több friss téma |
Üdv!A DS18B20 hőmérséklet érzékelőt próbálgatom , feléleszteni több kevesebb sikerrel.Sikerült a kommunikációt létrehoznom , csak annyi a baj , hogy valamiért néha ugrál az érték a hétszegmenses kijelzőn.Van amikor beáll 25 fokra de van amikor 05-öt mutat és így ugrál.A kódomból a részletet mellékeltem
A timer 0- val multiplexelem a kijelzőt.Köszönöm előre a segítséget!
Tégy fix értéket a tempL-be és tempH-ba, akkor kiderül, hogy olvasási vagy feldolgozási hiba ( de minden egyéb függvényt hagyj meg!) !
Ha fixet írok be akkor jól működik tehát akkor az olvasással van probléma.Mellékeltem a ds1820-as függvényeket is.
A Write_18B20 -ban, a 25. sorban késleltetést vidd fel 10us -re, a 27. sorban csökkentsd le a késleltetést 50 us -re.
A Read_18B20 -ban, a 45. sorban késleltetést vidd fel 10us -re, a 46. és 47. sorok közé tegyél be egy 40us -es késleltetést, a 48. sorban pedig csökkentsd le a késleltetést 10 us -re. A hozzászólás módosítva: Jan 2, 2016
Most így módosítottam a kódot , de így sajnos folyamatosan csak egy 5 - ös számjegyet mutat a kijelzőn.Ezt az 5 - ös értéket , akkor írja ki szerintem , hogyha valamiért nem tudjak kiolvasni az értéket.Mert még mielőtt módosítottam a kódot úgy , ahogy leírtad akkor ugrált a kijelzés , hogy hol a jó értéket mutatta , hol átugrott 5 -ös értékre , de ha kihúztam a ds18B20-at a foglalaltból , akkor folyamatosan 5 - ös értéket mutatott.Most is ezekkel a módosításokkal végig egy 5 -ös számjegy van a kijelzőn úgy , hogy most benne van a foglalatba a hőmérő.
Sziasztok!
Lcd - re való kiírást szerettem volna gyakorolni,MikroC ben ,egy 16F628A -val meghajta a kijelzőt .A fordító gond nélkül ,lefordította a megírt programot .De a PICkit2 már nem akarta beleégetni a hex.fájlt . A következő hibaüzenetet írta ki " Verification of configuration failed ". A PIC jó, egyéb programot minden gond nélkül bele tudok égetni.Mikor importálom a hex-et,a pickit2 jobb felső sarkában megjelenik egy "code protect"üzenet a configuráció alatt. Van valami ötletetek ,merre keressem a hibát? Elöre is kösz! A hozzászólás módosítva: Jan 2, 2016
A 32. sorban miért 50 us a késleltetés ?
A 34. sor elé is kell egy 10 ms késleltetés. Adatlap: Figure 14 és 15... A hozzászólás módosítva: Jan 2, 2016
A PICkit2 programozás során végrehajtott műveletei:
Azonosítás, törlés, program írása, eeprom beírása, nem írásvédett konfiguráció beírása, ellenőrzés (program, eeprom, konfiguráció), írásvédett konfiguráció beírása. Egy írásvédett program beírása sikeres, mert az ellenőrzés még nem írásvédett konfigurációval történik. A későbbi ellenőrzés már sikertelen. A konfigurációban kapcsold ki az írásvédelmet.
Sajnos nem nagyon értem azokat az idődiagramokat , ezt a kódot is neten találtam.
Köszönöm!Azt már észre vettem , hogy akkor működik rendesen , hogyha letiltom a timer interruptot addig , ameddig a kommunikáció zajlik a hőmérő szenzorral , csak akkor az a baj , hogy nem tudom multiplexelni a hétszegmenses kijelzőt.750 ms-ot várni kell a hőmérséklet konvertálásra a ds18B20-nál , és ez nagyon lefoglalja a kontrollert.Vajon hogy lehetne megoldani ezt a problémát , hogy legyen kijelzés a kijelzőn , úgy , hogy a timer interruptot le kell tiltani?
A hozzászólás módosítva: Jan 4, 2016
Ha az idoablakba nem fer bele, akkor sehogy (nezd meg, mennyi ido alatt tudod kiadni a parancsot, illetve beolvasni az eredmenyt).
A ketto kozotti varakozasra viszont termeszetesen van megoldas, tehat nem kell haromnegyed masodpercet varni a kovetkezo kijelzesig. De mivel a kommunikaciod idoalapu, ertelemszeruen azt nem zavarhatja meg semmi, addig kizarolagos prioritasa kell, hogy legyen.
Az adatlap Figure 14 ábráján van egy Trec adat: 1uS < Trec < végtelen.
Megoldható hogy a megszakítás csak egy-egy "time slot" (egy bit beírása vagy kiolvasása) és a "reset - presence" szekvencia idejére legyen tiltott.
Hat koszonom majd megnezem.Akkor lehet jobban jarnek valami mas megoldassal.Ismer valaki mas fajta homersekket szenzort ami nem one wiren kommunikal?Lehet hogy termisztorral kene megoldani?Az mennyire foglalja le a kontrollert?
Na akkor azt is megnezem hatha ugy meg lehet oldani.Koszonom!
Sikerült megoldani a problémát!Köszönöm a tippet Hp41C!Nagyon sokat segítettél!
Szép napot, Mindenkinek! Azt kérdezném, hogy egy PIC 16F887-es mikrokontrollerből hogyan tudnám kiolvasni a működő programot? Sajnos elfelejtettem, hogy melyiket töltöttem fel. Egy MikroElektronika easyPIC6-osban van, a szoftver MicroC for PIC version 3.2 . Köszönöm a választ.
A hex filét le tudod menteni a PIC-ből MPlabbal. A C file szerintem felejtős.
Bocsi az új hózzászólásért, de mire az előző hozzászólásom módosítottam, nem engedte menteni, kicsúsztam az időkeretből. Bocs.
Ha lehet, viszont én is szeretnék kérdezni. Adott egy 18f4550 PIC . Adott egy encoder (végtelenített potméter). A PORTE.F0 és a PORTE.F1 bemeneteket szeretném a PIC-en használni a encoder dekodolásához. A TRISE regiszter 0b00001111 értéken van. A PIC látja a bemeneten változó jel sorozatot, de az encoder a változómat nem növeli, csökkenti. A mikroC kód a következő:
Miért nem müködik a PORTE 0 és 1 es bitjeivel? PORTB ugyan ezen bitjeivel tökéletesen müködik. Valakinek valami ötlet? Lehet az miatt, hogy a PORTE bemenetei az adatlap szerint ST (gondolom Schmitt trigger) tipusúak, míg a portb Digin (gondolom digitális?). Valammi ötlet?
Szia!
Ha ST bemenet, akkor a magas szint VDD * 0,8 ( 5V nál 4V kell kegalább). üdv.: Foxi
Köszi a segítséget. A bemeneti szint elvileg 0V vagy 5V. Az encoder közepe a gnd-re van kötve, az A pont a PORTE.F0-ra a B pont a PORTE.F1-re. És a két bemenet fel van húzva a VDD-re egy-egy 2k2 ellenállással. Ez így jó nem?
Az A/D és a komparátor ki van kapcsolva?
A PIC konfigurációja a következő:
Van két analóg érték olvasása az AN0-n és AN1-n. Az AD ha nem muszály nem kapcsolnám ki. A komparátor ezek szerint nincs kikapcsolva. Ezt javítom. Kikapcsoltam a Komparátort és az A/D-t próbából. Semmi változás. De azért köszönöm. A plusz kód:
Mplabnak és a PK-nak a programjában is van ilyen funkció. A PK progi egyszerűbb, simán READ parancs. Persze ha be van kapcsolva a védelem akkor nem tudod kiolvasni.
De az csak a hex file tartalma, nem? Abból nem egyszerű (majdhogy lehetetlen) mikroC kódot készíteni. Vagy tévedek?
A hozzászólás módosítva: Jan 4, 2016
Nem tévedsz! Pontosan így van! De a kolléga azt kérdezte, hogy mivel tudja kiolvasni a működő programot. A program az a hex. A mikroC kód az a forráskód. Ég és föld a különbség. Hex-ből forrás(szerűséget) visszafejteni csak assemblybe lehet, de a legtöbb C user azzal nem tud mit kezdeni.
A hozzászólás módosítva: Jan 4, 2016
Köszi. Leírtad pontosan a fogalmakat. Én nem tudtam ilyen szépen (és pontosan) megfogalmazni. Engem a "szoftver MicroC for PIC version 3.2 ." zavart meg. Ebből arra következtettem, hogy a fórumtársunk, csak a C nyelvet érti, így számára a program ebben a formában nem értelmezhető.
Viszont ezúton is bocsánatot kérek, mivel azt feltételeztem alapból, hogy csak a C nyelvet érti. Teljesen igazad van, kedves Pali79.
Köszönöm a választ, közben megtaláltam a programot. Ettől még érdekel a téma, mivel ilyen bármikor előfordulhat. A fogalmakkal tisztában vagyok, annak ellenére, hogy kezdő vagyok. Sajnálom, hogy nem írtam le érthetően, a profik ezt jobban tudják.
Nos a módszer hosszú és fáradságos. Felteszem, hogy egyik program sem aktivizálja a kiolvasásvédelmet.
Lefordítod a szóba jöhető összes micro C programodat, azaz mindegyikből készítesz egy hex állományt. A PICkit2 -be betöltöd rendre mindegyiket és mindegyikre kiadsz egy "Verify" -t. Amelyiknél sikeres a művelet, az volt utoljára beleprogramozva. Ha az adat EEPROM tartalmát változtathatja a program, akkor a parancs kiadása előtt vedd ki a pipát az "Data EEPROM" elötti négyzetből. Nem egyszerűbb a szükséges program beírása. Ilyen gondok megoldására van a UserId nevű terület. Ebbe a 4 memrória rekeszbe egy emlékeztetőt lehet programozni. Kiolvasás után az emlékeztető alapján azonosítani lehet a programot. Idézet: „The user ID locations and the Configuration Word can be programmed and read out regardless of the state of the CP and CPD bits.” A hozzászólás módosítva: Jan 4, 2016
Nem nagyon vágom ezt a C témát, de ha minden igaz az egyes függvények és utasítások sem mások, mint blokkokba foglalt assembly kódok amit hozzáértő emberek megalkottak és ezekből létrehoztak könyvtárakat, ezzel kvázi egyszerűsítve a forráskód megírását. Valóban leegyszerűsíti a programozó életét, mert nem kell annyit gépelni, cserébe nem nagyon tudjuk, hogy pontosan mi is zajlik a háttérben. Örök vita, hogy melyik programnyelv miért jobb mint a másik, de mint ez a példa is mutatja a PIC alapnyelve az assembly, a hex-et csak és kizárólag erre lehet visszafejteni és csak ezen a nyelven megírt programról tudjuk, hogy a PIC éppen mit is csinál. Az egyik kedvenc idézetem egy assembly könyvből:
Idézet: „Amit nem lehet Pascal-ban megírni, azt C/C++-ban meg lehet. Amit nem lehet C/C++-ban megírni, azt Assembly-ben meg lehet. Amit nem lehet Assembly-ben megírni, azt nem lehet megírni!” A hozzászólás módosítva: Jan 4, 2016
|
Bejelentkezés
Hirdetés |