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!
![]() |
Bejelentkezés
Hirdetés |