Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

PIC16x -> SPI Master0,0 -> MCP3201
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=1520
Страница 1 от 1

Автор:  the_real_maniac [ Вто Яну 03, 2006 8:40 pm ]
Заглавие:  PIC16x -> SPI Master0,0 -> MCP3201

Е дойде и тоз момент да ползвам SPI , като цяло елементарна работа и наистина. И по законите на мърфи точно на елементарното нещата запецнаха. Нямам връзка ghrrrr :evil:

По темата:

почнах с 16F819-I/P , викам си да не би да е от мцу-то ,сложих 16F877 с леки изменения , все пак SPI-а там е на PORTC.

Друго MCP3201 - ADC 12bit , 1ch, SPI

Какво разбрах от datasheet: къде какво да се включи и как да си комуникирам:

CS(active LOW)

spi mode 0,0 clock idles low (това е което ползвам)
или
spi mode 1,1 clock idles high

MCP3201 sends data out on falling edge ! (т.е high to low , нали ?)

(и съм казал на PIC-a Transmit occurs on transition from active to Idle clock state (BIT6 SSPSTAT = 1))

--------

На базата на това (връзките са ми ок , всичко е вързано където трябва):

Момент , видях си недоглеждане - сменил съм само PORTC с PORTB, без да променя номера на бита/крака с този на 877 , оправих го , тествах , сега запецва и чака BUSYFLAG-a да падне, че е свършило получаването :(

Код:

SPI_INIT:

   BANK1

   bsf      TRISC,4   ;   SPI IN
   bcf      TRISC,5   ;   SPI OUT
   bcf      TRISC,3   ;   CLK
   bcf      TRISA,1   ;   CS
   
   movlw   B'01000000'
   movwf   SSPSTAT

   BANK0

   movlw   B'00100010'
   movwf   SSPCON
;
   return
;
;


Код:

#define   CS   PORTA,1

ADC:

   BANK0

   bsf      CS
   bcf      CS

   nop
   nop

; 200ns trqbwat na MCP3201 " da wyzprieme " promqnata na CS

   movlw   0x01
   movwf   SSPBUF

; С ICD2 следя какво става , но след movwf SSPBUF е равен на 0xFF, вместо 0x01 , което в случея не е проблем
; защото това се прави само за да задейства комуникацията , защото ПИК-а се явява мастър, поне така разбрах  ,че  трябва да бъде

   BANK1

   btfss   SSPSTAT,BF
   goto   $-1
   
   BANK0

   movfw   SSPBUF
   movwf   TEMP1

   movlw   0x01
   movwf   SSPBUF

   BANK1

   btfss   SSPSTAT,BF
   goto   $-1

   BANK0

   movfw   SSPBUF
   movwf   TEMP2

   bsf      CS
;
;
   bcf      SSPCON,SSPEN
;
;
   return
;
;


Това, което получавам е винаги 0xFF :-(
VRef Ми е 1.226 а при подаваният ~1mV от термодатчик (termocouple type K 20-30C = ~1.2mV) би трябвало да е или 0 или 1 (десетично).

идеи :?

edit: е как ще работи като не съм захранил ADC-то.
То е вързано, ама не му е подадено 5в ... :goodman: :yawinkle: :rolleyes:

засега всичко е на 6

Автор:  the_real_maniac [ Вто Яну 03, 2006 9:12 pm ]
Заглавие: 

Засякох 11,97265625mv при 12mv идващи от термодвойката :-)

Или B'000000101000' = D'40' -> 40/4096 * 1.226V * 1000 = X mV :-)

:supz: :partyman: :weedman:

edit: т.е стъпката ми е 0,29931640625 mV ~ 0.3mV :-) което за опитите ме у-ва напълно.

Само се чудя защо след

movlw 0x01
movwf SSPBUF

SSPBUF не е 0х01, а друго.

Примерно сега , когато работи както си му е реда е все 0x00 :? явно веднага се запълва със полученият отговор от АЦП-то

Защото засега 4-те най-големи MSB са ми все 0(нула), които се подават като 1вият байт от АЦП-то:

0000хххх

хххх = 4-те най-... MSB

Автор:  wwwroot [ Пон Юли 09, 2007 2:42 pm ]
Заглавие: 

а бе прятел от къде мога да го намеря това MCP3201 че се отрепах да го търся

Автор:  bobyper [ Пон Юли 09, 2007 3:31 pm ]
Заглавие: 

wwwroot написа:
а бе прятел от къде мога да го намеря това MCP3201 че се отрепах да го търся


http://comet.bg

Автор:  wwwroot [ Пон Юли 16, 2007 3:03 pm ]
Заглавие: 

blagodarq :)

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/