Fórum témák
» Több friss téma |
DCF77 - 16F628A - TPIC595Szevasztok!Ez itt álmaim órája: végtelenül egyszerű, mégis atom-pontos. Többször megépítettem, szépen működik. Sajnos LCD-kijelzős, ami óriási hiba! Szeretnék valami könnyebben leolvasható 7-szegmensest, például Numitron-t, vagy LED-et. Ugyanakkor viszont NEM szeretem a multiplex vezérlést, így Vicsys Overkill Nixie órája nem jöhet számításba. Legjobb megoldásnak a Shift-regisztert tartom, például a TPIC595-öt. Pali79 bináris órája tartalmaz egy gombelemes megoldást is, áramszünet esetére. Ez is egy nagyon jó ötlet, mivel a DCF jel beolvasása néha hosszú ideig tart, nálunk viszont gyakoriak az áramszünetek. Ezen a ponton zsákutcába kerültem, mert nem tudom átírni az ASM programot! Tehát keresem azt a vállalkozó kedvű fórumtársat, akinek ideje és tehetsége volna hozzá, hogy ebben támogasson. Csak a program módosításában, mert a hardver nem probléma. Úgy gondolom, hogy a részleteket jobb volna privát üzenetekben tisztázni, azután ha már működik az óra, akkor egy cikkben tenném közzé a végleges megoldást. Ugyanis hiába kerestem példákat a Shift-regiszterek ASM programozására 16F PIC-hez, legtöbbször csak C és az is Arduino-hoz érhető el. Éppen ezért kérek segítséget ilyen formában, mert egyrészt a működő ASM programot szeretném megérteni, másrészt azoknak is átadni, akik hasonló megoldásra vágynak. Az eredeti program és kapcsolás Uwe Nagel munkája, amit Topi magyarított.
A 74HC595 hasonlóan vezérelhető, mint a TPIC595. Rá található példa assembly -ben is.
Using 74HC595 to expand output pins of a PIC microcontroller: Assem... code
Köszönöm válaszodat! Bár a fotókon nem látható, de ezzel 5 éve már foglalkoztam egyszer. Sajnos ez csak egy példaprogram, fogalmam sincs, hogyan alakíthatnám át az LCD kijelzést.
Szia!
A programban az alábbi rész írja ki az LCD -re az időt:
A dispStd az órákat, dispMin a perceket és a dispSec a másodperceket tartalmazza 2 difit BCD formában.
A kiírás két részből áll. Előbb az adatokból a felső nibble-t alakítja ASCII karakterré, beírja az LCD -re (call write_byte) majd az alsó nibble-vel teszi ugyanezt. Ha át akarod írni TPIC595 -re, akkor előbb azt kellene eldönteni, hogyan csatlakoznak a kijelzők a shift regiszterre. Idézet: „Mi a baj a multiplexel?” Zavar a vibrálás. Vezetés közben is nagyon kellemetlennek tartom, ha az előttem haladó kocsi LED-es lámpái vibrálnak. Természetesen ezt csak olyankor tapasztalom, amikor megmozdítom a szemem. No de nem nézhetek állandóan ugyanabba az irányba. ![]() Ugyanakkor a Nixie csövek esetén műszakilag sem ajánlott - legalábbis ezt olvasom mindenhol.
Szia!
Nagyon szépen köszönöm fáradozásodat, ez értékes segítség! Előbb megpróbálom úgy átalakítani a mintaprogramot, hogy egy hétszegmenses kijelzőre küldje ki a 0-9 számjegyeket. Ennek tesztelésére van egy nagyon jó "univerzális" panelem (mellékelt kép), amit egy évvel ezelőtt egy másik projekthez készítettem. Amint látható, 18-20-28 lábú PIC-hez is jó, illetve a kimenetet is többféle módon lehet variálni (csak 74595, vagy ULN..., vagy UDN..., illetve szükség esetén előtét ellenállásokkal). Ezután már "csak" azt kell kitalálni, hogyan küldhetek ki 6 digitetet és végül jöhet Uwe Nagel programjának átalakítása az általad küldött segítség alapján. Köszönöm!
6*8 bit + latch és már készen is van
Ha nem sikerül szólj segítek ... A hozzászólás módosítva: Feb 16, 2025
A bináris órám is multiplex. Azóta megcsináltam 7 szegmenses változatban is. Megnéztem szimulátorban a bináris másodpercenként 32300-szor, a 7 szegmenses, 193-szor villan fel 1 másodperc alatt. Nem hinném, hogy bármelyiket is észrevennéd.
Nekem is hiába mondták hogy finom a spenót sok vas van benne mégis útálom. Ha nem szereti ne akard rábeszélni
Dehogy akarom én rábeszélni. Felőlem aztán olyan órát gyárt magának amilyet akar.
Csupán megállapítottam, hogy szerintem egy közel 200 Hz-es villogást nem lehet észrevenni.
Ha éppen interferál egy másik hasonló frekvencián működő LED-el akkor azért elképzelhető, hogy zavaró
Szia!
Újabb kérdés merült fel Uwe Nagel programjával kapcsolatban. Az nagyon szép, hogy Uwe több PIC-re is felkészítette a programot, de hogyan választhatok ki ezek közül egyet, mondjuk a 16F628-at? Megpróbáltam lefordítani, de 597 hibát jelzett, amelyek közül az utolsó az volt, hogy nem definiáltam a PIC-et. Gondolom a "maradék" 596 ennek egyenes következménye.
Mivel próbálod fordítani?
Ha direktben akkor parancssorban paraméterként adod meg. Ha "normálisan" csinálsz projekt-et, akkor a projekt létrehozásakor adod meg a pic tipust.
Szia!
Ebben a kódrészben választja ki a kontroller típusát.
Ha készítesz egy project állományt a fordításhoz, abban megadod a típust pl: PIC16F628. A fordítónak ekkor a környezet átad egy szimbólumot __16F628 névvel. A fenti kódrész a kapott sziblólumot összehasonlítja azon típusokéval, amira a program fel van készítve. Apropó ki kellene egészítani a 16F628A típussal:
Köszönöm válaszodat!
Igen, direktben fordítok, tehát Jegyzettömbbel szerkesztem a forrást, majd rádobom az MPASMWIN programra. Viszont közben eszembe jutott a kézenfekvő megoldás: egyszerűen beírom a program elejére a "PROCESSOR 16F628" sort. Így már hibátlanul lefordítja.
Szia!
Köszönöm részletes és alapos válaszodat! Sajnos, a project állomány nekem kínai. Pipi-nek adott válaszomban írtam le saját megoldásomat. De az #ifdef-ek alapján számomra is egyértelmű volt, hogy így állítja be a programot a kiválasztott processzorhoz. Viszont jó, hogy felhívtad figyelmemet a 628A-kiegészítésre. Ugyanis a későbbi terv, a 16F628 után a 12F629. Uwe erre is írt programot a Pragotron órához, tehát van honnan ötleteket meríteni. Szerintem egy ilyen alkalmazáshoz bőven elegendő a 8 láb és a belső órajel is. Fő, hogy minél egyszerűbb, de atom-pontos legyen!
MpLab 8.10 leírás magyarul
Jó régi, de használható a 8.92 -re is. A 22. oldaltól olvashatól az új project létrehozása. Ha kész a project, már csak két dolgot kell beállítani: - Az ablak közepén a Debud módot át kell állítani Release -re. - Az első fordításkor megkérdezi, hogy milyen kódot fordítson. Absolute -t kell választani. Másik érdekes rész a szimuláció. Próbálgathatod a programot mielőtt beégetnéd. Mintha belelátnál a kontrollerbe.
Köszönöm fáradozásodat!
Kétségtelen, hogy egyszerűbb magyarul (bár nekem az angollal sincs gondom). Viszont vénségemre nem akarok már ilyen bonyolult dolgokba kezdeni, maradok a megszokottnál.
Sikerült megoldani. Működik, jó lett! Köszönöm a Közösségnek!
Mesterséges inteligencia C kódSziasztok ,kipróbáltam a mesterséges inteligencia C kód írási képességét.A fealadat az volt hogy : pic 16f819 microprocesszor , az RA0 bement aktív alacsony állapotában kapcsolja be az RB3 kimenetet. Ezt produkálta:
Lefordítottam HEX.re és betöltöttem. NEM MŰKÖDIK. Ránézésre jó lehetn , vajon mi a hiba benne ? Sanya A hozzászólás módosítva: Feb 28, 2025
Moderátor által szerkesztve
Adatlap, 5.1-es pont:
On a Power-on Reset, the pins PORTA<4:0> are configured as analog inputs and read as ‘0’.
Ugyan nincs használva a delay_ms függvény, de ha lenne is, valószínűleg az sem működne. A for ciklusokon belül nincs semmi, az optimalizásás során a fordító egyszerűen kidobja ezeket a részeket, mert minek pörögni a semmin.
Elnézést, ez a helyes:
Köszönöm hozzáadtam a ADCON1=0b0110; utasítást .
Így már kezeli a bementet. Szuper Sanya pic18f15k80 beágyazott webserver változó értékadás problémaSziasztok!Segítsetek nekem légyszi, hogyan lehet megoldani, hogy egy pic18f25k80 és esp8266 wifi eszköz, beágyazott webszerverben, micro c- nyelvben , a html codban megadni a pic által kezelt változó értékét? konkrétan a lenti kódban szeretnép a pic analog bemenetén mért értéket hozzáadni az AN1 változóhoz. "<script> var AN1 ;</script> <script>document.write(AN1);</script>"
Nem ismerem az adott környezetet és hogy mire szolgál a weblapon a JS kód, de a html oldal változó részeit futás közben, a html oldal lekérésekor szokták előállítani. Egy változó megjelenítéséhez nem kell JavaScript, csak be kell szúrni a kívánt helyre az oldalon.
Ha ez a string, amit mutattál, erre a célra szolgál, ez lesz visszaadva egy függvényben az oldal tartalma, html kódjaként (esetleg head és body tag-ek közt, amik már talán most is léteznek az előző és következő sorokban), akkor printf()-et érdemes használni, ami az aktuális értéket szöveggé, vagyis stringgé alakítja). Például:
Nem tudom, milyen formátumban van a hőmérséklet, a fenti függvény előjeles egész számként fogja kiírni az AN1 értékét, de ez egyáltalán nem biztos, hogy helyes. Tehát pl. ezt is be lehet szorítani egyetlen sprintf-be, csak legyen elég nagy a buffer, és persze sortörések nélkül, csak így olvashatóbb. A magyar ékezetek meg valószínűleg a Celsius fok-karakter is rendben lesznek, ha a szövegszerkesztő is UTF-8-ban menti a fájlt:
A belső idézőjeleket úgy mondják, hogy "ki kell escape-elni", vagyis egy-egy backslash karaktert eléjük rakni, ahogy a példában van. A hozzászólás módosítva: Márc 8, 2025
Szia, köszönöm a segítséget, de nem bírok vele.
az 5.sorban kéne kijönnie a"<script> var AN8 = "INT érték" </script>"kodnak, de nem jön. ez a kodrészlet : "Send_Web_Page (head, ch_id, 0); sprintf(buff,"<script> var AN8 = %d </script>", sziv_be_h); Send_Web_Page (buff, ch_id, 0); Send_Web_Page (indexpage, ch_id, 1); " ez jön ki a webserverről: "<HTML> <HEAD> <title>Villany Kaz�n</title> </HEAD> 7n%� <BODY style="background-color:powdergray;"> <form name="put" method="get"> <h1 align=center style="color:red;background:yellow;">Olymp f�t�s vez�rl�</h1> <center> <tr>"
Úgy néz ki, az a "7n%�" lehet az sprintf kimenete, ami a head és a body közt van. Ez leginkább konstans string - nem konstans string probléma lehet, hogy a közelebbről meg nem határozott Send_Web_Page függvény, amit a weben sem találtam, tehát nyilván saját, mit képes feldolgozni, így ennyiből nem tudom megmondani.
Itt vannak a fájlok, sajnos nem én írtam őket
Ezt nem vállalom - nem erről szól a topic, másfelől nem az van a fájlokban, mint amiről beszéltünk, ill. amivel kezdted. Az alábbi hívások mindenesetre biztosan nem jók, ez nem hiszem, hogy lefordul, mert a karakter és a string két külön típus:
|
Bejelentkezés
Hirdetés |









Ha nem sikerül szólj segítek ...
Csupán megállapítottam, hogy szerintem egy közel 200 Hz-es villogást nem lehet észrevenni.





