Skip to content

Commit

Permalink
Add support for Maytech 20A, 30A, 40A, 60A with calibrated complement…
Browse files Browse the repository at this point in the history
…ary PWM.
  • Loading branch information
sim- committed Mar 6, 2014
1 parent 0dd8b5e commit 7ec97b3
Show file tree
Hide file tree
Showing 6 changed files with 247 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ SHELL = /bin/bash

.SUFFIXES: .inc .hex

ALL_TARGETS = afro.hex afro2.hex afro_hv.hex afro_nfet.hex arctictiger.hex birdie70a.hex bs_nfet.hex bs.hex bs40a.hex dlu40a.hex dlux.hex dys_nfet.hex hk200a.hex hm135a.hex kda.hex mkblctrl1.hex rb50a.hex rb70a.hex rct50a.hex tbs.hex tp.hex tp_8khz.hex tp_i2c.hex tp_nfet.hex tp70a.hex tgy6a.hex tgy.hex
ALL_TARGETS = afro.hex afro2.hex afro_hv.hex afro_nfet.hex arctictiger.hex birdie70a.hex bs_nfet.hex bs.hex bs40a.hex dlu40a.hex dlux.hex dys_nfet.hex hk200a.hex hm135a.hex kda.hex maytech30a.hex maytech40a.hex maytech60a.hex mkblctrl1.hex rb50a.hex rb70a.hex rct50a.hex tbs.hex tp.hex tp_8khz.hex tp_i2c.hex tp_nfet.hex tp70a.hex tgy6a.hex tgy.hex
AUX_TARGETS = diy0.hex

all: $(ALL_TARGETS)
Expand Down
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,12 @@ Tested boards by target:
- Keda 12A rev B with inverted PWM input (30A should also work)
- Dynam 18A, 25A with Blue Heat Shrink
- Hobby King Multistar series (30A and under)
- maytech30a:
- Maytech 30A and 20A, complementary PWM
- maytech40a:
- Maytech 40A, complementary PWM
- maytech60a:
- Maytech 60A, complementary PWM
- mkblctrl1:
- MikroKopter BL-Ctrl v1.x (flashable by ISP only)
- rb50a.hex
Expand Down
78 changes: 78 additions & 0 deletions maytech30a.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
;*******************************
;* Maytech 30A and 20A *
;* Pin-compatible with bs_nfet *
;*******************************

.equ F_CPU = 16000000
.equ USE_INT0 = 1
.equ USE_I2C = 0 ; We could, but FETs are on the I2C ports
.equ USE_UART = 0
.equ USE_ICP = 0
.equ COMP_PWM = 1

.equ DEAD_LOW_NS = 300 ; 20A and 30A boards clean at 300ns
.equ DEAD_HIGH_NS = 300

;*********************
; PORT D definitions *
;*********************
;.equ = 7
;.equ = 6
.equ AnFET = 5
.equ ApFET = 4
;.equ = 3
.equ rcp_in = 2

.equ INIT_PD = (1<<ApFET)
.equ DIR_PD = (1<<AnFET)+(1<<ApFET)

.equ AnFET_port = PORTD
.equ ApFET_port = PORTD

;*********************
; PORT C definitions *
;*********************
.equ mux_b = 7 ; ADC7
.equ mux_a = 6 ; ADC6
.equ BpFET = 5
.equ BnFET = 4
.equ CpFET = 3
.equ mux_voltage = 2 ; ADC2 voltage input (220k from Vbat, 51k to gnd, 10.10V -> 1.900V at ADC2)
.equ mux_temperature = 1 ; ADC1 temperature input (some boards) (10k NTC to 5V, 820 to gnd)
.equ mux_c = 0 ; ADC0

.equ O_POWER = 220
.equ O_GROUND = 51

.equ INIT_PC = (1<<BpFET)+(1<<CpFET)
.equ DIR_PC = (1<<BnFET)+(1<<BpFET)+(1<<CpFET)

.equ BpFET_port = PORTC
.equ BnFET_port = PORTC
.equ CpFET_port = PORTC

;*********************
; PORT B definitions *
;*********************
;.equ = 7
;.equ = 6
;.equ = 5 (sck stk200 interface)
;.equ = 4 (miso stk200 interface)
;.equ = 3 (mosi stk200 interface)
.equ GND_PIN = 2 ; Seems to be grounded on this board
;.equ = 1
.equ CnFET = 0

.equ INIT_PB = 0
.equ DIR_PB = (1<<CnFET)

.equ CnFET_port = PORTB

.MACRO RED_on
.ENDMACRO
.MACRO RED_off
.ENDMACRO
.MACRO GRN_on
.ENDMACRO
.MACRO GRN_off
.ENDMACRO
78 changes: 78 additions & 0 deletions maytech40a.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
;*****************************
;* Maytech 40A *
;* Pin-compatible with bs40a *
;*****************************

.equ F_CPU = 16000000
.equ USE_INT0 = 1
.equ USE_I2C = 0 ; We could, but FETs are on the I2C ports
.equ USE_UART = 0
.equ USE_ICP = 0
.equ COMP_PWM = 1

.equ DEAD_LOW_NS = 950 ; Noise at 700ns, 800ns, clean at 850ns, 900ns
.equ DEAD_HIGH_NS = 950 ; Noise at 850ns, mostly clean at 900ns, clean at 950ns

