Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Bocs ismét elírtam....na most a helyeset írtam be:
#include < p16f690.inc > ; processor specific variable definitions
Igen az output_bit-nek a 2. paramétere tényleg az hogy ki vagy be, és port helyett pin-t kapcsolnak. A többi infó viszont nagyon hasznos volt köszönöm. Most azután pláne nem tudom mi a fenéért nem megy. Erre nincs ötleted?
Vezeték nem lehet gond? Utp-ből kiszedett vezetékkel kötöttem be a 3 lábat, a vezeték hossza kb. 50cm. Kimértem nem szakadt.
Első kérdés: eljutsz-e a fordítással a BUILD SUCCEEDED-ig, vagy valmi hibára fut?
Másodk kérdés: (ha sikeres a fordítás) milyen MPLAB verziód van? Lehet, hogy frissíteni kellene? Vagy valami félre van konfigurálva? A harmadik mér nem kérdés, hanem kérés: a programot vagy {code=asm}-mal szúrd be (természetesen szögletes zárójellel...), vagy mellékletként csatold, mert így átszerkesztés nélkül nem tudja kipróbálni senki. Válasz: nem, nem így gondoltam! Kell egy főprogram, ami beállítja az operandusok értékét, majd meghívja a M_ADD (vagy aminek hívják) eljárást, ésatöbbbi... Tehát a műveletvégző eljárásokba ne piszkálj bele. A korábban adott linken tesztprogramot is lehet találni, azt kellene tanulmányozni és megérteni. Javaslom, hogy előbb csak az összeadást és a teszprogramot pipáld be, s az így letöltött programot tanulmányozd! A több-bájtos összeadás algoritmusa az, hogy előbb összeadjuk a legalacsonyabb helyiértékű bájtokat, s eltároljuk, majd az eggyel magasabb helyiértékű bájtok összeadánál figyelembe vesszük, hogy az előzőekben volt-e átvitel (STATUS bájt C bitje), s ha igen, akkor eggyel növeljük az eredményt. Az indirekt címzés megértéséhez a PIC16F690 adatlapjának 2.4 alfejezetét kell áttanulmányozni. Erre valójában nem lenne szükséged, de mivel a készen kapott eljárások általánosan vannak megírva (hogy tetszőleges méretű változókra is működjön) ezért indirekt címzéssel kezelik az adatokat. Ha van hozzá időd és türelmed, akkor érdemes megtanulni! Idézet: „A többi infó viszont nagyon hasznos volt köszönöm.” Ne nekem köszönd, a CCS Help-jében van leírva, én is onnan merítem az "okosságot"! Első körben a várakozások nyújtásával próbálkoznék, s a PICkit2-őt logikai analizátor üzemmódban ráakasztanám az adatvonalra, hogy lássam, mi zajlik rajta. Oszcilloszkóp még jobb lenne, de ha nincs kéznél, akkor ne... A tápfesz szűrések rendben vannak? Az órajel frekvenciát mások is kérdezték már, az rendben van?
Ez az eleje.
Az LCD-t jól kezeli, azt átírtam mert nálam C porton van az lcd, ha az órajel nagyon rossz lenne, akkor az lcd sem menne. Én is gondolkodtam a pickit2 analizátorrá alakításán, még este megcserélem a 2-es 3-as portot (a 3-as tuti jó mert azon van led), ha úgysem megy akkor az egészet összerakom próbapanelen, azután jöhet a pickit2 mint analizátor. Szerencse, hogy van egy icd2 is, azzal mehet a debug is közben. #include <16f726.h> #fuses NOWDT,HS, NOPUT, NOPROTECT,NOLVP,BROWNOUT //Oscillator mode HS #use delay(clock=4000000) //Clock speed HZ = 4MHZ #include "lcdc.c
Lassan tényleg ideje lenne megnézni azt az asm kódot, és kipróbálni a szimulátorban, hogy tényleg annyi-e az annyi...
Az nem zavarhat be, hogy a CCS-ben alapban ezek az output akarmi fugvenyek allitjak a TRIS-t is egyben? Meg kell neki adni valami fast IO pragmat vagy define-t, hogy ezt elkeruljuk - most nem emlekszem pontosan, de ez is benne van a doksiban.
Pont az a lényeg, hogy állítsák a TRIS-t mert pl. itt kell is:
output_float(PIN_B2); // float 1-wire high delay_us( 5 ); // allow pin to stabilize if (!input(ONE_WIRE_PIN)) { bár a help szerint az input úgyis állítja, és ennél a résznél már nem megy tovább. Olyan sok időzítés itt még nincs is, ezzel Potyonak is megadtam a választ, és már itt nem jut tovább. Ha lesz időm délután akkor csak ezt a részt megírom asm-ben, és utána kiderül. Az is lehet, hogy B2-es láb halott. Az biztos, hogy érintkezik, mert az ic tetejétől (ahol kijön láb) a ds1820 középső lábáig ki lett mérve, 0 ohm, a ds1820 középső lábától az 5V-ig meg 4.7k ohm, a gnd és az egyes láb között valamint a 3-as láb és az 5V között szintén 0 ohm. Sajnos a szimulátor nem mondja meg tényleg csinál e valamit a B2, erre jó lesz a pickit2 analizátor módban, csak annak még utána kell nézni.
"Első kérdés: eljutsz-e a fordítással a BUILD SUCCEEDED-ig, vagy valmi hibára fut?"
eljutok lefordul hiba nélkül. "Másodk kérdés: (ha sikeres a fordítás) milyen MPLAB verziód van? Lehet, hogy frissíteni kellene? Vagy valami félre van konfigurálva?" Mplab 8.00 "A harmadik mér nem kérdés, hanem kérés: a programot vagy {code=asm}-mal szúrd be (természetesen szögletes zárójellel...), vagy mellékletként csatold, mert így átszerkesztés nélkül nem tudja kipróbálni senki." Rendben ez már nekem is feltűnt,h.nem jól szúrom be ![]() Amugy ahogy írtad csak egy operandussal próbálkozom, de nem tudom figyelni a regiszterek tartalmát, mert sajnos még mindig inaktív az add symbols gomb:S "A több-bájtos összeadás algoritmusa az, hogy előbb összeadjuk a legalacsonyabb helyiértékű bájtokat, s eltároljuk, majd az eggyel magasabb helyiértékű bájtok összeadánál figyelembe vesszük, hogy az előzőekben volt-e átvitel (STATUS bájt C bitje), s ha igen, akkor eggyel növeljük az eredményt." okés ez érthető is, de akkor miért nem látom a tesztelésnél felsőket, miért csak az alsókat lehet beállítani??
Idézet: „Mplab 8.00” Ezt jó lenne frissíteni, hogy lehetőleg mindketten ugyanazt lássuk... Idézet: „ de akkor miért nem látom a tesztelésnél felsőket” Ezt a kérdést nem igazán értem, de nem is tartom idevágónak, amíg az MPLAB-bal szürke gombos mizériája meg nem szűnik. Utána úgy megy a dolog, ahogy tegnap megírtam.
azt vettem még észre,h.akkor lesz aktív nekem az add symbols ha nem projekt varázslóval teszem, hanem csak új projektként állítom be. ez lenne a baj?
felsőkre meg a felső 8 bitet értettem az M_TEST-nél,h.nem látom,h.hol tudom megadni ebben a progiban a felső 8 bitet.
8.10-re frissítem, remélem ez jó lesz
Tagold eloszor is fel a rutinjaidat, utana kommentezd fel mit miert kivansz csinalni - a komment epp arra valo, hogy oda irdd mi a szandekod, es a szandekot egyszerubb osszehasonlitani az aktualis koddal, hogy ahhoz kepest mi tortenik, igy kiderulhet hol a hiba.
Velemenyem szerint joval egyszerubb lenne az egeszet lemakrozni es nem vacakolni az FSR-rel, vegulis nem tutasidoben fog eldolni, hogy milyen precizitassal dolgozol. Azonban ha megis FSR-t valasztasz es ilyen modon oldod meg a pointerek szamolgatasat, akkor celszerubb lenne big-endianos abrazolasra atterni es ugy valamivel csokkenne a pinter szamolgatas. Ja, es amugy az FSR-nel nem allitod be az IRP bitet, es nem torodsz az esetleges tulcsordulasokkal - bar mivel abszolut modban programozol lehet sohasem fogsz talalkozni az ezekbol eredo gondokkal.
Üdv!
Végezvén a projectemmel, még van két hetem itt Franciahonban, gondoltam elütöm az időt egy kis PIC továbbtanulással. Van nekem egy PIC18F4520-I/P -s procim. Eddig a 16F877-el dolgoztam. Nézetem a 18 as adatlapját, ugy látom a lábkiosztás ugyan az. Mégis miben különbözik a 16-ostól és mit kell másképp programozni mint a 16ban? Van egy PICDEM2plus-os panelem, azon van egy LCD- azt szeretném első körben életre lehelni. Ez pontosan milyen LCD? További szép napot mindenkinek!
Elso korben tanulmanyozd a 18F utasitaskeszletet! Sok elteres van!
Azért nem kristályt használok, mer a PIC 3.3V-on megy, és az adatlap szerint ezen a feszkón max 25-30MHz-et visel el. Amúgy észrevettem egy érdekes dolgot. Rákötöttem egy 8, 12, 13.xx MHz-es kvarcot, bekapcsoltam a PLL-jét, és a 12-13.xxMHz-en látszólag ugyan azzal a sebességgel ment, mint a 40-es oscillátorral. Adatlap szerint pedig a PLL sak 4-10MHz-ig használható. Elképzelhető, hogy a 12MHz-nél még stabilan működik a PLL? Tehát 48 MHz lesz belőle, vagy valami pontatlan, használhatatlan akármi?
Jah és feltűnt még valami, ezt csak érdekességként írom: ráraktam egy 60MHz-es oscit, PLL nélkül nem csinált semmit, azt bekapcsolva viszont kb 2-szer olyan gyors volt, mint a 40MHz-es osci PLL nélkül. Csak néha hibásan olvasta ki a RAMját ![]()
Nem kell bankot váltani a 18-asoktól felfelé. Ez pl. nagy könnyebbség. Biztos van még sok más hasznos dolog.
A 3.3V-on megadott frekvencia nem azt jelenti, hogy olyan kvarcot tud meghajtani, hanem hogy a komplett processzora ezen az órajelen képes megbízhatóan futni. Tehát teljesen mindegy, hogy te külső forrásból biztosítod a frekvenciát, vagy a ráakasztott kvarcból kapja.
A PLL az egy érdekes dolog, én is végeztem ilyen kisérleteket, de 16MHz-es kvarccal már nem 64MHz volt az órajel, hanem kevesebb, úgy emlékszem 50MHz körüli. 20MHz-es kvarccal szintén kb. ugyanennyit sikerült kicsikarni belőle. Sajnos 12MHz-es kvarcom nem volt, hogy kipróbáltam volna azzal is. Elképzelhető, hogy stabilan működik, de erre nem építhetsz. Lehet, hogy a chipek 95 százalékánál megy, de ott van az a maradék 5%, aminél nem megy.
Akkor majd kipróbálom a 12MHz-et PLL-el, UART is van a kütyüben, szóval kiderül majd egyből, hogy működik-é-e. Majd megírom, mennyire stabil.
Idézet: „nem látom,h.hol tudom megadni ebben a progiban a felső 8 bitet.”
De ezt már tegnap is megírtam!!!
Idézet: „8.10-re frissítem, remélem ez jó lesz” Nem tudom, hogy miért nem lehetett a legújabb kiadásra frissíteni. Idézet: „azt vettem még észre,h.akkor lesz aktív nekem az add symbols ha nem projekt varázslóval teszem,” Nekem 8.14-gyel és 8.15a-val nem voltak ilyen gondjaim. Listázd már ki, légyszi, hogy milyen fájlok vannak a projekt könyvtárban egy sikeres build után! Még jobb, volna ha összezippelve csatolnád a projekt könyvtáradat!
Hello
Kérdésem lenne, hogy hogyan lehet microC-ben a 16F628as mikroprocesszort sleep üzemmódba elküldeni ?
asm{sleep}
és microC-ben?
szia.
ok igazad van már leírtad és már beleraktam és működik is az összeadás meg a kivonás, de a szorzás osztás nem adja vissza azokat az értékeket mit szeretnék. értékek figyelését máshogyan megoldottam és látom is,h.mit rak bele.. progit majd csatolom. és frissítem akkor a legújabb verzióra az Mplabom.
A mellékelt tesztet végigléptettem a szimulátorban (step over gomb), s nekem úgy tűnik, hogy minden alapművelet működik.
Az eredeti teszt: (0x8A+0xFC)/0x5 = 4E Magyarra fordítva (138+252)/5 = 78 Megtoldottam a tesztet azzal, hogy visszaszorzok öttel, és kivonok 252-t (0xFC-t), s akkor visszakapom a kiindulási adatot (0xA). Arra ügyelj, hogy szorzáskor ne csorduljon ki a 16 bitből (tehát a szorzás eredménye ne legyen nagyobb 655535-nél)! Arra is ügyelj, hogy nem mindig Z-be kerül a művelet eredménye, hanem Y-ba.
Üdv, valaki tudna nekem ebben segíteni, hogy az ADCON1 és 0 mit csinál?
START BANKSEL TRISC CLRF TRISC MOVLW B'00001110' MOVWF ADCON1 BANKSEL PORTC MOVLW B'01000001' MOVWF ADCON0 A többivel tisztában vagyok, csak ezt nem tudom, ha esetleg kell még valami, akkor begépelem ![]()
Az adatlapban keress rá az ADCON0 és ADCON1 szavakra, és meg fogsz lepődni, mert le van írva, hogy mit csinálnak!
|
Bejelentkezés
Hirdetés |