Fórum témák

» Több friss téma
Fórum » PIC kezdőknek
 
Témaindító: Placi84, idő: Okt 3, 2005
Témakörök:
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Lapozás: OK   1218 / 1225
(#) proli007 válasza Pali79 hozzászólására (») Szept 23, 2025 /
 
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
(#) Hp41C válasza Pali79 hozzászólására (») 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.
(#) Hp41C válasza Hp41C hozzászólására (») Szept 23, 2025 / 3
 
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
(#) szSzilard hozzászólása Okt 16, 2025 /
 

Broken Breakpoint hibakereséskor

Sziasztok!

Miért nem aktív a töréspont?

Köszönöm.
(#) Bakman válasza szSzilard hozzászólására (») Okt 16, 2025 /
 
Ha a State nevű változót nem használod máshol, akkor nagy valószínűséggel a teljes

  1. State = state+1;

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.
(#) lóri hozzászólása Okt 19, 2025 /
 

Memória mentése

Sziasztok!

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)?
(#) benjami válasza lóri hozzászólására (») Okt 19, 2025 / 1
 
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.
(#) lóri válasza benjami hozzászólására (») Okt 19, 2025 /
 
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.
(#) Bakman válasza lóri hozzászólására (») Okt 19, 2025 / 2
 
É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
(#) lóri válasza Bakman hozzászólására (») Okt 19, 2025 /
 
Köszönöm neked is!
Hát, már kész a nyák és be van ültetve.
Mcp23016 portbővítők vannak rajta.
(#) István_2 válasza lóri hozzászólására (») Okt 19, 2025 / 1
 
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.
(#) benjami válasza lóri hozzászólására (») Okt 19, 2025 /
 
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.
(#) lóri válasza István_2 hozzászólására (») Okt 19, 2025 /
 
Köszönöm. Később még jó lehet ez is.
(#) Saggitarius válasza lóri hozzászólására (») Nov 1, 2025 / 1
 
Mekkora memoria teruletet kellene menteni? Ha nem tul nagy akkor alkalmazzal FRAM-ot. (gyors, kis energiaigenyu, szinte elnyuhetetlen 100 bill I/O muvelet)
(#) Veteran hozzászólása Nov 18, 2025 /
 

STC12C5204AD-ben módosítani a programot

Sziasztok!
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?
(#) kaqkk válasza Veteran hozzászólására (») Nov 18, 2025 /
 
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
(#) Veteran válasza kaqkk hozzászólására (») 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?
(#) kaqkk válasza Veteran hozzászólására (») Nov 18, 2025 /
 
Nem ... ez ezekszerint tényleg nem pic .
A hozzászólás módosítva: Nov 18, 2025
(#) Bakman válasza Veteran hozzászólására (») 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.
(#) zenetom válasza Veteran hozzászólására (») Nov 18, 2025 / 1
 
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.
(#) proli007 válasza zenetom hozzászólására (») Nov 18, 2025 /
 
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.
(#) zenetom válasza proli007 hozzászólására (») Nov 18, 2025 /
 
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!
(#) sonajkniz hozzászólása Nov 28, 2025 /
 

PIC EEPROM

Sziasztok!

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?
(#) Hp41C válasza sonajkniz hozzászólására (») Nov 28, 2025 / 1
 
DS41441B-page 333:
Data EEPROM Memory
D116 ED Byte Endurance 100K — — E/W -40°C to +85°C
(#) sonajkniz válasza Hp41C hozzászólására (») Nov 28, 2025 /
 
Mint említettem, az angol tudásom igen hiányos.
ez nekem nem mond semmit.
(#) Hp41C válasza sonajkniz hozzászólására (») Nov 28, 2025 / 1
 
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.
(#) sonajkniz válasza Hp41C hozzászólására (») Nov 28, 2025 /
 
Az eszembe sem jutott, hogy megkérdezzem az AI-t.
Köszönöm a válazt.
(#) Lamprologus válasza sonajkniz hozzászólására (») Nov 28, 2025 /
 
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!
(#) Bakman válasza sonajkniz hozzászólására (») Nov 28, 2025 /
 
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.
(#) LazarAttila hozzászólása Dec 1, 2025 /
 

16F872 égetése

Sziasztok, 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?
Következő: »»   1218 / 1225
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem