Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   187 / 1320
(#) fnszunyo válasza vicsys hozzászólására (») Ápr 13, 2008 /
 
Már mértem: stabil 13V az MCLR (4) lábon.
(#) vicsys válasza fnszunyo hozzászólására (») Ápr 13, 2008 /
 
Nem túl hosszú a kábeled a fej és gép között? Nekem 60cm-nél hosszabb kábelnál döcögött. Egyébként UTP-t használok.
(#) fnszunyo válasza vicsys hozzászólására (») Ápr 13, 2008 /
 
Az enyén 8 eres alarm cable azaz riasztó kábel, és pár centivel hosszabb, mint 2méter.
(#) vicsys válasza fnszunyo hozzászólására (») Ápr 13, 2008 /
 
Teszteld le amit írtam. Vagy első lépésben kösd be a kábelodon az árnyékolást is GND-re. Bár a 2 méter szörnyen hosszú...
(#) fnszunyo válasza vicsys hozzászólására (») Ápr 13, 2008 /
 
Nos! Ezt fogom tenni: kicserélem a kábelt kb. 30centis UTP-re. Aztán megkeresem itt az oldalon a feszültségekre vonatkozó részt, végigbogarászom a hardverem. Ha minden stimmel, és mégsem működik, akkor jelentkezek. Persze, ha működik akkor is.
Addig is köszönöm a segítséget!
(#) trudnai válasza fnszunyo hozzászólására (») Ápr 13, 2008 /
 
iraskor milyen feszultsegeket mersz a labakon? Bulk erase van abban az icprogrban? Az sikeres?
(#) Mate78 válasza potyo hozzászólására (») Ápr 13, 2008 /
 
Köszi a választ ,most már világos.

üdv

Máté
(#) SzaboZE válasza szilva hozzászólására (») Ápr 13, 2008 /
 
Szerintem a memórialapok kezelésében volt valami, mert most makróként hívom meg az egyes I2C műveleteket. Itt találtam a példát a fórumon. Akadt ismét egy kis érdekesség. Az óra IC írása csak akkor akar rendesen menni, ha a direkt értéket mozgatom W-be, és úgy küldöm el neki. Ha változóból másolom W-be az értéket, akkor egy tök más értéket ír be.

tehát az alábbi működik csak:

...
movlw h'12'
I2C_send
...

ha viszont

...
movlw Hour
I2C_send
...

a felállás, akkor elcseszi Ehhez azért lenne szükség, mert ugye be kellene állítani az időt gombokkal, így viszont elég nehéz Van tippetek mitől lehet? Akkor sem akar menni, ha közvetlenül előtte írom a változóba az értéket (próbaképpen kipróbáltam), tehát
elé írtam egy

movlw h'12'
movwf Hour

parancsot.

Itt az I2C_send is:

I2C_send: MACRO
movwf SSPBUF
btfss PIR1, SSPIF
goto $-1 ; var mig vege a kuldesnek
bcf PIR1, SSPIF
bank1
bsf STATUS,Z
btfss SSPCON2, ACKSTAT ; ACK detektalasa
bcf STATUS,Z
bank0
ENDM
(#) trudnai válasza SzaboZE hozzászólására (») Ápr 13, 2008 /
 
Idézet:
„movlw Hour
I2C_send”


...nem cseszi el csak el kellene olvasni a datasheetben vagy mas doksikban, hogy a MOVLW mit csinal... az egy konstanst tolt be a W-be, ha valtozo nevet irod oda akkor gyakorlatilag a valtozo cimet teszi be a W-be es NEM az erteket!

Hasznald a MOVF Hour,W -t helyette es mindjart jo lesz.
(#) SzaboZE válasza trudnai hozzászólására (») Ápr 13, 2008 /
 
Affene, próbáltam is, de nem értettem miért nem megy. Igaz én movf Hour,0 -val próbálkoztam és úgy nem akart menni. Köszönöm a segítséget. Még esetleg valaki tud segíteni, hogy decimális számból hexadecimálisat hogyan konvertáljak?

Szerk, most próbáltam movf Hour,W-vel ugyanez a helyzet
(#) SzaboZE hozzászólása Ápr 13, 2008 /
 
Késő van már movwf helyett movfw volt :-S Köszi mégegyszer a segítséget. Most azon töprengek, hogy lehetne hexa formába áttenni a decimális értéket.
(#) potyo válasza SzaboZE hozzászólására (») Ápr 14, 2008 /
 
Idézet:
„Most azon töprengek, hogy lehetne hexa formába áttenni a decimális értéket.”


Alapkérdés: milyen célból? Mert a kontroller belül így is úgy is bináris számokkal dolgozik.
(#) trudnai válasza SzaboZE hozzászólására (») Ápr 14, 2008 /
 
MOVFW nem letezo utasitas, az egy makro lesz amit valamiert itt szeretnek hasznalni az emberek. Magam reszerol kerulom mert a meglevo dyslexiam melle nem hianyzik egy ilyen hiba amibe te is bele utkoztel
(#) trudnai válasza SzaboZE hozzászólására (») Ápr 14, 2008 /
 
Idézet:
„Most azon töprengek, hogy lehetne hexa formába áttenni a decimális értéket.”


Decimalis BCD-ben van vagy ASCII-ban? (Remelem nem az a kerdes hogy lehet a forrasba hexa szamot leirni, mert azt nyilvan tudod a forraskododbol itelve )
(#) SzaboZE válasza potyo hozzászólására (») Ápr 14, 2008 /
 
Az ora IC hexa formatumban dolgozik. Tehát a 12:23 az neki 0x12 és 0x23 formátumban jelenik meg. Az idő beállításánál 0-ról növelem a hexa értékeket , akkor a 12 nem 12 lesz hanem 1B. Ezért kellene 'konvertálnom a karaktereket'.
(#) potyo válasza SzaboZE hozzászólására (») Ápr 14, 2008 /
 
Az nem hexa formátum, hanem binárisan kódolt decimális szám!

Ha az alsó négy bit elért 1010-ra, akkor nullázod az alsó négy bitet, és hozzáadsz a változóhoz 0x10-t. Ez azután mehet direktben az órába.
(#) SzaboZE válasza potyo hozzászólására (») Ápr 14, 2008 /
 
Köszi szépen, ezen az úton indulok el!
(#) trudnai válasza SzaboZE hozzászólására (») Ápr 14, 2008 /
 
Potyo hozzaszolasat csak annyiban egeszitenem ki, hogy BCD-nek szoktak roviditeni, ha ra szeretnel keresni a neten algoritmusokra.

Amugy a decimalis 12 hogy jott neked ki hexa 1B-re? Remelem csak eliras, mert az siman csak B
(#) trudnai válasza trudnai hozzászólására (») Ápr 14, 2008 /
 
ja, kozben rajottem mekkora marhasagot irtam en is: 12 az ugye hexa C Epp csak felkeltem, bar lehdt jobb, ha nem magyarazkodom inkabb
(#) SzaboZE válasza trudnai hozzászólására (») Ápr 14, 2008 /
 
Most így pihentebben, én is láttam mit írtam este A lényeg az, hogy a számjegyekben az A-F is megjelenik jelenleg. Amit én szeretnék az az, hogy a d'12'-ből h'12' legyen. Ne pedig h'0C'.
(#) trudnai válasza SzaboZE hozzászólására (») Ápr 14, 2008 /
 
Nem. A BCD az Binarisan Kodolt Decimalis szam (Binary Coded Decimal - BCD). Nezz utana, csak diohejban: Van pakolt es pakolatlan formaja ennek az abrazolasnak. Pakolatlanul minden decimalis szamjegy egy byte-on van tarolva, azaz a d'12' az 0x01 0x02 lenne. A pakoltnal meg ugye 0x12 lesz.

Ha azt mondod, hogy van egy szamod, amit a forrasban ugye d'12' -nek irsz, az ugye mindenkepp 0x0C -nek tarolodik el, mivel a gep binarisan 'gondolkodik'. A feladat annyi, hogy ebbol a 0x0C-bol kapj '0x12'-t.

Irj egy rutint, ami ezt megcsinalja - potyo mar irt valamit hogy hogyan indulj el, azonkivul biztosan rengeteg peldat is talalni a neten ilyen kovertalasokra es BCD aritmetikara. Velemenyem szerint jobban rogzulne benned ez ha magad probalkoznal a konvertalas megirasaval.
(#) berci1987 hozzászólása Ápr 14, 2008 /
 
Bocsi a minden bizonyal kezdő kérdésért ,de nem tudok rájönni hogy a __config utáni konfigurációs biteket honnan lehet összegyűjteni. /tehát honnan tudom meg mit kell oda írni ha nincs előttem egy megírt példa/
(#) szilva válasza berci1987 hozzászólására (») Ápr 14, 2008 /
 
Az MPLAB programkönyvtárában keresd meg a használt PIC include file-ját. Annak a végén szoktak lenni a konfigurációs lehetőségek definiálva. Ezeket a megnevezéseket az adatlappal összevetve kiderül, hogy melyik megnevezés milyen beállítást takar.
(#) berci1987 válasza szilva hozzászólására (») Ápr 14, 2008 /
 
Köszönom ! lehet még egy kérdésem ?
Mit jelent a
;----- Configuration Word1 ---
;----- Configuration Word2 --- ?

És amit nem állítok be az beáll valamilyen értékre vagy hibát fog jelezni ? -Bocs a bugyuta kérdésekért de még csak ismerkedek a témával-
(#) potyo válasza berci1987 hozzászólására (») Ápr 14, 2008 /
 
Idézet:
„Mit jelent a ;----- Configuration Word1 --- ;----- Configuration Word2 --- ?”

Hol találtad?


Idézet:
„És amit nem állítok be az beáll valamilyen értékre vagy hibát fog jelezni ?”

Amit nem állítasz be, azt általában úgy veszi mintha egyre lennének azok a bitek állítva. Ez érvényes a konfig bitekre is, és pl. ha az INCF utasításnak elhagyod a második paraméterét, akkor úgy veszi mintha ott is egy állna (ez utóbbiért azért egy üzenetet megjelenít, hogy inkább írd oda).
(#) berci1987 válasza potyo hozzászólására (») Ápr 14, 2008 /
 
A konfigurációs biteket tagolja ezzel a két komenttel a(z) Mplab-ban található fájl
(#) trudnai válasza berci1987 hozzászólására (») Ápr 14, 2008 /
 
Meg csak annyit ehhez a temahoz, hogy az MPLAB-ban a projectedben is be tudod allitani a config ertekeket, tehat nem biztos, hogy a forras file tukrozni fogja az aktualis konfigurtaciot, DE! Es ez egy csupa nagybetus DE: Nem ajanlatos igy konfiguralgatni a chipet mert akkor a forrasbol nem derul ki a forditas eredmenye es igy kesobb nehezebb vissza emlekezni hogy is kell bekonfiguralni stb - es mivel legtobbszor az ember csak a forrasokat menti ill. kuldi el kollegaknak vagy eppen ide a forumra, hogy mi is a problema a koddal, ezert ez az informacio igencsak hianyozni fog az elemzeshez.
(#) SzaboZE válasza trudnai hozzászólására (») Ápr 14, 2008 /
 
Mivel egy inkrementáló folyamatban van alkalmazva az eljárás, ezért azt hiszem ez volt a legegyszerűbb megoldás:
...

INCFSZ ertek,f ; 1-el növelem az értéket

MOVF ertek,W ; elmentem az értéket "mentes"-be
MOVWF mentes

BCF ertek,7 ; felső 4 bitet nullázom
BCF ertek,6
BCF ertek,5
BCF ertek,4

MOVLW 0x0A ; d'10'-et kivonok az értékből
SUBWF ertek
BTFSC STATUS,2 ; (zerus bit figyelese)
call ADD06

MOVF mentes,W ; a kimeneti érték W-ben
MOVWF ertek ; kovertált érték bekerült a régi helyére
...

ADD06
MOVLW 0x06
ADDWF mentes,1

RETURN

Kezdőként ez jutott eszembe, mit mondotok rá? Működik, de van-e szebb / jobb módszer?
(#) potyo válasza SzaboZE hozzászólására (») Ápr 14, 2008 /
 
Úgy nézem, jó. Én így csinálnám:
  1. INCF ertek, F   ; ertek növelése 1-el
  2. MOVF ertek, W   ; ertek másolása W-be
  3. ANDLW b'00001111' ; alsó négy bit maszkolása
  4. XORLW b'00001010' ; alsó négy bit egyezik e 1010-val?
  5. MOVLW 0x06      ; 0x06-ot töltünk W-be
  6. BTFSC STATUS, Z ; ha az alsó négy bit egyezett 1010-val (Z flag bebillent)
  7. ADDWF ertek, F  ; akkor hozzáadjuk a 0x06-ot ertek-hez
  8. RETURN          ;
(#) trudnai válasza potyo hozzászólására (») Ápr 15, 2008 /
 
Kicsit beindult a fantaziam hogyan lehetne ezt optimalizalni, szoval ha inkrementalas, akkor ez ugy hiszem mukodokepes:

  1. incf    ertek
  2.     btfsc   ertek,3
  3.     btfss   ertek,1
  4.     goto    ugras
  5.     movlw   6
  6.     addwf   ertek,f
  7. ugras

Következő: »»   187 / 1320
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