Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Sziasztok.
Elég rég óta vagyok a fórum olvasója és egy két áramkört segítettetek is már megszülni de feltennék egy valószínü nagyon kezdő kérdést, mindig beszéljük hogy a pic lábához minél küzelebb kel ezt meg azt forrasztani meg kondit meg ellenállást meg ilyeneket. . de ez tulajdon képpen mire is kell??? ezen a videon ahogy nézem az egyik leg egyszerűb pic-es futófény panel van de itt se látok tul sok mindent forrasztva a betáp felöl. Bár látok rajt 10 ellenállást ebböl 8 gondolom a ledek elé, egy a nyomogomb és a pic közé és az a maradék 1 ellenállás meg a pic mellet az a kis kék "légypiszok" amit mindig beszélünk hogy a betáp felél a pichez? Vagy akkor az kell vagy nem ? vagy nem kell de jó ha van ?!?!?! Köszi
Illetve még egy kérdés hogy lehet azt megoldani hogy a bemenet ne egy nyomogomb legyen mint pl az elöbb linkelt videoba hanem egy másik pic vezérelt kimenete?
Köszi
Amit szokás közel rakni a PIC-hez, az a 100nF zavarszűrő kondenzátor a tápon. Ha t9bb csoportban van bevezetve a tép, akkor mindegyik csoportra 1-1db kondi, ezt a tápzavarok kiszűrése miatt minél közelebb kell rakni. Érdemes közel tenni a reset áramkört / reset felhúzó ellenállást is, így kicsi az esélye a véletlen resetnek a különböző zavarok hatására. Ha használsz kristályt, akkor azt is minél közelebb érdemes rakni, bár ennek pontos okát nem tudom (valószínűleg így stabilabb / pontosabb az órajel)
Idézet: „Ha használsz kristályt, akkor azt is minél közelebb érdemes rakni, bár ennek pontos okát nem tudom (valószínűleg így stabilabb / pontosabb az órajel)” Egyrészt minél közelebb van, annál kisebbek a szórt kapacitások és induktivitások, annál jobban hozza a megálmodott paramétereket az oszcillátor. Másrészt minden vezeték antennaként viselkedik, ami két okból hátrányos. Egyik ok, hogy zavarokat szed össze, a másik pedig, hogy zavarokat bocsájt ki. Néhány megahertzes kvarcok elmennének akár 10cm vezetéktávolsággal is, de jobb ha megszokjuk, hogy mindig a lehető legrövidebb vezetékezést használjuk a nagyfrekvenciás áramköröknél.
Pixels-t kiegeszitve: Nem csak tapzavarokra van az ott, hanem mert minden vezetek egy antenna, az a kornyezetbol osszeszed mindenfele zajokat. Pl ha a feleseged porszivozik a masik szobaban, vagy bekapcsolja a konyhaban a mixert. De nem csak elektromos motorok szornak, minden, ami rezeg -- pl a PIC-edhez van ugye egy oszcillator, igaz ennek kicsi a szorasa, de ennek is van. A PC-d is szor, es nemcsak a processzornak van ott ugye oszcillatora, de az alaplapon rengeteg mas eszkoz is van, ezek egy resze mikrokontroller, masok FPGA-k stb. Aztan ott a PC kapcsolo uzemu tapja, az is szor, es ha mar a tapoknal tartunk, az osszes mobil tolto, tapegyseg stb, tulajdonkepp nehez is megszamolni egyetlen lakasban mennyi minden ketyere van amelyik eletromagneses zajokat keltenek.
Szoval 100nF minimum, van aki 1µF-ra eskuszik, de egy a lenyeg, hogy minel kisebb ESR (belso ellenallasu) kondenzator kell, pl keramia amelyik eleg olcso es tokeletesen megfelel a celnak. Kvartz minel kozelebb: Ott tulajdonkepp mas (elsodleges) oka van: A vezetekeknek nem kivanatos induktivitasa, ellenallasa es kapacitasa is van. Ezek bejatszhatnak, megakadalyozva ezzel, hogy a kristaly rendesen berezegjen.
2 honapja olvasom a google-t meg a wiki-t de nem értettem meg.
Mostmeg elolvastam a hozzászólásotokat és értem a lényegét. Köszönöm
Azt meg hogy a pic-en a programváltást ne nyomogomb hanem egymásik pic jele végeze, ugy tudom megoldani hogy egy npn tranzisztort teszek a nyomogomb"helyére" ha joltudom ott a bázisnak pozitív jelet kell kapnia ugy müködik.
Ami pont jo mert a pic kimenetén pozitív feszültség jelenik meg ugye?
Ha mindket PIC ugyanakkora taprol jar, akkor tulajdonkepp kozvetlen is ossze kotheted oket -- de azert egy aramkorlatozo ellenallas nem art oda, 10 ohm minimum, de akar 1k-t is betehetsz. Az azert is jo, mert ha valamit elszursz a firmware-edben, akkor ha csak egy pillanatra is egyik PIC aktiv magasra mig a masik aktiv alacsonra valt, akkor ott hirtelen nagyon megemelkedne az aram -- ezt az ellenallasod szepen lekorlatozza...
Itt egyszer korábban már megpróbáltam megvilágítani, hogy miért is kellenek ezek a kondenzátorok a tápfeszültségre:Bővebben: Link
Bocsanat, most vettem eszre 10 ohmot irtam -- 100 -at szerettem volna!
Helló!
Nem tudjátok miért van az, hogy BSF/BCF utasítások, nem összes PORT lábat tudják állítani?
Lehet, hogy bemenetnek vannak beállítva, vagy valamelyik belső modulhoz vannak hozzárendelve. A PIC16 sorozat egyes tagjainál RA4 kimenetként csak open drain-es, azon aktív magas szintet nem lehet kiadni, csak aktív alacsonyat.
Ellenőrizd az analóg/digitális konverter modul vagy komparátor modulok beállítását, ha azt eddig nem tetted meg. (Ha csak BSF, BCF utasításokkal van gond, de egyébként más utasítással írva megjelenik a kimenet, akkor nincs ötletem)
Jó lenne tudni, hogy milyen mikrovezérlőről van szó.
Például SETF PORTD vagy MOVLW 0xFF MOVWF PORTD működik rendesen. BSF-fel, pedig csak pont minden 2. lábat rakja magas szintre.
Szia!
A BCF / BSF portra elvégezve előbb elolvassa a port bitjeit, aztán elvégzi a módosítást, majd visszaírja. Nem tudja állítani azokat a biteket, amelyik bemeneti lábhoz tartoznak, amellyek analógnak vannak beállítva. Az utóbbiakat mindig 0-nak olvassa a kontroller. Nem tudja azokat a biteket sem állítani, amikhez tartozó lábakat engedélyezett belső perifériák kezelnek - típusfüggő, hogy melyek ezek a perifériák. Még egy probléma lehet, a kimenetre írt érték nem áll be egyáltalán a - statikus túlterhelés (led közvetlenül meghajtva) vagy addigra, amíg a (következő) utasítás beolvassa a port bitjeinek értékét - dinamikus (túl nagy kapacitás) miatt. 12F1xxx, 16F1xxx, 18F, 24F kontrollereken a LAT regisztereket használjuk a port helyett ezeknél a műveleteknél.
LATx-szel jó lett! Ezer hála és köszönet .
További infóért keress rá az RMW rövidítésre!
Jól gondoltad, a modul hibás volt alapból. (A másik szépen működött, de az is beadta a kulcsot, kb. 1 óra szövegkiírás után.) Pedig minden a megadottak szerint volt bekötve. (Ezt a pech-et, ma egész nap a generátorom szoftverét magyarosítottam, meg módosítottam benne egy-két dolgot. És most meghal a kijelző. )
UDATA_ACS direktíva után elnevezek magamnak egy halom regisztert, de már nyavalyog hogy túl sok neki. Ezért a többit beraktam a sima UDATA direktívához. Nagyjából így néz ki tehát a dolog:
A probléma pedig az, hogy az UDATA után írt regiszterjeimet (a PIN-kódosokat) nem 'kezeli'. Ez alatt azt értem, hogy a fordító lefordítja tehát nem hiányolja ezt a négy regisztert, viszont a programom nem csinál velük semmit se! Tehát van például egy ilyen elég egyértelmű sorom:
A debuggerrel léptetem a programot és amint áthalad ezen a soron, egyszerűen nem történik semmi! A Watch ablakban a regiszter nem lesz nulla és még csak nem is pirosozza ki ahogy szokta ha valamely megjelenített regiszter tartalma változik. Én manuálisan át tudom amúgy írni ha kétszer rákattintok, na de hát a PIC-nek kellene kezelnie... Mi lehet a gond?
Szia!
Használd a banksel PIN_kód_ezresek makrót...
Szia!
Köszönöm, bevált! A lapkiválasztásról egy éve olvastam utoljára, amikor elkezdtem a PIC programozást tanulni. Mindeddig valahogy sikerült megúsznom nélküle. Viszont most akkor ugye majd az UDATA_ACS-ket nem fogom elérni hogyha nem váltok vissza?
Szia!
Az ACCESS bank alsó fele (hagyományos utasítás mód mellett) a 0. Bank 0x00 - 0x7F címét éri el a BSR tartalmától függetlenül:
A ACCESS bank felső fele a 15. Bank 0x80 - 0xFF címét éri el a BSR tartalmától függetlenül:
A többi címen elhelyezkedő adatokat a BSR beállítása után a
utasítással lehet elérni, vagy indirekt címzéssel, vagy a teljes címeket használó
Szerintem nincs olyan, hogy egy csak úgy meghal egy kijelző...
Ezt én is így gondolom, de mivel PC-->PICKIT2-->16F877-->KIJELZŐ volt bekötve. És tesztelve. (Működött is rendesen sokáig.) Így a tápfesz. 5V alatt volt. Annyi hogy kellett neki -5V is, mert ez olyan típus volt. (Ezt a -5V-ot labortápon kb. 4,8V-ra lőttem be. És ez közös volt a tesztpanelem GND-jével.) A trimmerrel belőttem a kijelzőn a kontrasztot és elkezdtem fejleszteni a szoftvert. (Kb. vagy 100 új hex.-et égettem bele.) Már majdnem minden tökéletes volt. (Elmentem kajálni, közben mindent bekapcsolva hagytam. És mire visszatértem a kijelzőn semmi adat. Rátettem egy 2*16-os eredeti Hitachi-t, az szépen működött.) Átnéztem mindent, de semmi nem változott. A köv. próbánál már melegedett az egyik meghajtó fokozat a kijelzőn. És ugyanazt a jelenséget produkálta, mint amit itt korábban bemutattam egy videó keretein belül.) (Szerintem ez valami selejt szériás kijelző lehet. Ma lesz még egy. Azt gondosan figyelni fogom az első pár órán át.) Remélem annak nem lesz semmi baja, mivel a doboz már erre a méretre ki van vágva. (Meg a kódot is átírtam 2*20karakteresre.)
A programodban előfordul, hogy az LCD-ből kiolvasol valamit? Vezéreled az írás/olvasás lábat?
Nem, az GND-re le van húzva egy 1k-s ellenállással. (Azt mondjuk tudni kell hogy a helyszín egy kollégium 4. emelete, ahol igencsak komoly potenciálgondok vannak. A digitális cuccaim szeretnek megkattanni, ha közelítek hozzájuk és nincs az egyik kezem a hálózat föld potenciálján. (Na meg a linóleum padló sem igazán használ az elektronikának.) Egyébként a PIC-em is néha bekattant, így a tesztpanelem földjét összekötöttem a hálózati földdel. Meg ha valami olyat csinálok, akkor én is fogom a földet. (Ez biztonságtechnikai szemmel elég gáz, de máshogy nem működnek a dolgok rendesen, persze azért egy FI relé van a hálózat és a cuccaim között.)
Kezdem megutálni ezeket az LCD-ket. Szereztem egy 3.-at is (2*20-as kínai csoda) és az is rossz, amellett még szivatásból a kábelei beforrasztásánál meg volt cserélve a D5 és D4. Ez is alapból azt csinálja, mint amit a videóban mutattam. (És minden jól van összerakva, mivel a 2*16 karakteres kijelzőm tökéletesen teszi a dolgát.)
|
Bejelentkezés
Hirdetés |