Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Szia!
A USART szinkron módban nem felel meg ( ott tudsz 9 bitet kiküldeni; még nem használtam, de az adatlap alaján szerintem lehet!)?! Steve
Hali!
Ez egész jónak tűnik. Ahogy néztem, van egy belső oszcija, illetve rákapcsolható az 'Fosc'-ra. Holnap kipróbálom, mit tud Csak ha nagyon megtetszik, álhatok neki egy szoftveres UART-nak, mer ez a modul már sajna foglalt, de egy próba erejéig felszabadítom
A táblázat szerint 40MHz-es kvarccal akár 10Mb/s-et is tud. Kezd beindulni a fantáziám :smoke:
Szia,
volt időd ránézni az A/D konverzióra szimulátorral? Sajnos nekem még ezek után sem működik. Vasárnap estig be kéne fejeznem a teljes programot, amiből csak ez a A/D konverteres rész ami nem működik. Köszi
Sziasztok!
Tudna abban valaki segíteni, hogy hogyan lehetne a pic programjában egy nagy táblázatot elhelyezni, úgy hogy rendesen működjön? Csatoltam a programrészletet. A táblázatban egy LCD-re írandó szövegeket tárolok. Az a baj vele, hogy a táblázat elejét szépen eléri, de a végét nem, mert a PCL túlcsordul. Próbáltam org d'500'-al olyan részre rakni a táblát a programmemóriában, ahol a PCL 0 közeli, de nem jó akkor se, mert akkor meg elugrik a program elejére. Van erre valami trükk?
PCLATH regisztert kell ehhez hasznalnod. Abba eloszor be kell toltened a tabla felso cimbitjeit a high direktivaval, majd miutan a PCL-t es az offsetet osszeadtad tulcsordulastol fuggoen novelned kell ezt az erteket, es csak ezutan szabad a PCL-be bemasolni az also 8 bitet! Magyaran az addwf PCL nem jo ebben az esetben!
Keress ra ezen a forumon ezekre, mert mar jomagam is es masok is irtak ilyenekre peldakat.
sziasztok!
konverzió probléma részben megoldva, az egyik szenzor(hőmérséklet) működik és ha változtatom a hőmérsékletet követi is a változást. Viszont a 2. szenzor (páratartalom) mindig konstans értéket ad, hiába gőzölögtetek..:S Szerintetek mi a hiba??zavarhatja a két konverzió egymást??miért ad konstans értéket bármit csinálok vele?? köszi
Szia!
Köszi a választ. Sikerült. Egyébként az addwf PCL-el is megy csak a programmemóriában oda kell tolni a táblát ahol a PCL kis értékű(pl. org h'100'-al) és a táblázat nem lehet hosszabb 254 karakternél. Mégegyszer köszi! Üdv Pali
Szerintetek van esély rá, hogy egy 2200 soros asm programot végigbogarásszak és megértsek? Hex-ből fordítottam vissza és gondolom azért lett ilyen bőséges. Szinte egyesével kapcsolgatják benne a különböző regiszterek bitjeit.
Egy valami nagyon furcsa nekem, hogy (16F648A-ról van szó) sehol egy TRISA, vag TRISB parancs... Pedig az elektronikában vannak bemenetek és kimenetek is. Mégsem állítják be azokat sehol sem. Erre tudnátok valami okosságot mondani tapasztalatból? Köszi! Idézet: „Egyébként az addwf PCL-el is megy csak a programmemóriában oda kell tolni a táblát ahol a PCL kis értékű(pl. org h'100'-al) és a táblázat nem lehet hosszabb 254 karakternél.” Ez igy van, de nem egy szep megoldas, azonkivul kesobb bovul a programod es mar nem is lesz jo... Idézet: „Szerintetek van esély rá, hogy egy 2200 soros asm programot végigbogarásszak és megértsek?” Persze, eleg ertelmes vagy a feladathoz Amugy mindig a kicsitol haladj a nagy fele. Azaz a kisebb egysegeket elemezd, kommentezd ki mit csinal, a cimkeket nevezd at ugy, hogy ertelme is legyen, es akkor kesobb majd latod, hogy a nagyobb falat ahol a kis rutinokat hivogatjak az mit csinal. Idézet: „Egy valami nagyon furcsa nekem, hogy (16F648A-ról van szó) sehol egy TRISA, vag TRISB parancs...” A 16F-eseknel (ill a 14 bites core eseteben) nem szokas hasznalni TRIS parancsot, bar megvan, letezik az utasitas de erosen ellen javallott volt sokaig... Helyette a TRISA es TRISB regisztereket hasznaljak amiket szinten ily modon lehet bitenkent birizgalni. Sok disassembler nem szedi vissza a specialis funkcio regiszterek neveit, emiatt nehezkes a visszafejtes. Nezd meg az adatlapban hol vannak a speci regiszterek es probald meg megtalalni, lecsereli a forrasban. Vagy nezd meg az unPIC projectemet, igaz az command line-os csak es kell hozza Perl is de epp ilyenek miatt kezdtem el fejleszteni.
Ó, elszúrtam. Nem azt akartam írni, hogy parancs, amikor TRISA-ról meg TRISB-ről beszéltem...
Egyébként köszi! Szóval helyesbítve: Nincsen a programban a TRISA és TRISB regiszterek kezlésére/beállítására utaló parancs. Először arra gondoltam, hogy ezt kiváltották mással, de hát az... Kicsit aggaszt, hogy a speckó regiszterek nem kerültek visszafordításra. Még ezt a kettőt észreveszem, de ha ennél dúrvábbak is hiányoznak, akkor szívni fogok vele. Idézet: „Még ezt a kettőt észreveszem, de ha ennél dúrvábbak is hiányoznak, akkor szívni fogok vele.” Megegyszer mondom: Epp emiatt csinaltam az unPIC-et, azaz azzal vissza tudod szedni az SFR-ek neveit, igya TRIS-eket is, csak kell hozza a kontrollerhez tartozo INC file - de gondolom az amugy is megvan
Jól van, na. Késő van, vagy korán. Nézőpont kérdése. Holnap elolvasom az alkotásod. Az inc megvan természetesen. Jó éjt!
Emlékem szerint a TRISA pont a PORTA-val egy címen lakik, csak másik bankban, ugyanígy a TRISB-PORTB pár. Emiatt a disassembler csak a 0. bankon lévő SFR neveket fogja visszafordítani, mert nem tudhatja, hogy a bankválasztó bitek épp hogyan állnak futáskor. Ezzel szerintem nem tudsz mit tenni, csak kézzel végigbogarászni, ahogy trudnai is írta, a kicsitől a nagyobb felé. Esetleg próbáld meg a javasolt unpic-et.
Egy gyors kérdés:
CBLOCK 0xA0 ; BANK1 VALAMI ENDC Most fordítás során a valami helyére 0x20 vagy A0 fog kerülni? Mármint ha közvetlen az fsr be töltöm a valamit akkor a bankváltó bit is beáll vagy azt "kézileg" kell beállítani? Idézet: „Emlékem szerint a TRISA pont a PORTA-val egy címen lakik, csak másik bankban, ugyanígy a TRISB-PORTB pár. Emiatt a disassembler csak a 0. bankon lévő SFR neveket fogja visszafordítani, mert nem tudhatja, hogy a bankválasztó bitek épp hogyan állnak futáskor.” Pontosan, ez egy oriasi gond a visszafejtesnel. Amit az unPIC-ben csinaltam, hogy egyreszt nyilvantartja a bankvaltasokat, masreszt a program folyamot felterkepezi. Ennek koszonhetoen az aktualis bankot felismeri es ennek megfeleloen valasztja ki az FSR-t. Azt is felismeri, ha a bankolas el van szurva, ugy ertem ha a program folyambol adodoan egyszer igy, masszor ugy all a bank. Ekkor ha jol emlekszem beletesz egy figyelmeztetest a visszafejtett forrasba - de ehhez mar regen nyultam es most mar csak homalyosan emlekszem mi lett a vege
VALAMI értéke 0xA0 lesz. Ha az általa megcímzett memóriarekeszhez akarsz férni, akkor kell elé a banksel, pl.:
banksel VALAMI movf VALAMI,w
Köszi!
Azt tudom, hogy "kézileg" kell váltani bankot ha közvetlen végzek műveletet egy regiszterrel. Idézet: „Most fordítás során a valami helyére 0x20 vagy A0 fog kerülni? Mármint ha közvetlen az fsr be töltöm a valamit akkor a bankváltó bit is beáll vagy azt "kézileg" kell beállítani?” Nezd meg a generalt LST file-t... Amugy Az le van irva az adatlapban, hogy az FSR eseteben hoyan kell bankolni. Az nincs az adatlapban, de az meg a help-ben van szepen leirva, hogy az indirekt cimzesnel a BANKSEL makro helyett a BANKISEL makrot kell hasznalni. Magyaran pl: MOVLW VALAMI BANKISEL VALAMI MOVWF INDF
Szerinted honnan a fenéből tudnánk mi a hiba? Azt se tudjuk mit csináltál, hogy az A/D "részben" már jó!
Egy biztos, az A/D nem egy bonyolult periféria, csak az adatlap szerint be kell állítani! Ha több bemenetet használsz, akkor azok között váltani kell, kivárva a kellő időket, stb. Az a baj, hogy nem szántál rá elég időt, hogy jól átnézd az adatlapot a nagy sietségben, pedig ennyi idő alatt már rég sikerült volna, ha nem tőlünk várod a teljes megoldást. Szerintem itt már minden elhangzott, csak éppen nem írtuk meg helyetted...
Szia!
Miért nem lesz jó? Már most is bajban vagyok mert a program átlóg a 2. page-re a programmemoriában, pedig kb az1/3 -ánál tartok, és ez megnehezíti a dolgomat. Úgy csináltam, hogy a táblázatokat mindig eltoltam odáig, hogy a PCL 0 legyen, és az előtte lévő üres helyet meg kitöltöttem valamivel(persze értelmes dologgal), így nem veszett el feleslegesen hely.Egyébként eddig 2 táblázat van és második is kezd telni. Eddig működnek rendesen.(A pic 16f877-as). Ha van valami ötleted miért nem lesz jó így a táblázat, kérlek írd meg, ne később legyen vele gondom. Üdv Pali
Ha használnád a PCL mellett a PCLATH regisztert is máshova is tehetnéd a táblázatodat, mondjuk a program végére, ahogy általában szokás...
Használom, mert máshogy nem is működik a táblázat.
Rakhatnám a végére, ez világos, de még nincs vége a programnak. Addig meg nem rakhatom a végére, mert nem mindegy milyen PCL értéknél kezdődik a táblázat és ahogy írom a programot mindig elcsúszna a helyéről.
Hogy csúszna el, ha rögzített helyre teszed? Most nem tudom, hogy linkert használsz-e, vagy nem, ezért vagy org-al kell rögzíteni a táblázatot, vagy a linkerben kell helyet foglalni nekik és arra hivatkozni, ha jól tudom a code és utána a linkerben foglalt címke név megadásával. De ezt trudnai majd kijavítja, ha nem jól emlékszem. (én org-olni szoktam, mivel (még) nem használom a linkert ASM-hoz...)
Szia!
Nem csúszik el természetesen ha rögzítem, és rögzitem is org-al, mert linkert én se használtam még. Nincs is baj a táblázattal működik már rendesen hála Trudnai segítségének. De felvetette, hogy később még lesz vele valami baj. Majd megírja mire is gondolt. MPi-c csak felvetette, hogy szebb lenne, ha a táblázat a program végén(esetleg az elején) lenne, nem a program közepén, ami igaz is, csak most még kényelmesebb így amíg a programot írom. Üdv Pali
Nem értem az idnokaidat, de ha neked kényelmesebb ott középen szanaszét, akkor legyen!
Gyanítom, hogy trudnai mondatára nem figyeltél:
Idézet: „Magyaran az addwf PCL nem jo ebben az esetben!” A táblázat címét meg lehet adni és előtte kényelmesen lehet a programot irogatni, nem fog csúszkálni semmi. Itt egy egyszerű változat. A címkéket a te programodból vettem.
Csak annyi az indokom, hogy a táblázat jelen felállásban csak akkor működik, ha a pr.mem-ban olyan helyen van ahol a pcl 0 körüli. Így minimum org 100-al el kell tolni(vagy org200-al stb) és igy előtte sok hely menne kárba, ha oda nem írnék semmit. Ha meg a program végén lenne, akkor átkerülne a page2-re.Csak ennyi.
|
Bejelentkezés
Hirdetés |