Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   355 / 1319
(#) kissi válasza pako hozzászólására (») Dec 5, 2008 /
 
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
(#) pako válasza kissi hozzászólására (») Dec 5, 2008 /
 
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
(#) pako válasza pako hozzászólására (») Dec 5, 2008 /
 
A táblázat szerint 40MHz-es kvarccal akár 10Mb/s-et is tud. Kezd beindulni a fantáziám :smoke:
(#) szigetivan válasza trudnai hozzászólására (») Dec 5, 2008 /
 
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
(#) kissi válasza pako hozzászólására (») Dec 5, 2008 /
 
OK, sok sikert!

Steve
(#) palika hozzászólása Dec 6, 2008 /
 
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?

tabla.txt
    
(#) trudnai válasza palika hozzászólására (») Dec 6, 2008 /
 
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.
(#) szigetivan hozzászólása Dec 6, 2008 /
 
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
(#) palika válasza trudnai hozzászólására (») Dec 6, 2008 /
 
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
(#) googa hozzászólása Dec 6, 2008 /
 
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!
(#) trudnai válasza palika hozzászólására (») Dec 7, 2008 /
 
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...
(#) trudnai válasza googa hozzászólására (») Dec 7, 2008 /
 
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.
(#) googa válasza trudnai hozzászólására (») Dec 7, 2008 /
 
Ó, 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.
(#) trudnai válasza googa hozzászólására (») Dec 7, 2008 /
 
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
(#) googa válasza trudnai hozzászólására (») Dec 7, 2008 /
 
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!
(#) szilva válasza googa hozzászólására (») Dec 7, 2008 /
 
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.
(#) Braf hozzászólása Dec 7, 2008 /
 
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?
(#) trudnai válasza szilva hozzászólására (») Dec 7, 2008 /
 
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
(#) szilva válasza Braf hozzászólására (») Dec 7, 2008 /
 
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
(#) Braf válasza szilva hozzászólására (») Dec 7, 2008 /
 
Köszi!

Azt tudom, hogy "kézileg" kell váltani bankot ha közvetlen végzek műveletet egy regiszterrel.
(#) trudnai válasza Braf hozzászólására (») Dec 7, 2008 /
 
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
(#) watt válasza szigetivan hozzászólására (») Dec 7, 2008 /
 
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...
(#) palika válasza trudnai hozzászólására (») Dec 7, 2008 /
 
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
(#) MPi-c válasza palika hozzászólására (») Dec 7, 2008 /
 
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...
(#) palika válasza MPi-c hozzászólására (») Dec 7, 2008 /
 
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.
(#) watt válasza palika hozzászólására (») Dec 7, 2008 /
 
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...)
(#) palika válasza watt hozzászólására (») Dec 7, 2008 /
 
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
(#) watt válasza palika hozzászólására (») Dec 7, 2008 /
 
Nem értem az idnokaidat, de ha neked kényelmesebb ott középen szanaszét, akkor legyen!
(#) MPi-c válasza palika hozzászólására (») Dec 7, 2008 /
 
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.
  1. ;A TABLA1 hívása előtt a tábla címét be lehet állítani pl. így:
  2.  
  3.         movlw   0x08
  4.         movwf   pch_temp         ;PCH-ba írodó érték tárolása    
  5.         movlw   TABLA1         
  6.         movwf   tablacim    ;tábla címének tárolása
  7.         call    TABLA1
  8. ; ....
  9. ; -------------------------------------------------------------
  10. ;
  11. TABLAV1
  12.         movfw   pch_temp
  13.         movwf   PCLATH      ; előbb a PCH-ba kerülő érték beírása
  14.         incf    tablacim,F
  15.         movfw   tablacim
  16.         movwf   PCL       ; PCL beírása, ekkor kerül PCH-ba pch_temp értéke
  17. ; -------------------------------------------------------------
  18.  
  19.         org 0x0800                      ;gondolom látszik miért kell pch-ba 0x08?
  20. TABLA1
  21.         DT      " Menü               " ;MENU0
  22.         DT      "Kisütés             "        ;MENU1
(#) palika válasza watt hozzászólására (») Dec 7, 2008 /
 
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.
Következő: »»   355 / 1319
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem