Difference between revisions of "BLFT6c"

From DIDEAS Wiki
Jump to: navigation, search
m
 
m
 
Line 1: Line 1:
 
*{{T_lab_topnav}}
 
*{{T_lab_topnav}}
 
*{{T_lab_pca}}
 
*{{T_lab_pca}}
 
Taken from :http://scripts.mit.edu/~biomechatronics/wiki/index.php?title=BLMD6C
 
 
=changes=
 
==blmd6c==
 
* On MD board, replace RI2 with 40k, or RI1 with 5k ???  (M2-M10 built this way, may have correct IW1-5, M1)
 
 
==blft6c==
 
* On FET board, replace  RB1 with large resistance to identify board  (M2-M10 have 1M, M1, I1-I5 have random values)
 
* Add 3.0V SOD-123 zener (top) between RT1 and CO1.  Zener bar on RT1 side. (M8,M10,I4 corrected)
 
* FUTURE : Replace ZAP50 with ZAP25.
 
* User loop code to collect many samples from ADC1 (DMA in scatter gather mode)
 
* Redo motor temp sensing circuit
 
 
==ADISR2==
 
* Correct AVCC error on ADISR2 - install jumper
 
* increase local supply voltage to 5.6V, (put 3.9M across 200k) - or use 187 to 191k
 
 
=Connectors=
 
 
== encoder / hall ==
 
(Has 5V pullups, and 5 to 3.3V level shifters)
 
===PE1===
 
* PB3 - ENC.N
 
* PB4 - ENC.A
 
* PB5 - ENC.B
 
 
===PE2===
 
(Has 5V pullups, otherwise no protection)
 
* PD5 - HALL1
 
* PD6 - HALL2
 
* PD7 - HALL3
 
 
 
==analog inputs==
 
* NOTE CH0 is the muxed channel
 
* AN0 (CH1) - MOT.U
 
* AN1 (CH2) - V.IBAT
 
* AN2 (CH3)- MOT.W
 
* AN9 - HALF.AVCC5
 
* AN10 - VBUS
 
* AN12 - M.TEMP
 
* AN13 - ANA.IN (FET)
 
 
 
=blft6c=
 
==RB1==
 
* I1 : 1M
 
* I2 : 665K
 
* I3 : 330K
 
* I4 : 200K
 
* I5 : 100k
 
* M1 : 2.0M
 
 
calc values of r for desired ADC readings.
 
adc = 8:32:1024'
 
 
r = 1024 * Vcc5 * RB2 ./ (Vcc3.3 * adc)' - RB2
 
r = 1024 * 5 * 100 ./ (3.3 * adc)' - 100
 
 
=cables=
 
 
==hall to BLMD6c==
 
* 2 (4-23-08) used on ALHPA3
 
* 3 untested
 
* 4 untested
 
* 5 seems to have intermittent connection
 
* 6 (4-23-08) used on ALPHA1 for now.
 
 
 
=spec=
 
 
== INTERRUPT PRIORITY ==
 
* TOP : current control loop
 
* SS CN interrupt
 
* ASYNC serial ports
 
 
* TIMER3 - used for main loop timing, and disable the current loop controller if there is no SPI activity
 
 
==SPI slave==
 
 
===init===
 
* setup DMA channel for SPI slave.  No interrupt on the DMA
 
* config SPI to be a slave that uses SS as CS
 
* config CN11 (SS) to generate interrupt on both edges, make sure this int priority less than the PWM and serial
 
 
 
===data===
 
* SS is asserted, causes CN interrupt which loads TX data into DMA controller
 
* expect that 10uS is required for the loading
 
* assume F SCLK is 1MHz, 16uS per word - thus the magic word is transfered during this interval
 
* CN is negated, CN interrupt verifies that SPI DMA completed, and if Magic match - transfers Rx data into local registers, or increments SPI error count
 

Latest revision as of 04:53, 7 December 2009

Edit