Truncated match.
PICList
Thread
'HI7191 handshaking problem'
1999\09\13@032602
by
Timur Cakal
|
part 0 22718 bytes content-type:text/html; charset=iso-8859-9<x-html><!x-stuff-for-pete base="" src="" id="0"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<TT>Subject: HI7191 handshaking problem</TT><TT></TT>
<P><TT>Hello my friends</TT>
<BR><TT>I am using PIC16F84 at 14.005 MHz with ceramic osilator. My problem
is with</TT>
<BR><TT>HI7191 serial ADC...</TT>
<BR><TT>Please help with the read & write rutines below...</TT><TT></TT>
<P><TT>Merhaba Ozgur Bey,</TT>
<BR><TT>Nazik mektubunuz beni çok sevindirdi. Demekki Türkiyede de PIC
calisan</TT>
<BR><TT>insanlar varmis.</TT>
<BR><TT>Ben PIC16F84 kullanýyorum. HI7191 Harrisin seri ADC si kristalim
14.005 MHz.</TT>
<BR><TT>3 bacakli seramik.</TT><TT></TT>
<P><TT>Ozgur Orman wrote:</TT><TT></TT>
<P><TT>> Selam</TT>
<BR><TT>> Isterseniz yazisabiliriz,
turkce karakterlere dikkat.</TT>
<BR><TT>> Kimimiz hala
pine kullaniyoruz.</TT>
<BR><TT>>
Ozgur D. Orman</TT><TT></TT>
<P><TT>...</TT>
<BR><TT>r2 equ
0x26 ;microwire
registers</TT>
<BR><TT>r3 equ
0x27 ;
"</TT>
<BR><TT>...</TT>
<BR><TT>#define adcSCLK PORTB,6 ;; microwire
!!!</TT>
<BR><TT>#define adcSDIO PORTB,5 ;; adc Serialdata
i/o</TT>
<BR><TT>#define adcSDO PORTB,3 ;; adc Serialdata
out</TT>
<BR><TT>#define adcCS PORTB,7 ;; adc
Chip Select</TT><TT></TT>
<P><TT>; ornegin 0xc6 hex sayisini ADC ye ADCYAZ rutini ile göndermek istiyorum.</TT>
<BR><TT>; e.g.: If I want to send 0xc6 hex number from register r3 to HI7191
via ADCYAZ rutine, I write</TT><TT></TT>
<P><TT> movlw
0xc6</TT>
<BR><TT> movwf
r3</TT>
<BR><TT> call
ADCYAZ</TT>
<BR><TT>...</TT>
<BR><TT>main</TT>
<BR><TT> movlw
0x22</TT>
<BR><TT> movwf
r3</TT>
<BR><TT> call
ADCYAZ</TT><TT></TT>
<P><TT> movlw
0x0a ;----------------------</TT>
<BR><TT> movwf
dec_0</TT>
<BR><TT> movf
dec_0,w</TT>
<BR><TT> movwf
digit_0</TT>
<BR><TT> call
print</TT>
<BR><TT> movlw
.3</TT>
<BR><TT> call
bekle</TT><TT></TT>
<P><TT> call
ADCOKU</TT>
<BR><TT> movf
r3, W</TT>
<BR><TT> movwf hbyte</TT><TT></TT>
<P><TT> movlw
0x0b ;----------------------</TT>
<BR><TT> movwf
dec_0</TT>
<BR><TT> movf
dec_0,w</TT>
<BR><TT> movwf
digit_0</TT>
<BR><TT> call
print</TT>
<BR><TT> movlw
.3</TT>
<BR><TT> call
bekle</TT><TT></TT>
<P><TT> call
ADCOKU</TT>
<BR><TT> movf
r3, W</TT>
<BR><TT> movwf lbyte</TT>
<BR><TT> call
adc_hexyaz</TT>
<BR><TT> movlw
.3</TT>
<BR><TT> call
bekle</TT>
<BR><TT> goto
main</TT>
<BR><TT>...</TT>
<BR><TT>;..........................</TT>
<BR><TT>;adc HI7191 okuma dongusu, sonuc r3 yazmacinda------------------</TT>
<BR><TT>;adc HI7191 read routine; result is in r3-------------------------</TT>
<BR><TT>ADCOKU</TT>
<BR><TT> ;CLRWDT
;STOP interrupt</TT>
<BR><TT> CLRF
F</TT>
<BR><TT> BSF
adcSDO</TT>
<BR><TT> BSF
adcSCLK</TT>
<BR><TT> BCF
adcCS ;/CS L enable:</TT>
<BR><TT>
;start</TT>
<BR><TT> movlw 0x0</TT>
<BR><TT> MOVF
r3, F</TT>
<BR><TT> movlw 0x8</TT>
<BR><TT> MOVF
r2, F ;bit
counter for serial</TT>
<BR><TT>;</TT>
<BR><TT>LOOP2</TT>
<BR><TT> ;CALL
PULSE.........................................</TT>
<BR><TT> bcf
adcSCLK</TT>
<BR><TT> CALL
DELAY ;10 ms.</TT>
<BR><TT> CALL
DELAY ;10 ms.----------------------------------</TT><TT></TT>
<P><TT> btfss adcSDIO</TT>
<BR><TT> goto
sifirla</TT>
<BR><TT> bsf
STATUS,C</TT>
<BR><TT> goto
loo3</TT>
<BR><TT>sifirla</TT>
<BR><TT> bcf
STATUS,C</TT>
<BR><TT>loo3</TT>
<BR><TT> bsf
adcSCLK</TT>
<BR><TT> CALL
DELAY ;10 ms.</TT>
<BR><TT> CALL
DELAY ;10 ms.</TT>
<BR><TT> MOVF
r3, W ;result
to Acc</TT>
<BR><TT> RLF
W, W</TT>
<BR><TT> MOVWF r3
;result to R3</TT>
<BR><TT> decfsz r2, F</TT>
<BR><TT> goto
LOOP2</TT><TT></TT>
<P><TT> BSF
adcSCLK</TT>
<BR><TT> BSF
adcCS</TT><TT></TT>
<P><TT> ;SETB
EA</TT>
<BR><TT> return</TT><TT></TT>
<P><TT>;adc HI7191 yazma dongusu, gelen deger r3 yazmacinda------------------</TT>
<BR><TT>;adc HI7191 read rutine, returned result is in r3 register</TT>
<BR><TT>ADCYAZ</TT>
<BR><TT> ;CLRWDT
;STOP interrupt</TT>
<BR><TT> CLRF F</TT>
<BR><TT> BSF
adcSCLK</TT>
<BR><TT> BCF
adcCS ;/CS L enable:</TT>
<BR><TT>
;start</TT>
<BR><TT> movlw 0x0</TT>
<BR><TT> MOVF
r2, F ;bit
counter for serial</TT>
<BR><TT>LOOP2y</TT>
<BR><TT> btfss r3,
r2 ;ilk once bit0
gonderilir...</TT>
<BR><TT> goto
sifirlay ;first bit0 send...</TT>
<BR><TT> bsf
adcSDIO</TT>
<BR><TT> goto
loo3y</TT>
<BR><TT>sifirlay</TT>
<BR><TT> bcf
adcSDIO</TT>
<BR><TT>loo3y</TT>
<BR><TT> CALL
PULSE</TT>
<BR><TT> incf
r2, F</TT><TT></TT>
<P><TT> if( r2< 8)</TT>
<BR><TT> goto
LOOP2y</TT>
<BR><TT> endif</TT><TT></TT>
<P><TT> BSF
adcSCLK</TT>
<BR><TT> BSF
adcCS</TT>
<BR><TT>return</TT><TT></TT>
<P><TT>PULSE</TT>
<BR><TT> bcf
adcSCLK</TT>
<BR><TT> CALL
DELAY ;10 ms.</TT>
<BR><TT> CALL
DELAY ;10 ms.</TT>
<BR><TT> bsf
adcSCLK</TT>
<BR><TT> return</TT><TT></TT>
<P><TT>;DELAY, IS A APPROX. WAIT FOR 20.4mSECS, FOR A SYSTEM USING A 2
Mhz CRYSTAL</TT>
<BR><TT>CLOCK.</TT>
<BR><TT>DELAY</TT>
<BR><TT> MOVLW .20
;20 milisaniye icin</TT>
<BR><TT> MOVWF don</TT>
<BR><TT>DLY1</TT>
<BR><TT> CLRF
don1</TT>
<BR><TT> DECFSZ don, F</TT>
<BR><TT> GOTO
DLY2</TT>
<BR><TT> RETLW 0</TT>
<BR><TT>DLY2</TT>
<BR><TT> DECFSZ don1, F
;INNER LOOP = 1.02 MSEC.</TT>
<BR><TT> GOTO
DLY2
; /</TT>
<BR><TT> GOTO
DLY1</TT>
<BR><TT> return</TT><TT></TT>
<P><TT>delay_e movlw .10</TT>
<BR><TT> movwf don</TT>
<BR><TT>top nop</TT>
<BR><TT> decfsz don,F</TT>
<BR><TT> goto
top</TT>
<BR><TT> return</TT><TT></TT>
<P><TT>bekle MOVWF don2</TT>
<BR><TT>BEKLE2 MOVLW 0x50</TT>
<BR><TT> MOVWF don1</TT>
<BR><TT>BEKLE1 MOVLW 0xff</TT>
<BR><TT> MOVWF don</TT>
<BR><TT>WAIT DECFSZ don</TT>
<BR><TT> GOTO
WAIT</TT>
<BR><TT> DECFSZ don1</TT>
<BR><TT> GOTO
BEKLE1</TT>
<BR><TT> DECFSZ don2</TT>
<BR><TT> GOTO
BEKLE2</TT>
<BR><TT> RETURN</TT>
<BR><TT>END</TT><TT></TT>
<P><TT>;but this program does not work.</TT>
<BR><TT>;----------------------------------------EOM-----------------------------------</TT></HTML>
</x-html>
1999\09\14@021732
by
root
Hi,
AFAIK the highest standard speed for PIC16F84 is 10MHz, for that selected
pieces.
Regards,
Imre
More... (looser matching)
- Last day of these posts
- In 1999
, 2000 only
- Today
- New search...