Fórum témák
» Több friss téma |
Hello! Esetleg zéró vizsgálat előtt maszkold ki a szükségtelen biteket. (AND) Akkor tudni fogod hogy az tényleg nulla és nem valami tetszőleges érték.
A hozzászólás módosítva: Szept 23, 2025
Nem az ugrás kiváltásával lesz itt a gond, hanem az incfsz egy RMW művelet, a tstfsz nem. Az eredmény valahol a kontroller belsejében keletkezik az incfsz esetében, míg a tstfsz -nél az operandus alapján dönti el, hogy ugrik vagy sem. Ebből már ki is jöhet egy kis eltérés.
Ilyen esetben az is kérdéses, hogy egyes silicon revision mellett működni fog, egy másokon már nem. Jobb lenne a maszkolást beletenni - örök élet és egy nap / bármely megvalósításon működnie kell majd.
Még jobban végiggondolva:
EEADRH értéke legyen 0x3. Az incfsz EEADRH,f végrehajtása az alábbi: - beolvassa az EEADRH regiszter értékét oparandusként, - az ALU növeli az értékét és beállítódnak a flag bitek is. - kiírja az értéket az EEADRH regiszterbe. Az utolsó lépésben 0x4 -et ír az EEADRH regiszterbe (hiszen más regiszterrel is végrehajthatjuk), de csak a két alsó bitje "marad meg" viszont az ALU a 0x04 alapján állítja be a STATUS regiszterben a Z bitet. Azaz az eredmény nem lett nulla. z=0 A tstfsz EEADRH az első lépést ugyan úgy végrehajtja, de 0-val komparál az ALU. Ez eredmény szerint beállítja a Z bitet. Itt már Z értéke 1 lesz. A hozzászólás módosítva: Szept 23, 2025
Broken Breakpoint hibakereséskorSziasztok!Miért nem aktív a töréspont? Köszönöm.
Ha a State nevű változót nem használod máshol, akkor nagy valószínűséggel a teljes
sort eldobja az optimalizáló algoritmus, mert hát minek is pörögni a semmin. Ezzel a töréspont is elveszik. Lehet, hogy nulla szintű optimlizálásnál megmarad, de nem biztos, némi rendezgetést úgy is végrehajt. Memória mentéseSziasztok!Van egy bemenetválasztó panelkám relékkel és ledekkel, gombokkal. Hogyan kell megcsinálni, hogy kikapcsoláskor, jegyezze meg az utolsó állapotokat? Van valami regiszter, ami figyeli a feszültséget, vagy annak csökkenését (BOR), vagy valami (és akkor gyorsan menteném az állapotot)? Vagy pedig, kell egy A/D-t használni, mint feszültségfigyelő. Aztán, ha valamennyi alá megy a tápfeszültség, akkor menti a pic eeprom-ját? 18F2620-at használok. Azt mondta a barátom, hogy minden gombnyomás után kéne menteni, de akkor, szerintem túl sokat írkálnánk a belső eepromot. Így viszont csak egyszer kéne, kikapcsoláskor. Ha tudnátok programozni, hogyan oldanátok meg (elvi síkon)?
Az adatlap az adat EEPROM-ra 1 millió törlési/írási ciklust ad meg átlagos élettartamnak. Nem tartom valószínűnek, hogy egy bemenetválasztó nyomógomb ennél nagyobb igénybevételnek lenne kitéve.
Köszi a választ.
Nem tudom. De akkor minden lenyomásnál írja/menti az eepromot? Nem pazarlás/túlzás? Egyszer csinált nekem valaki ilyet, kb.20 éve. Az egyik lábat használta valahogy, és azt figyelte, valami fesz.osztó lehetett.
Én így szoktam, lásd melléklet.
Ha olyan külső eszköz közvetlen csatlakozik a PIC-hez amelyiknek aktív H kimenete van (pl. UART TX vonal), akkor biztos ami biztos alapon azzal is sorbakötve egy 1 kΩ-os ellenállás, mert ott előbb jelenhet meg a feszültség, mint a PIC táplábain. Bekapcsoláskor minden láb bemenet. Ez egészen addig így is marad és pörög magában a kontroller, amíg figyelő lábon minimum 4 V meg nem jelenik (5 V tápfeszültség esetén)*. Ha ez megvan, akkor a láb felügyeletét átveszi egy komparátor és indulhat a program lényegi része. Tápfeszültség elvesztésekor a komparátor generál egy megszakítást, a megszakításban minden lábat bemenetre kapcsolok, mentem az adatokat és RESET(); A 4400 µF viszonylag sok, újraindításkor megeshet, hogy a kondenzátor még életben tartja a kontrollert, viszont a tápegység már nem szolgáltat energiát. Erre az esetre (is) jó a bekapcsoláskori figyelés. * Én újabb kontrollereket használok, azok alacsonyabb feszültséggel is elindulnak, nálad nem lesz elég a 4 V-os küszöb. A hozzászólás módosítva: Okt 19, 2025
Sziasztok !
Egy speciális EERAM megoldás a microchip-től : 47C16 a tápfeszültség megszűnésekor elmenti EPROM-ba , majd a tápfeszültség visszatérésekor visszatölti a memóriába.
Nyilván meg lehet oldani, de az esetedben a panelon levő relék élettartama hamarabb fogja bekorlátozni a készülék élettartamát. Ha mindenképpen minimalizálni akarod az adat EEPROM "kopását", akkor kiegészítő hardver nélkül a legegyszerűbb megoldás, ha csak az utolsó gombnyomás után pár másodperccel mented az EEPROM-ba a beállítást. Ennek mondjuk megvan az a hátránya, hogy ha váltás után azonnal kikapcsolod a készüléket, elveszhet az utolsó beállítás. Másik lehetőség, ha nem mindig ugyanarra a helyre írod, hanem körbejársz a memóriába. Ezt kicsit bonyolultabb megoldani, mert az állapot mellett egy folyamatosan növelt számláló értéket is be kell írni, hogy tudd melyik volt az utolsó kiírt érték. A kikapcsoláskori verziókat meg mások már leírták.
Mekkora memoria teruletet kellene menteni? Ha nem tul nagy akkor alkalmazzal FRAM-ot. (gyors, kis energiaigenyu, szinte elnyuhetetlen 100 bill I/O muvelet)
STC12C5204AD-ben módosítani a programotSziasztok!Azt választottam, hogy "Kezdőknek". Ti itt ahogy beszélgettek, részemről nem érthető, így ennél is kezdőbb vagyok. Kérdésem: Van egy nemesvakolat szóró gépem, aminek a vezérlésében egy STC12C5204AD van. Van lehetőség kiszedni belőle a programot, módosítani, és visszatölteni? Vagy hagyjam a dolgot és használjam ilyen szarul kitalált módon?
100% hogy olvasásvédett , esélyed sincs kiolvasni nemhogy módosítani . Maximum egy új programot lehetne írni és beleégetni de az nagy valószínűséggel egy elég hosszú procedúra lenne . (beégetés-próba-módosítás-beégetés .stb ) Én még abban sem vagyok biztos hogy egyáltalán pic-e ..
A hozzászólás módosítva: Nov 18, 2025
Annyit találtam, idézem: ez az MCU támogatja az ISP programozást UART-on keresztül.
Ez megválaszol neked valamit?
Nem ... ez ezekszerint tényleg nem pic .
A hozzászólás módosítva: Nov 18, 2025
Maximum annyit, hogy könnyű az elkészült programot beletölteni. Mikrokontroller ez is és a PIC is, de nagyon sok különbség van a kettő között. Természetesen vannak közös pontok, de nem ez a lényeg.
Olvasni szinte biztosan nem lehet a benne lévő programot. Ha lehetne is, nagy valószínűséggel egy agyrémmel érne fel a módosításta. Ha nem bonyolult masináról van szó, sokkal egyszerűbb új programot írni, de az is hosszadalmas lehet a tesztelések miatt. Ha elárulod az ország melyik környékén élsz, talán akad vállalkozó szellem.
Szia,
Ez egy teljesen más gyártmányú mikrovezérlő, mint a PIC. Gyári oldal, adatlap. Idézet: „fully compatible instruction set with industrial-standard 80C51 series microcontroller” Ez annyiból viszont jó hír, hogy a 80C51-el kompatibilis, ami eléggé elterjedt ha jól tudom. Bár van itt is topikja, de eléggé üres. Ahogy a többiek írták, a gond inkább azzal lenne, hogy valószínűleg nem lehet a programot kiolvasni belőle, sanszos hogy kódvédett. Egy próbát megérhet persze, a linkelt topikban lehet tudnak ezügyben segíteni. A kiolvasás után csak a csupasz gépi kódot kapnád, amit vissza kell alakítani valamely disassembler segítségével. Szóval assembly szintűre vissza lehet fejteni, ha sikeres a kiolvasás. És akkor utána még meg kell érteni hogyan működik a program, aztán azt módosítani. Háát elég elszántnak/időmilliomosnak kell lenni, hogy ezt valaki megcsinálja.
Hello! Ez sajnos így igaz. Még ha meg is van a kód visszafejteni nem egyszerű dolog. Pedig én a 8048-hoz még egy disassembler programot is hozzá, amivel ki tudtam kerülni a táblázatokat. Mert ha ráfut egy táblázatra, eltéveszti a fordítást, lévén, hogy több byte-os utasítások is vannak és a táblát programnak nézve rossz lesz a fordítás.
Egy 2k programot fejtettem vissza és a visszafejtést újra assemblálva vissza jött az eredeti kód. És még sem volt teljesen jó. Arról nem beszélve, hogy valakinek a gondolkodását, szokásait megfejteni nagyon nehéz. És ha eredetileg nem ASM-ben volt írva, hanem valamely magas szintű nyelven, még reménytelen a helyzet, mert az modulokat használ.
Hú na igen, párszor belenéztem a magasabb szintű nyelvek milyen assembly-t generálnak (máramelyiknél volt ilyen), és erősen pointerekre épített a kód. Nem hiába írja is sok PIC adatlap a C optimized instructions részt..
Na azokat átlátni... Idézet: „Egy 2k programot fejtettem vissza” Le a kalappal! PIC EEPROMSziasztok!Hiányos (majdnem semmi) angol tudásom miatt nem tudom kisilabizálni a PIC12F1840-es adatlapjából az engem jelenleg legjobban érdeklő adatot. Meg tudná valaki mondani, hányszor lehet újraírni az EEPROM-ot?
DS41441B-page 333:
Data EEPROM Memory D116 ED Byte Endurance 100K — — E/W -40°C to +85°C
Mint említettem, az angol tudásom igen hiányos.
ez nekem nem mond semmit. Idézet: „Data EEPROM Memory” Szerintem ezt nem is kell fordítani. Idézet: „Byte Endurance” Az első szót ebből sem. Endurance -- Tartósság 100K lefordítva 100000 újraírást jelent Hmm. Az online fordítók és a magyarul is tudó AI korában.
Az eszembe sem jutott, hogy megkérdezzem az AI-t.
Köszönöm a válazt.
segítek:
Adat EEPROM memória D116 ED bájt élettartam 100K — — E/W -40°C és +85°C között azaz 100.000 Pedig én sem tudok angolul, de ha már volt valaki olyan kedves, hogy bemásolta ide akkor: kijelöl, jobb egérgomb, fordítás magyar nyelvre ... és láss csodát!
Talán érdekes az is, hogy 1 millió írási művelet után érdemes a teljes EEPROM területet frissíteni.
Természetesen a szám a teljes területre vonatkozik, összesítve.
16F872 égetéseSziasztok, keresek valakit Győrben aki bele tudná égetni a 16F872 típusú PIC mikrovezérlőbe az ICSP módhoz szükséges kódot. A kód megvan, hardver problémával küzdök. PICKIT3-at vásároltam. Hiba volt? |
Bejelentkezés
Hirdetés |