;*********************
; PORT D definitions *
;*********************
;.equ = 7
;.equ = 6
.equ CnFET = 5
.equ ApFET = 4
;.equ = 3
.equ rcp_in = 2

.equ INIT_PD = 0
.equ DIR_PD = (1<<CnFET)+(1<<ApFET)

.equ CnFET_port = PORTD
.equ ApFET_port = PORTD

;*********************
; PORT C definitions *
;*********************
.equ mux_b = 7 ; ADC7
.equ mux_a = 6 ; ADC6
.equ BpFET = 5
.equ BnFET = 4
.equ CpFET = 3
.equ mux_voltage = 2 ; ADC2 voltage input (220k from Vbat, 51k to gnd, 10.10V -> 1.900V at ADC2)
;.equ = 1
.equ mux_c = 0 ; ADC0

.equ O_POWER = 220
.equ O_GROUND = 51

.equ INIT_PC = 0
.equ DIR_PC = (1<<BnFET)+(1<<BpFET)+(1<<CpFET)

.equ BpFET_port = PORTC
.equ BnFET_port = PORTC
.equ CpFET_port = PORTC

;*********************
; PORT B definitions *
;*********************
;.equ = 7
;.equ = 6
;.equ = 5 (sck stk200 interface)
;.equ = 4 (miso stk200 interface)
;.equ = 3 (mosi stk200 interface)
;.equ = 2
;.equ = 1
.equ AnFET = 0

.equ INIT_PB = 0
.equ DIR_PB = (1<<AnFET)

.equ AnFET_port = PORTB

.MACRO RED_on
.ENDMACRO
.MACRO RED_off
.ENDMACRO
.MACRO GRN_on
.ENDMACRO
.MACRO GRN_off
.ENDMACRO
78 changes: 78 additions & 0 deletions maytech60a.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
;*****************************
;* Maytech 60A *
;* Pin-compatible with bs40a *
;*****************************

.equ F_CPU = 16000000
.equ USE_INT0 = 1
.equ USE_I2C = 0 ; We could, but FETs are on the I2C ports
.equ USE_UART = 0
.equ USE_ICP = 0
.equ COMP_PWM = 1

.equ DEAD_LOW_NS = 1050 ; Noise at 900, 950, clean at 1000, 1050, 1100
.equ DEAD_HIGH_NS = 1050 ; Noise at 800, 900, gone at 1000, clean at 1050, 1100

;*********************
; PORT D definitions *
;*********************
;.equ = 7
;.equ = 6
.equ CnFET = 5
.equ ApFET = 4
;.equ = 3
.equ rcp_in = 2

.equ INIT_PD = 0
.equ DIR_PD = (1<<CnFET)+(1<<ApFET)

.equ CnFET_port = PORTD
.equ ApFET_port = PORTD

;*********************
; PORT C definitions *
;*********************
.equ mux_b = 7 ; ADC7
.equ mux_a = 6 ; ADC6
.equ BpFET = 5
.equ BnFET = 4
.equ CpFET = 3
.equ mux_voltage = 2 ; ADC2 voltage input (220k from Vbat, 51k to gnd, 10.10V -> 1.900V at ADC2)
;.equ = 1
.equ mux_c = 0 ; ADC0

.equ O_POWER = 220
.equ O_GROUND = 51

.equ INIT_PC = 0
.equ DIR_PC = (1<<BnFET)+(1<<BpFET)+(1<<CpFET)

.equ BpFET_port = PORTC
.equ BnFET_port = PORTC
.equ CpFET_port = PORTC

;*********************
; PORT B definitions *
;*********************
;.equ = 7
;.equ = 6
;.equ = 5 (sck stk200 interface)
;.equ = 4 (miso stk200 interface)
;.equ = 3 (mosi stk200 interface)
;.equ = 2
;.equ = 1
.equ AnFET = 0

.equ INIT_PB = 0
.equ DIR_PB = (1<<AnFET)

.equ AnFET_port = PORTB

.MACRO RED_on
.ENDMACRO
.MACRO RED_off
.ENDMACRO
.MACRO GRN_on
.ENDMACRO
.MACRO GRN_off
.ENDMACRO
6 changes: 6 additions & 0 deletions tgy.asm
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,12 @@
#include "hm135a.inc" ; Hacker/Jeti Master 135-O-F5B 135A inverted-PWM-opto (INT0 PWM)
#elif defined(kda_esc)
#include "kda.inc" ; Keda Model 12A - 30A (INT0 PWM)
#elif defined(maytech30a_esc)
#include "maytech30a.inc" ; Maytech 30A and 20A with all nFETs (INT0 PWM)
#elif defined(maytech40a_esc)
#include "maytech40a.inc" ; Maytech 40A with all nFETs (INT0 PWM)
#elif defined(maytech60a_esc)
#include "maytech60a.inc" ; Maytech 60A with all nFETs (INT0 PWM)
#elif defined(rb50a_esc)
#include "rb50a.inc" ; Red Brick 50A with all nFETs (INT0 PWM)
#elif defined(rb70a_esc)
Expand Down

0 comments on commit 7ec97b3

Please sign in to comment.