Fórum témák
» Több friss téma |
Idézet: „de nekem komplett működő program kéne, kapcsolási rajzzal” Akkor te abban kérsz segítséget, hogy vegyél egy órát Tessék a segítség A hozzászólás módosítva: Szept 26, 2020
Backman
Tudom hogy tele van a net, de nem idazán akarok abba belefutni, hogy megcsinálom az áramkört, megveszem a drága alkatrészeket, és kiderül, hogy mindent csinál, csak pont azt nem amit kéne. De ha Te nem segítesz, nem gond, de hagyd, hogy esetleg más segítsen benne.
Az első válaszomban már segítettem, hogyan kell kiolvasni az időt a DS3231-ből. Szívesen adok további támogatást de az, hogy én vagy valaki megcsinálja helyetted, nem segítség.
Tipp: nem kell az RTC IC-nek tudnia a riasztási funkciót, azt a kontroller programjában is meg lehet csinálni. Pl. a kiolvasott órát megszorzod 100-zal és hozzáadod a percet. Ha ez az érték egyezik a riasztás időpontjával, amit szintén négy számjegyen tárolsz, akkor mehet a riasztás. 1834 jelentése 18:34, 345 jelentése 3:45 stb. Vagy, ha a kiolvasott óra és a kiolvasott perc egyezik a riasztásban tárolt órával és perccel... Mondok még egy tippet: karakteres LCD kijelzőt ne használj óra gyanánt, nem fogja a célközönség látni a számjegyeket, pláne frissen ébredve az álomból. Idézet: Ez akkor is előfordul (nem feltételes mód, mindig ez van), ha valaki megcsinálja helyetted. Annyi a különbség, hogy van kinek reklamálni emiatt. Ezért kell szinte hajszálpontos leírás, mit szeretnél, különben 66-szor kell módosítani, faragni a programot. Ha te csinálod magadnak, akkor pont olyan lesz, mint amilyet szeretnél. „kiderül, hogy mindent csinál, csak pont azt nem amit kéne” Végül de nem utolsó sorban, a saját készítészítésű rádió szól a legszebben, óra mutatja a legjobban az időt... Várjuk a kérdéseket!
Valami ilyesmire gondoltam.
Itt van alarm is elvileg, még tanulmányozom milyen RTC-re íródhatott, de legalább olyan, amit elképzeltem.
Ebben a programban nincs RTC, a kontroller saját órajele, pontosabban a Timer 0 megszakítás van használva időalapnak.
De ez már az, RTC vel megy.
Azt még nem tudom, hogy Pl az órát hogy tudom mondjuk itt állítani, de nem adom fel a tanulást
Ezt amit ide feltettél Quickset... kár nézned, csak még mélyebb lesz az a kút
Szép összetett progra. Ki fog ezen eligazodni? Milyen kijelzők vannak ezen? Azt látom, hogy van karakteres LCD de valami más is van az RS230(0) makrókhoz láncolva, valószínűleg valamilyen HMI.
Sziasztok
Egy kis segítségre lenne szükségem. Szeretnék egy 18F14K50-et szertnék összekötni egy HMI-vel. Megy a kommunikáció de irdatlan lassan és valamiért nem tudja a HMI értelmezni. Belső órajel elég, nincs szükség az atomórára. Valakinek lenne esetleg egy perce megnézni, hogy mit csesztem el!
Nincs beállítva az órajel. Sem az osccon regiszterrel, sem a beállításokban nincs megadva. Ezt az órajel frekvenciát belső oszcillátorral nem tudja.
Build menü -> Projekt opciók. Mekkora legyen az órajel frekvenciája?
Pár hiba van még a gépezetben.
Ha nem használod az USB modult, kár ilyen kontrollert venni, eleve buksz három lábat. RA0 és RA1 csak bemenetként használható, hiába kötöttél oda LED-et. Ajánlom figyelmedbe a PIC18F14K22-es típust, az is 20 lábú. Extend Instruction Set legyen mindig kikapcsolva, ha tud ilyet a kontroller. Karakteres LCD hazsnálatánál biztosan okoz gondot, a többit nem teszteltem. A hiba megerősítve a MAtrix fejlesztői által is. Hogy ez a Flowcode és/vagy a BoostC hibája, kb. mindegy is. A program, hacsak nem valami extáról van szó, mindig kezdődjön egy kis késletetéssel. A feltétel bekarikázott része soha nem fut le, mert ha t kisebb, mint 24, akkor nem lehet nagyobb, mint 80, a t=0 rész soha nem hajtódik végre. A helyes órajelbeállításhoz kell egy kis C kód az elejére:
A programban az UART sebessége 38400-ra van állítva, ezt tekerd át 9600-ra, ha annyi kell, vagy a HMI-n állítsd át a kommunikációs sebességet 38 400-ra mindjárt az első oldalon.
Most vettem észre, szerintem a parancsok fogadása így nem fog működni a HMI-től. Írd át a programját úgy, hogy minden gombnyomásra csak két karaktert küldjön. Pl. A0 - A9, B0 - B9, C0 - C9 stb. Ez eddig 30 féle utasítás. Az RX makróban pedig ilyesmi legyen, lásd melléklet.
Még nagyon az lején vagyok, csak a régi programokat ollóztam össze.
Hálás köszönet a leírásért és az okfejtésért. Amúgy megmaradt kontroller és szerettem volna felhasználni ha már van idehaza. Amúgy a későbbiekben amúgy is nagyobbat szeretnék de az még odébb van. Jó pihenést, jó éjt. A hozzászólás módosítva: Szept 27, 2020
Köszönöm a segítséget, már majdnem jó. Valamiért csak 3,3V-ról működik, 5V-ról nem csinál semmit.
Mit nem csináltam jól?
Próbált már valaki olyant, hogy a PIC program 4MHz belsőről jár, mellette meg van egy 32KHz -es quarz ?
Flow 8 -ban az oszcilloszkóp valami hardverrel együtt működik csak ?
A Vusb lábra kell egy kondenzátor, 220 nF - 470 nF a GND felé.
Nem próbáltam de nem tűnik űtrechnikának. A másodlagos oszcillátort (Secondary oscillator) kell bekapcsolni és megmondani a Timer1-nek, hogy az órajel onnan jön. Egy trükk van, ha másodpercenkénti megszakítást szeretnél: a Timer 1 számlálóregisztereit fel kell tölteni minden megszakítás után, különben csak két másodpercenként kapsz megszakítást.
tmr1h = 0x80; tmr1l = 0x00; Az órakvarc 23 768 Hz-en működik, a Timer 1 regiszterei viszont 65 535-ig számolnak (2^16).
Közeben a feszültség megoldódott, elnéztem és nem volt a tápUSB GND bekötve rendesen.
Viszont a DS18B20 olvasással van valami bajság, totál fals értékeket dobál és nem tudom mi lehet.
A "gettemp" makrót átírtam egy olyanra, amit régóta használok, próbáld ki. A gyári DS18B20 kiolvasással több bajom volt. Vagy nem működik a CRC ellenőrzés vagy több OneWire portot nem tud kezelni.
A OneWire komponenbsn kikapcsoltam a "Use CRC" opciót, abból is a "saját" van használva. A makróban hiányzik egy értékadás, miszerint mi legyen a 'dsegesz' változó értéke hiba esetén, ezt írdd át valamire hogy tudd, hibás kiolvasás volt.
Köszönöm, már félig működik, már csak valahogy rá kéne vegyem hogy ki is olvassa
A PIC nem olvassa a DS-t. Gyanítom hogy ismét valamit nem jól csináltam.
Ha a mellékelt program nem működik, akkor próbáld másik DS IC-vel, másik kábellel, másik felhúzóellenállással. Én, ha hosszabb a kábel, mint egy méter, a DS lábaira szoktam forrasztani egy 1206-os, 100 nF-os kondit, közvetlen a nyakára. Pont jó a lábtávolság hozzá.
DS csere megvolt (korábban mind a kettő működött), ellenállás megvolt, most 3,3k van épp rajta.
Most jött a 100nF. Ez sem nyert. Szerintem alszok rá egyet és holnap mikor belevágtam a csákányt fogok rájönni hogy megint valamit elcsesztem. A hozzászólás módosítva: Szept 28, 2020
Akassz egy logikai analizátort a 1-Wire vonalra. Az alábbiakat kellene látnod:
1sec.jpg: Az egy másodperc szünet a "DS18B20_0_StartConversion" és a "DS18B20_0_ReadTemeprature" makrók közötti idő. Ennek kb. 1 s hosszúságúnak kell lennie. A szünet bal oldalát nézd meg tüzetesebben, ebben van a mérési parancs. Reset.jpg: A reset időtartam kb. 600 ms hosszúságú. Presence.jpg: 95 - 96 µs. Adatfolyam.jpg: A reset kezdete és az utolsó bit vége közötti időnek kb. 2.4 ms-nak kell lennie. Ha ezek az idők nagyon nem stimmelnek, akkor a kontroller nem 16 MHz-en jár. Próbáld meg úgy, hogy a program elején lévő
A hozzászólás módosítva: Szept 28, 2020
Nem jó valami de nagyon. Mellékelem az olvasást, ez csak hasonlít arra amit neked mutat.
most megmértem, kb 3,3ms A hozzászólás módosítva: Szept 28, 2020
|
Bejelentkezés
Hirdetés |