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
![]() 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.
![]() ![]()
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: Szo, 21:53
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 |