Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Akkor sajnos a kék LED-ek nagyobb nyitófeszt kérnének, mint ami rájuk jut. Az égető sem ad ki 5V-ot és a 374-esek sem kapcsolják ki a táp teljes feszültségét, így összejöhet akár 1..2V esés is. Sajnos nincs ötletem a probléma megoldására 5V-os táp esetében.
Más tápról kéne járatni a HC-ket, pl. 7V. Így talán az illesztés is megmaradna a PIC felé. De ezt jól át kell gondolni, nehogy meghaljon valami! szerk! Sajnos most nézem, hogy a HC csak 6V max feszt visel el. Talán az is elég lenne. Természetesen a PIC-et továbbra is 5V-ról kell járatni.
Asszem jó felé tapogatsz! Sajnos sn74ls374-ek mennek a körben, nagyon valószínű hogy nem jut elég fesz a ledeknek, most kipróbálom csak 1 kék led vezérléssel az áramkört hátha beindul.
Ohh lássatok csodát, a 4.sor4. ledje felvillant teljes fényerővel! Keresek valami megoldást hogy lehetne megvezérelni normálisan, vagy változtatok a programon, hogy egy másik frame-en működjenek a kék ledek.
Tudom, nem vagyok valami jártas még etéren, de, ha tranzisztoros megoldást használnál a LED-ek meghajtására?
Szerintem megvalósítható, de ezt valaki majd megmondja
Azt hiszem kicsit félreérthető lett, így pontosítanám: (szerkeszteni már nem tudtam)
Szóval a 74HC374 Q0..Q9 kivezetéseire kötnéd a tranzisztor bázisát (nem tudom, kell-e ellenállás közé), és ez mondjuk egy 10-12V-os feszt adna a LED-ekre, a PIC és az IC-k meg 5V-ról lennének meghajtva
Gondolkodtam a tranzisztormezős megoldáson is, amit írtál , még számolgatok egyet-kettőt utána lehet, hogy letesztelem azt a megoldást.
Csak szólnék, hogy a 74HC374 és a 74LS374 nem teljesen kompatibilisek egymással, ezért nem világítanak a kék ledek. A jobboldali chip helyére (amelyik a ledek anódját hajtja) mindenféleképpen 74HC374 kell. Az alsó helyén nagyjából mindegy, melyik van.
De ez az egész tervezés több hiányosságot rejt magában. A ledek közös kivezetését (amit így most nem tudok, hogy egyszerre egy sor, vagy oszlop világít), azt nem elég ilyen chippel meghajtani, oda mindenféleképpen tranzisztoros meghajtás kell. 20mA-es ledek esetén ott akár 160mA is folyhat, míg egy HC chip 20mA körüli áramot tud adni illetve húzni. Az LS valamivel többet tud húzni, de annak is sok a 160mA. Anódoldalra az LS teljesen alkalmatlan, a HC korlátozott mértékben ugyan, de alkalmas kisáramú ledekhez. Nagyáramú ledeknél kevés az impulzusokban folyó 20mA, tehát tranzisztoros meghajtás kell az anódoldalra is.
Ez az áramtúlterhelés már nekem is feltűnt, de gondoltam ha működik az eredeti példány, akkor nem szólok...
Az az igazság, hogy az eredeti példányt csak piros "gyenge" ledekkel imitálják. Gondolom azokkal nem sok baj lehet, nem úgy, mint 4 féle színnel. De azt hiszem nem fogok vele sokáig szórakozni, a színeket oszlopokba rendezem és beállítom majd a végleges panelen a fényerőkhöz megfelelő ellenállásokat, meg beteszem a tranzisztormezőket.
Lenne egy tervem, de csak futólag formálódik, kíváncsi lennék szerintetek meg lehet-e oldani és ha igen milyen módszerrel.
Egy 16bites AD-t kéne meghajtani SPI-n keresztül 1MIPS-el. Minden 16bit más, de előre letárolt és megfelelő algoritmus szerint változnak. (emelkedő szinusz jeleknek megfelelő adatok (1Hz...20KHz) előre deffiniált lépésekben.) A cél PIC, egy 16F690 lehetne 20MHz-es oszcival elvileg 5Mbps SPI sebesség elérhető. A kérdés az, hogy ki lehet e vinni az adatokat ilyen tempóval az SPI regiszterébe úgy, hogy közben a PortINT -en keresztül vezérelném a változás kérést. (megszakítanám a jelsorozatot és fogadnám az új parancsot, ami a freki tartományt adná meg. A megadás után a PIC a kérésnek megfelelő adatsort nyomna ki a START jel után. A másik kérdés a szinusz jelalak táblázatát hová lehetne letárolni és hogyan lehetne ezt a különböző frekiknek megfelelően kiléptetni az SPI regiszterébe?
A nagy fényerejű LED nem attól nagy fényerejű, hogy egy feszültségenerátor jellegű kimenetre csak úgy rákössük! A soros, áramkorlátozó ellenállást egy LED elől semmiképp nem szabad elhagyni.
Valószínűleg így annyira megterheli a kimenetet a LED, hogy a kimeneti latch vagy magától visszaesik 0-ra, vagy következő r-m-w utasításnál már 0 szintűnek látszik és ezért az is íródik vissza.
Meg kellene mérni a 374-ek kimenetét, gyanítom, hogy a magas és alacsony állapota közti különbség nem elég a LED-nek.
Ha jól értelmezem, akkor D/A meghajtásáról lenne szó, és ennek felhasználásával egy programvezérelt szinuszgenerátorról.
A sebességekre hirtelen nem tudok mit mondani, de úgy gondolom, hogy a jelalakot leíró táblázat csak valahol a programmemóriában képzelhető el, mert külső eszközből ilyen sebességgel reménytelen elővenni. A programmemória pedig nem valami túl nagy, szóval lehet, hogy az meg emiatt nem alkalmas. Ráadásul a programmemória olvasásakor mintha kimaradna 1 gépi ciklus, nem tudom, pl. az SPI-be hogy szól bele. Lehet, ilyen alkalmazáshoz érdemes lenne valamelyik kicsi dsPIC-et elővenni, esetleg valamelyik nagyobbat, külső, párhuzamos elérésű memória felhasználásával, amiben induláskor kiszámolja a szinuszalakot, utána már csakolvasgatni kell belőle.
Múltkor szó volt itt a 18F1xK50 jelzésű USB-s chipekről. Nemtudom, figyeltétek-e, de a PGC és PGD lábakat a D+ és D- lábakra rakták, ezzel (szerintem) megnehezítve a fejlesztést...
Üdv mindenkinek!
Ismét szeretném a segítségeteket kérni. Épp egy egyszerű, saját fejlesztésű számológépen ügyködök, a progi C ben íródik, az elképzelés ez: Progi megnézi, hogy meg lett e nyomva egy gomb vagy sem (sima if), ha nem goto eleje, ha igen akkor a megfelelő részre ugrana. A bevitt számokat változókba tárolnám, később lehet tömbbe ha rájövök hogy kell . az eredményt egy 16 karakteres lcd n íratnám ki. a főprogi: pl: 12+96= sz1=1 sz2=2 sz3=9 sz4=6 (változókba tárolt számok, mind int típusú szerintem). szam1=sz1 összefűz sz2 szam2=sz3 összefűz sz4. jel=+ eredmeny=szam1+szam2. eredmeny kiírása és örülök . A problémáim: Összefűzés hogy oldható meg? Pascalba volt olyan, hogy procedure, ott megírtam egy feladatot és pl goto val odaugrottam, ez itt hogy lehetséges? Harmadik problémám, hogy nem tudok osztani pl a=8 b=2 c=a/b printf(lcd_putc,"= %d",c); itt nem ad rendes értéket, amúgy minden integer. Még valami, tizedestörtet sehogy se kezel, lehet hülye kérdés de melyik változó típust javasoljátok? Tud esetleg valaki valami értelmes C vagy asm olvasnivalót? Az ittenieket átrágtam a-z is de nem lettem sokkal okosabb Bocs, hogy hosszú lett
Sziasztok!
Tudnátok segíteni? A PIC16F628A adatlapja szerinti példa alapján próbálgatom az EEPROM ba írást, de nem megy. Az MPLAB az eeprom területre írandó értékre (AAh) errort jelez. Az adatlap példája írásra: BSF STATUS, RP0 ;Bank 1 BSF EECON1, WREN ;Enable write BCF INTCON, GIE ;Disable INTs. MOVLW 55h ; MOVWF EECON2 ;Write 55h MOVLW AAh ; MOVWF EECON2 ;Write AAh BSF EECON1,WR ;Set WR bit ;begin write BSF INTCON, GIE ;Enable INTs Lehet hogy hibás az adatlap? Esetleg tudna valaki egy működő példa rutint mutatni erre a típusra? Előre is köszönöm
Nem hibás, csak kicsit pongyola néhol (illetve nem tudom, milyen assemblerhez készültek a példák, a hexa konstansokkal mindig baj van). Az MPLAB az "AAh"-t címkének értelmezi, nem számnak, ilyen címkéd meg nincs, nyílván erre panaszkodik. Írj helyette "0AAh"-t vagy "0xAA"-t, vagy "H'AA'"-t, amelyik jobban esik.
A másik, ami ebben a példában nem feltétlenül követendő, az a GIE bittel történő matatás. Ha nem használ a programod interruptot, akkor nem kell letiltani előtte és engedélyezni utána a GIE-t (főleg nem az engedélyezést). De ezt Neked kell tudni, hogy a programod többi része hogyan működik, az adatlapban elég jól le van írva, hogy mi miért és hogyan történik.
Nem ártott volna megírni, hogy melyik C fordító, de általánosságban egészen biztos, hogy van a könyvtári függvények között stringeket összefűző.
Pascalban és C -ben goto. Faxa fiam, kettes. Minden normális könyv tripla felkiáltójellel duplán bekeretezve 36-os betűmérettel írja, hogy ne használd. C-ben és jellemzően C alapú nyelvekben a / egész osztást jelent. Tehát 5/2=2 Vagy float -ra alakítod (float) a explicit alakot használva, vagy rákényszeríted, hogy alakítsa át. a/1.0 implicit verzió. Az előző szebb.
Nem tudom, mennyire ragaszkodsz a 16 bites felbontáshoz, de javasolnám az Analog Devices DDS sorozatát. Nagy felbontással közel perfekt szinusz jel állítható elő velük, soros (SPI), egyes példányoknál párhuzamos vezérléssel.
Egyelőre nem használok megszakítást, a példát egy az egyben másoltam ki az adatlapból ezért van benne a megszakítás engedélyezés / tiltás. Köszi a választ, megpróbálom újra 0xAA val.
Jónapot mindenkinek!
Nekem a graphic pictail plussal van egy kis gondom.A probléma abból adódik hogy nemtudom hogyan kezjek neki a programozásának.. A help alapján megcsináltam a projectet (beleraktam azt a sok header meg source fájlt) aztán írtam a mainbe valamit, de mindig hibát ír ki.Tudna valaki segíteni? Előreis köszönöm:Katona Ábel
Szerintem kevés a grafikuskártya memóriája a gépedben
Szia!
Tapasztalatom szerint az MPLAB nem eszi a bötűvel kezdődő hexa számokat ebben a formában AAh. Próbáld meg így: h'AA' Remélem segít, üdv: Lajos
Az volt a baj amit írtatok, köszi. Egyébként van olyan utasítás ami az egész eeprom tartalmat törli? Vagy ez is csak címenként működik?
Üdv!
CCS t használok. A goto tudom, hogy nem túl elegáns megoldás de itt más nem jut eszembe. Sajnos jó ideje hajtok normális, alapszint alattról kezdő C s könyvet ami használható a CCS nél is, sajnos nem sok eredménnyel .
Köszi, ismerem őket, kb. 5 ezer/db! Csak akkor választanám, ha nincs olcsóbb megoldás.
Azért pár forráskódot végignézhettél volna, hogy hogyan szokás függvényt hívni... Talán NickE tud ajánlani valami jó könyvet C-re, én nem könyvből tanultam.
hali
Segítség kellene. Szóval pic16f628-ast programoztam, de valamiért nem működik és most így a 2. napon azt vettem észre mintha nem tenne különbséget a fordító vagy a pic a PORTB,5 és a PORTB,6 között Mit lehet ilyenkor tenni? Infra árzékelőket figyeltem ezen a lábakon és egy primitív progival csak az egyiket figyeltem erre a másikra is ugyan úgy működik . Talán meghalt a pic? De ez sem lehet hisz valami él benne... kösz
Vagy át tud "beszélni" a két láb (a körülöttük lévő elektronika miatt) egymásra, vagy van valami bibi a programmal. Ennél kicsit több infó is jó lett volna.
|
Bejelentkezés
Hirdetés |