Fórum témák
» Több friss téma |
Igen egy ilyen tippem nekem is volt, hogy a szkópszonda kapacitása beterheli az oszcillátor lábakat. 1:10-es osztásban mértem, így 10MOhmos a a szonda bemenete, és a kapacitása 10-20pF körül van. Ez gondolom bőven elég, hogy elhangolja az oszcillátort. Tehát hogyha alvó állapotban van a PIC, akkor nem megy az oszcillátor sem. Akkor nem is biztos, hogy rossz az a PIC. Közben megnéztem a PIC adatlapját, a timer 1-nél van egy olyan funkció, hogy tiltható az oszcillátor működése. Lehet hogy a program tiltja, és gondolom az INT lábon jövő valamilyen jel felébreszti a PIC-et.
Sziasztok! Mitől lehet az, hogy meghívok egy rutint, és nem a meghívás helyére tér vissza, hanem a program elejére? Vagy a 24-
A hozzászólás módosítva: Feb 3, 2015
stackpointer-t ki inicializalja?
Ja, hogy azt külön kell?? :O Nem semmi... Köszi!
Ez a sor egy makró függvény.
Funkciója gyakorlatilag az, hogy a már behelyettesített adatot lépteti bitenként. Külön ezt a sort nem nézheted illetve nem értelmezhető, mert szoros együttműködésben áll a következőkkel: Maga a makró ami bitenkénti siftel, léptet..
A data változó tárolja azt a 8bites már behelyettesített adatot amit ki kell küldeni a shiftregiszternek. A bitno pedig azt a bit számot tartalmazza amit gyakorlatilag vissza várunk. (Tehát, ha mondjuk a 8bites adat 0-adik bitjén tárolt adattal akarunk visszatérni és ez a behelyettesített adat így néz ki: 0b01010101 akkor a visszatérési értéke a makrónak 1-lesz. De ha az 1-es biten tárolt adattal akarunk visszatérni akkor a visszatérési érték amit a shiftregiszterbe tölt be az 0 lesz.) A véltozó ami tartalmazza a számok megfelelő bitsorrendjét. Gyakorlatilag ez az adat fog kikerülni a kijlező szegmenseire.
Ez pedig az a ciklus ami a bitenként küldi ki a shiftregiszterbe az adatot.
A DATA változó a shiftergiszet adat lábához tartozik ez a változó felelős azért, hogy a shiftregisztrbe a megfelelő adat kerüljön. (0 vagy 1) A readbit() maga a makró ami elvégzi a bitenkénti shiftelést és a megfelelő 1bitel tér vissza. Digit[] tömb tartalmazza a számokat 0-9-ig, de már abban a formában, hogy mikor a kijelzőre kiküldöd, akkor a kijelzőn a látni kívánt szám szegmenseit gyújtsa ki. dignum változó tartalmazza azt a normál számot amit ki akarsz íratni. Az i változó a for() cikluson belüli változó ami implementálódik minden egyes lefutásnál és ez felelős, hogy az adott szám behelyettesített értékének melyik bitjével térjen vissza a makró. Remélem sikerült érthetően elmagyarázni... A hozzászólás módosítva: Feb 3, 2015
Igen, gondolom a táplábakon, de vicsys a MCLR és GND közé mondta, ha figyelmesen elolvasod amit írt.
Igazad van, nem erre gondoltam! Ki fogom próbálni.
Szia!
Köszönöm, ez így már teljesen világos. Azért csak azt az egy sort írtam, mert a shiftelési részt nem láttam át rendesen. Viszont az nem képzelhető el, hogy nekem azért a Digit változóban más értékeknek kellene lennie, mivel a multiplexelés miatt kicsit más vezérlést igényel a shift register?
Nincs olyan, hogy makro fuggveny. Makro van vagy makro definicio. A data es bitno a fenti peldaban NEM VALTOZOK!!! Ezek makroparameterek, es ezeket a C fordito behelyettesiti a hivatkozasbani szoveggel:
Ez egy definicio: /* A kisebbiket valasztja */ #define MIN(a,b) ((a) < (b) ? (a) : (b)) Es amikor hivatkozol ra: now = MIN(64, len); akkor ezt a sort a C elofeldolgozo kicsereli arra, hogy: now = ((64) < (len) ? (64) : (len)); Es csak ezutan forditja le a sort. Ezt a behelyettesitest a C elofeldolgozo csinalja, nem is maga a C fordito. Pl. gcc eseten ez ket kulon exe. Tehat az 'a' es 'b' nem valtozok, csak makroparameterek. A hozzászólás módosítva: Feb 3, 2015
Mielőtt a vermet használnánk, be kell állítani a veremtár mutató kezdőértékét, és célszerű beállítani az SPLIM nevű regiszterben a veremtár felső határát is. Ha a veremtár mérete túlnőne ezen a határon, akkor kivétel keletkezik, s a felhasználói program futása megszakad.
Az alábbi programban a __reset címke utáni első három utasítással állítjuk be SP (azaz W15) és SPLIM kezdőértékét. Az __SP_init és az __SPLIM_init szimbólumok értékét a linker program állítja elő, s ha másképp nem definiáltuk, a linker a lehetséges maximumot állítja be.
A fenti programban a W0 és W1 regiszterekbe tetszőleges számokat írva vizsgáljuk a PUSH és a POP utasítások hatására történő adatmozgásokat. Idézet: Ez igy nagyon eroltetett es nincs is semmi ertelme. Ha mindenaron magyaritani kell (bar nem ertem, hogy miert kell minden arva szakkifejezest magyaritani), akkor mar inkabb kizaras. „akkor kivétel keletkezik”
Nem hinném, főleg azért mert neked a multiplexelést nem egy kijelző belső szegmensei közt kell megoldanod hanem a kijelzők közt.
Amúgy a lábkiosztás számít szóval, elképzelhető az is, hogy nem jó a digitek kódja... Érdemes sokszor átolvasni amit írunk mert, ha első olvasatra nem is egyértelmű sokadjára biztosan az lesz. Neked a multiplexelésnél a megfelelő kijelzőkre küldött adatok gyors küldését és a kijelzők meghajtását kell értened. Nem emlékszem a meghajtásra de talán 1-3, 2-4 vagy is, ha így van aminek mondom most nem néztem utána, akkor elsőnek az 1-es és a 3-as kijelzőre kerülő adatot kel kiküldened majd a 2-esre és 4-esre eső adatot. Ezeket minél gyorsabban egészen addig ameddig már számodra állóképet nem kapsz. killbill: köszi a fogalmak helyre igazítását... A hozzászólás módosítva: Feb 3, 2015
Igen, úgy vannak kötve a kijelzők, hogy 1-3, 2-4.
Hát elméletben értem, de még mindig nem tiszta. Vagyis kiküldöm, hogy az 1-3 kijelző legyen aktív (Q1 tranzisztor) és a két szám értéket egymás után, majd fordítva. Viszont itt megint felvetődik egy kérdésem, hogy azt hogy az egyesen vagy a hármason jelenjen meg, azt hogy tudom szabályozni? Meg léptetni oda-vissza a tranzisztorok nyitását? Átolvasom az egészet újra, meg megnézek pár minta kódot, mert bár azt hittem az elején, hogy egyszerű lesz, mára teljesen elvesztem benne. A hozzászólás módosítva: Feb 3, 2015
Sziasztok!
Próbálkoztam a CCS C Compiler programjával. A Device editorban lehet létrehozni új eszközöket, pontosabban csak lehetne. Ha valami műveletet akarok végrehajtani, akkor "File access denied" hibaüzenetet kapok. Mit tudnék vele csinálni? Vagy Ti miben fejlesztitek a programjaitokat? Azért tetszik ez a Compiler, mert az elején a varázslóval rengeteg mindent be lehet állítani, és nem kell begépelni, és ellenőrzi is a kész programot, nem mellesleg nagyon jó felülete van, kiválóan kezelhető. De nekem így sajnos használhatatlan. De a legjobb lenne megoldást találni rá, hogy tudok bele új eszközt tenni. Nagyon fontos lenne! A hozzászólás módosítva: Feb 3, 2015
Figyelj csak..
Változtasd meg a Digit tömböt erre:
Aztán keresd meg a DATA = readbit(...) ; sort és erre helyettesítsd:
Az összes szegmensnek világítania kell, ha nem világít, akkor valami gond van a kapcsolással. A hozzászólás módosítva: Feb 3, 2015
A harmadik kijelző felső szegmense világít csak. Akkor elképzelhető, hogy az shift register odavan, vagy megint a dugdosós panel szórakozik.
Ez a sor eleve nem jo, mert ha a Digit nevu tomb 1 elemu, akkor annak csak a [0]-s elemehez lehet hozzaferni. Amugy egyszerubb lenne egybol azt irni az egesz readbit(...) helyett, hogy 1.
Így gondoltad? Mert így meg sem nyekken a kijelző.
Igen így jó lesz..
Már én is belekeveredek.. Ennek így mennie kellene, az összes szegmensnek világítani kellene.. Ha nem akkor a shiftregiszterrel vagy az egyéb kapcsolással nem stimmel valami... Esetleg a CLK-t változtasd meg hogy előbb alacsony majd magas szintre kerüljön, hátha nem jó a beállítás... A hozzászólás módosítva: Feb 3, 2015
de, mégis jó, nem elsőre, csak harmadszorra írta ki mindegyik szegmensre a 8-ast.
Fejlemény: Külföldi oldalon írták, hogy adminisztrátorként kell futtatni a chipedit.exe-t. Ezt megtettem, most már tudok újat létrehozni. Az egyikről lemásoltam az adatokat, és megkapta a 16F1705 nevet. Majd a Devices könyvtárban kicseréltem a header file-ját az eredetire. Így ott van a sorban, és használható, sőt utána magától létrehozta az LF-es verziót is.
Most viszont ha nekiállok vele egy egyszerű, mondjuk led villogtatós programnak, mert azt gyorsan begépelem, a Compile gomb megnyomás után kijön egy csomó hibaüzenet, és mind a PIC header fájl-jára mutat. Ennyire különbözne a két verzió, hogy ez már nem tudja értelmezni az új pic headerét? A hozzászólás módosítva: Feb 3, 2015
Na akkor az jó, most mehet az amit elsőnek írtam és írjál ki mondjuk mindegyikre 1-eseket vagy bármilyen számot 0-9 közt..
Ez csak azt a számot fogja kiírni amit te adsz... Ha nem azt látod amit ki akarsz íratni akkor neked nem lesz jó a megadott Digit sorozat. (vagy még esetleg lehet elkötés is) A hozzászólás módosítva: Feb 3, 2015
erre csak az első kijelzőn kettő és a harmadik kijelzőn egy szegmenst kapcsol fel
Akkor itt már valami gond van.
8 bites ez a shiftregiszter? Közben nézem az adatlapját, és ez 16bites... Nem csoda ha nem megy... A hozzászólás módosítva: Feb 3, 2015
Igen közben vissza lapoztam a topik-ot..
Nos az egyik gond az lehet, hogy 8bitet adtunk csak neki a 16bit helyett. Az első amit ki kellene próbálni, hogy 16bitet küldünk ki és nem csak 8-at és megnézzük mit csinál.. Valahogy így:
Csak tesztelésre, ezt persze lehet finomítani... Most elvileg mind 2 kijelzőn ugyan azt kell látnod.. A hozzászólás módosítva: Feb 3, 2015
Ez a dolog tobb ponton is hibas. Eloszor is, tul gyors az orajel. Azon felul a az ENABLE=1 utani CLK=1 sor nem kell.
A CLK=1 es CLK=0 sorok koze kell legalabb 1us warakozas, es a CLK=0 utan meg legalabb 2us. Nem tudom, hogy ezt a piceden hogyan lehet megoldani, de enelkul nem lesz jo. Es igen, nem nyolc, hanem 16 bitet kellene beleshiftelni.
A hozzászólás módosítva: Feb 3, 2015
Erre csak azt tudom mondani, hogy az "exception" hivatalos magyar megfelelője a magyar szakirodalomban a "kivétel". Bővebben: Link Nem én találtam, ki, csak tartom magam hozzá, ha már van ilyen bevált (bár szerintem is vitatható) fogalom.
Magyarra fordítani pedig azért kell, mert magyarok vagyunk és azt szeretnénk, hogy az anyanyelvünk ne sorvadjon el. Semmiképp sem szeretnék olyan "magyar" leírásokat olvasni, mint az informatika hajnalán a magyar gyártmányú miniszámítógép gépkönyvében: "A switch regiszteren beloadoljuk a Start Address-t". Idézet: Ertem, nem vitatom. De attol meg nagyon furcsa.„Erre csak azt tudom mondani, hogy az "exception" hivatalos magyar megfelelője a magyar szakirodalomban a "kivétel".” Szerintem az anyanyelvunk nem attol sorvad el, hogy egy szakmai szovegben idegen eredetu szakkifejezeseket hasznalunk, hanem inkabb attol, hogy minden i-re vegzodik (tali, telcsi, burgi, foki), meg attol, hogy egyenlore, muszaly, nah, jah es tarsai, irasjelek hibas vagy hianyos hasznalata, kozpontozas, stb. Az ekezet nelkuli iras is biztosan idetartozik. Ez is csak lustasagbol es 30 eves megszokasbol fakad. Angol billentyűzet, linux, fvwm, ezért körülményes az ékezetek használata.
Sziasztok, kezdő vagyok elektronika dolgokban... Hogy kell 5V-os processzorral 3.3V-os csipet meghajtani? Mi a level shifter magyarul? Mivel lehet helyettesiteni? Itt a HE oldalakon nem találtam, talán rosszul kerestem.
Udv lz |
Bejelentkezés
Hirdetés |