Testet automatic drill speed management

This commit is contained in:
Eddy 2014-08-19 18:10:00 +04:00
parent 359cae8bbd
commit 64d8bfdb78
18 changed files with 2195 additions and 656 deletions

View File

@ -168,6 +168,8 @@ int main() {
TIM4_CR1 = TIM_CR1_APRE | TIM_CR1_URS | TIM_CR1_CEN; TIM4_CR1 = TIM_CR1_APRE | TIM_CR1_URS | TIM_CR1_CEN;
// EXTI: PC1 & PC2 == "boom" // EXTI: PC1 & PC2 == "boom"
EXTI_CR1 = 0x10; // PCIS = 01 - rising edge only EXTI_CR1 = 0x10; // PCIS = 01 - rising edge only
// PC_CR1 = 0x06; // PC1 & PC2 pullup
// PC_CR1 = 0x06; // enable EXTI
#ifdef UART #ifdef UART
// Configure pins // Configure pins
// PC2 - PP output (on-board LED) // PC2 - PP output (on-board LED)

22
client-term-8bit/Makefile Normal file
View File

@ -0,0 +1,22 @@
PROGRAM = client
LDFLAGS =
SRCS = client.c
CC = gcc
DEFINES = -D_XOPEN_SOURCE=501
CXX = gcc
CFLAGS = -Wall -Werror $(DEFINES)
OBJS = $(SRCS:.c=.o)
all : $(PROGRAM) clean
$(PROGRAM) : $(OBJS)
$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o $(PROGRAM)
# some addition dependencies
# %.o: %.c
# $(CC) $(LDFLAGS) $(CFLAGS) $< -o $@
#$(SRCS) : %.c : %.h $(INDEPENDENT_HEADERS)
# @touch $@
clean:
/bin/rm -f *.o *~
depend:
$(CXX) -MM $(CXX.SRCS)

223
client-term-8bit/client.c Normal file
View File

@ -0,0 +1,223 @@
/*
* client.c - simple terminal client
*
* Copyright 2013 Edward V. Emelianoff <eddy@sao.ru>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
#include <termios.h> // tcsetattr
#include <unistd.h> // tcsetattr, close, read, write
#include <sys/ioctl.h> // ioctl
#include <stdio.h> // printf, getchar, fopen, perror
#include <stdlib.h> // exit
#include <sys/stat.h> // read
#include <fcntl.h> // read
#include <signal.h> // signal
#include <time.h> // time
#include <string.h> // memcpy
#include <stdint.h> // int types
#include <sys/time.h> // gettimeofday
double t0; // start time
FILE *fout = NULL; // file for messages duplicating
char *comdev = "/dev/ttyUSB0";
int BAUD_RATE = B57600;
struct termio oldtty, tty; // TTY flags
struct termios oldt, newt; // terminal flags
int comfd; // TTY fd
/**
* function for different purposes that need to know time intervals
* @return double value: time in seconds
*/
double dtime(){
double t;
struct timeval tv;
gettimeofday(&tv, NULL);
t = tv.tv_sec + ((double)tv.tv_usec)/1e6;
return t;
}
/**
* Exit & return terminal to old state
* @param ex_stat - status (return code)
*/
void quit(int ex_stat){
tcsetattr(STDIN_FILENO, TCSANOW, &oldt); // return terminal to previous state
ioctl(comfd, TCSANOW, &oldtty ); // return TTY to previous state
close(comfd);
if(fout) fclose(fout);
printf("Exit! (%d)\n", ex_stat);
exit(ex_stat);
}
/**
* Open & setup TTY, terminal
*/
void tty_init(){
// terminal without echo
tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
if(tcsetattr(STDIN_FILENO, TCSANOW, &newt) < 0) quit(-2);
printf("\nOpen port...\n");
if ((comfd = open(comdev,O_RDWR|O_NOCTTY|O_NONBLOCK)) < 0){
fprintf(stderr,"Can't use port %s\n",comdev);
quit(1);
}
printf(" OK\nGet current settings...\n");
if(ioctl(comfd,TCGETA,&oldtty) < 0) exit(-1); // Get settings
tty = oldtty;
tty.c_lflag = 0; // ~(ICANON | ECHO | ECHOE | ISIG)
tty.c_oflag = 0;
tty.c_cflag = BAUD_RATE|CS8|CREAD|CLOCAL; // 9.6k, 8N1, RW, ignore line ctrl
tty.c_cc[VMIN] = 0; // non-canonical mode
tty.c_cc[VTIME] = 5;
if(ioctl(comfd,TCSETA,&tty) < 0) exit(-1); // set new mode
printf(" OK\n");
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
}
/**
* Read character from console without echo
* @return char readed
*/
int read_console(){
int rb;
struct timeval tv;
int retval;
fd_set rfds;
FD_ZERO(&rfds);
FD_SET(STDIN_FILENO, &rfds);
tv.tv_sec = 0; tv.tv_usec = 10000;
retval = select(1, &rfds, NULL, NULL, &tv);
if(!retval) rb = 0;
else {
if(FD_ISSET(STDIN_FILENO, &rfds)) rb = getchar();
else rb = 0;
}
return rb;
}
/**
* getchar() without echo
* wait until at least one character pressed
* @return character readed
*/
int mygetchar(){ // ÁÎÁÌÏÇ getchar() ÂÅÚ ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÖÁÔØ Enter
int ret;
do ret = read_console();
while(ret == 0);
return ret;
}
/**
* Read data from TTY
* @param buff (o) - buffer for data read
* @param length - buffer len
* @return amount of readed bytes
*/
size_t read_tty(uint8_t *buff, size_t length){
ssize_t L = 0;
fd_set rfds;
struct timeval tv;
int retval;
FD_ZERO(&rfds);
FD_SET(comfd, &rfds);
tv.tv_sec = 0; tv.tv_usec = 10000; // wait for 10ms
retval = select(comfd + 1, &rfds, NULL, NULL, &tv);
if (!retval) return 0;
if(FD_ISSET(comfd, &rfds)){
if((L = read(comfd, buff, length)) < 1) return 0;
}
return (size_t)L;
}
void help(){
printf("Use this commands:\n"
"h\tShow this help\n"
"q\tQuit\n"
);
}
#define dup_pr(...) do{printf(__VA_ARGS__); if(fout) fprintf(fout, __VA_ARGS__);}while(0)
void con_sig(int rb){
uint8_t cmd;
if(rb < 1) return;
if(rb == 'q') quit(0); // q == exit
cmd = (uint8_t) rb;
write(comfd, &cmd, 1);
/*switch(rb){
case 'h':
help();
break;
default:
cmd = (uint8_t) rb;
write(comfd, &cmd, 1);
}*/
}
/**
* Get integer value from buffer
* @param buff (i) - buffer with int
* @param len - length of data in buffer (could be 2 or 4)
* @return
*/
uint32_t get_int(uint8_t *buff, size_t len){
if(len != 2 && len != 4){
fprintf(stdout, "Bad data length!\n");
return 0xffffffff;
}
uint32_t data = 0;
uint8_t *i8 = (uint8_t*) &data;
if(len == 2) memcpy(i8, buff, 2);
else memcpy(i8, buff, 4);
return data;
}
int main(int argc, char *argv[]){
int rb;
uint8_t buff[256];
size_t L;
if(argc == 2){
fout = fopen(argv[1], "a");
if(!fout){
perror("Can't open output file");
exit(-1);
}
setbuf(fout, NULL);
}
tty_init();
signal(SIGTERM, quit); // kill (-15)
signal(SIGINT, quit); // ctrl+C
signal(SIGQUIT, SIG_IGN); // ctrl+\ .
signal(SIGTSTP, SIG_IGN); // ctrl+Z
setbuf(stdout, NULL);
t0 = dtime();
while(1){
rb = read_console();
if(rb > 0) con_sig(rb);
L = read_tty(buff, 255);
if(L){
buff[L] = 0;
printf("%s", buff);
//if(fout) fprintf(fout, "%zd\t%s", time(NULL), buff);
if(fout) fprintf(fout, "%s", buff);
}
}
}

View File

@ -0,0 +1,22 @@
PROGRAM = client
LDFLAGS =
SRCS = client.c
CC = gcc
DEFINES = -D_XOPEN_SOURCE=501
CXX = gcc
CFLAGS = -Wall -Werror $(DEFINES)
OBJS = $(SRCS:.c=.o)
all : $(PROGRAM) clean
$(PROGRAM) : $(OBJS)
$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o $(PROGRAM)
# some addition dependencies
# %.o: %.c
# $(CC) $(LDFLAGS) $(CFLAGS) $< -o $@
#$(SRCS) : %.c : %.h $(INDEPENDENT_HEADERS)
# @touch $@
clean:
/bin/rm -f *.o *~
depend:
$(CXX) -MM $(CXX.SRCS)

BIN
microdrill/client-term/client Executable file

Binary file not shown.

View File

@ -0,0 +1,223 @@
/*
* client.c - simple terminal client
*
* Copyright 2013 Edward V. Emelianoff <eddy@sao.ru>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
#include <termios.h> // tcsetattr
#include <unistd.h> // tcsetattr, close, read, write
#include <sys/ioctl.h> // ioctl
#include <stdio.h> // printf, getchar, fopen, perror
#include <stdlib.h> // exit
#include <sys/stat.h> // read
#include <fcntl.h> // read
#include <signal.h> // signal
#include <time.h> // time
#include <string.h> // memcpy
#include <stdint.h> // int types
#include <sys/time.h> // gettimeofday
double t0; // start time
FILE *fout = NULL; // file for messages duplicating
char *comdev = "/dev/ttyUSB0";
int BAUD_RATE = B57600;
struct termio oldtty, tty; // TTY flags
struct termios oldt, newt; // terminal flags
int comfd; // TTY fd
/**
* function for different purposes that need to know time intervals
* @return double value: time in seconds
*/
double dtime(){
double t;
struct timeval tv;
gettimeofday(&tv, NULL);
t = tv.tv_sec + ((double)tv.tv_usec)/1e6;
return t;
}
/**
* Exit & return terminal to old state
* @param ex_stat - status (return code)
*/
void quit(int ex_stat){
tcsetattr(STDIN_FILENO, TCSANOW, &oldt); // return terminal to previous state
ioctl(comfd, TCSANOW, &oldtty ); // return TTY to previous state
close(comfd);
if(fout) fclose(fout);
printf("Exit! (%d)\n", ex_stat);
exit(ex_stat);
}
/**
* Open & setup TTY, terminal
*/
void tty_init(){
// terminal without echo
tcgetattr(STDIN_FILENO, &oldt);
newt = oldt;
newt.c_lflag &= ~(ICANON | ECHO);
if(tcsetattr(STDIN_FILENO, TCSANOW, &newt) < 0) quit(-2);
printf("\nOpen port...\n");
if ((comfd = open(comdev,O_RDWR|O_NOCTTY|O_NONBLOCK)) < 0){
fprintf(stderr,"Can't use port %s\n",comdev);
quit(1);
}
printf(" OK\nGet current settings...\n");
if(ioctl(comfd,TCGETA,&oldtty) < 0) exit(-1); // Get settings
tty = oldtty;
tty.c_lflag = 0; // ~(ICANON | ECHO | ECHOE | ISIG)
tty.c_oflag = 0;
tty.c_cflag = BAUD_RATE|CS8|CREAD|CLOCAL; // 9.6k, 8N1, RW, ignore line ctrl
tty.c_cc[VMIN] = 0; // non-canonical mode
tty.c_cc[VTIME] = 5;
if(ioctl(comfd,TCSETA,&tty) < 0) exit(-1); // set new mode
printf(" OK\n");
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
}
/**
* Read character from console without echo
* @return char readed
*/
int read_console(){
int rb;
struct timeval tv;
int retval;
fd_set rfds;
FD_ZERO(&rfds);
FD_SET(STDIN_FILENO, &rfds);
tv.tv_sec = 0; tv.tv_usec = 10000;
retval = select(1, &rfds, NULL, NULL, &tv);
if(!retval) rb = 0;
else {
if(FD_ISSET(STDIN_FILENO, &rfds)) rb = getchar();
else rb = 0;
}
return rb;
}
/**
* getchar() without echo
* wait until at least one character pressed
* @return character readed
*/
int mygetchar(){ // ÁÎÁÌÏÇ getchar() ÂÅÚ ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÖÁÔØ Enter
int ret;
do ret = read_console();
while(ret == 0);
return ret;
}
/**
* Read data from TTY
* @param buff (o) - buffer for data read
* @param length - buffer len
* @return amount of readed bytes
*/
size_t read_tty(uint8_t *buff, size_t length){
ssize_t L = 0;
fd_set rfds;
struct timeval tv;
int retval;
FD_ZERO(&rfds);
FD_SET(comfd, &rfds);
tv.tv_sec = 0; tv.tv_usec = 10000; // wait for 10ms
retval = select(comfd + 1, &rfds, NULL, NULL, &tv);
if (!retval) return 0;
if(FD_ISSET(comfd, &rfds)){
if((L = read(comfd, buff, length)) < 1) return 0;
}
return (size_t)L;
}
void help(){
printf("Use this commands:\n"
"h\tShow this help\n"
"q\tQuit\n"
);
}
#define dup_pr(...) do{printf(__VA_ARGS__); if(fout) fprintf(fout, __VA_ARGS__);}while(0)
void con_sig(int rb){
uint8_t cmd;
if(rb < 1) return;
if(rb == 'q') quit(0); // q == exit
cmd = (uint8_t) rb;
write(comfd, &cmd, 1);
/*switch(rb){
case 'h':
help();
break;
default:
cmd = (uint8_t) rb;
write(comfd, &cmd, 1);
}*/
}
/**
* Get integer value from buffer
* @param buff (i) - buffer with int
* @param len - length of data in buffer (could be 2 or 4)
* @return
*/
uint32_t get_int(uint8_t *buff, size_t len){
if(len != 2 && len != 4){
fprintf(stdout, "Bad data length!\n");
return 0xffffffff;
}
uint32_t data = 0;
uint8_t *i8 = (uint8_t*) &data;
if(len == 2) memcpy(i8, buff, 2);
else memcpy(i8, buff, 4);
return data;
}
int main(int argc, char *argv[]){
int rb;
uint8_t buff[256];
size_t L;
if(argc == 2){
fout = fopen(argv[1], "a");
if(!fout){
perror("Can't open output file");
exit(-1);
}
setbuf(fout, NULL);
}
tty_init();
signal(SIGTERM, quit); // kill (-15)
signal(SIGINT, quit); // ctrl+C
signal(SIGQUIT, SIG_IGN); // ctrl+\ .
signal(SIGTSTP, SIG_IGN); // ctrl+Z
setbuf(stdout, NULL);
t0 = dtime();
while(1){
rb = read_console();
if(rb > 0) con_sig(rb);
L = read_tty(buff, 255);
if(L){
buff[L] = 0;
printf("%s", buff);
//if(fout) fprintf(fout, "%zd\t%s", time(NULL), buff);
if(fout) fprintf(fout, "%s", buff);
}
}
}

View File

@ -39,7 +39,20 @@ INTERRUPT_HANDLER(EXTI_PORTA_IRQHandler, 3){}
INTERRUPT_HANDLER(EXTI_PORTB_IRQHandler, 4){} INTERRUPT_HANDLER(EXTI_PORTB_IRQHandler, 4){}
// External Interrupt PORTC // External Interrupt PORTC
INTERRUPT_HANDLER(EXTI_PORTC_IRQHandler, 5){} INTERRUPT_HANDLER(EXTI_PORTC_IRQHandler, 5){
if(!(PC_IDR & GPIO_PIN4)){ // PC4 - pedal switch - connect to ground!
if(!drill_works)
DRILL_ON(); // in future it should be more complex: move motor down etc
}else{
// it would be better to set flags as drill motor would have to move up first
if(drill_works)
DRILL_OFF();
}
// PC2 - down; PC3 - up
if((PC_IDR & (GPIO_PIN2 | GPIO_PIN3)) != (GPIO_PIN2 | GPIO_PIN3)){
TRAY_STOP(); // stop tray motor
}
}
// External Interrupt PORTD // External Interrupt PORTD
INTERRUPT_HANDLER(EXTI_PORTD_IRQHandler, 6){ INTERRUPT_HANDLER(EXTI_PORTD_IRQHandler, 6){
@ -66,10 +79,11 @@ INTERRUPT_HANDLER(SPI_IRQHandler, 10){}
// Timer1 Update/Overflow/Trigger/Break Interrupt // Timer1 Update/Overflow/Trigger/Break Interrupt
INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11){ INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11){
/*
if(TIM1_SR1 & TIM_SR1_UIF){ // update interrupt if(TIM1_SR1 & TIM_SR1_UIF){ // update interrupt
Global_time++; // increase timer
} }
TIM1_SR1 = 0; // clear all interrupt flags TIM1_SR1 = 0; // clear all interrupt flags
*/
} }
// Timer1 Capture/Compare Interrupt routine. // Timer1 Capture/Compare Interrupt routine.
@ -170,7 +184,19 @@ INTERRUPT_HANDLER(UART3_RX_IRQHandler, 21){}
INTERRUPT_HANDLER(ADC2_IRQHandler, 22){} INTERRUPT_HANDLER(ADC2_IRQHandler, 22){}
#else #else
// ADC1 interrupt // ADC1 interrupt
//U8 val_ctr = 0;
//U16 ADC_values[10];
INTERRUPT_HANDLER(ADC1_IRQHandler, 22){ INTERRUPT_HANDLER(ADC1_IRQHandler, 22){
U16 v = ADC_DRL; // in right-alignment mode we should first read LSB
v |= ADC_DRH << 8;
//ADC_values[val_ctr++] = v;
ADC_value = v;
//if(val_ctr == 10) val_ctr = 0;
if(drill_works && auto_speed){
if(v > 50) DRILL_SLOWER(); // current = 0.48A
else if(v < 30) DRILL_FASTER(); // current = 0.29A
}
ADC_CSR &= 0x3f; // clear EOC & AWD flags
} }
#endif // STM8S208 or STM8S207 or STM8AF52Ax or STM8AF62Ax #endif // STM8S208 or STM8S207 or STM8AF52Ax or STM8AF62Ax
@ -179,7 +205,12 @@ INTERRUPT_HANDLER(ADC1_IRQHandler, 22){
INTERRUPT_HANDLER(TIM6_UPD_OVF_TRG_IRQHandler, 23){} INTERRUPT_HANDLER(TIM6_UPD_OVF_TRG_IRQHandler, 23){}
#else // STM8S208, STM8S207, STM8S105 or STM8S103 or STM8AF52Ax or STM8AF62Ax or STM8AF626x #else // STM8S208, STM8S207, STM8S105 or STM8S103 or STM8AF52Ax or STM8AF62Ax or STM8AF626x
// Timer4 Update/Overflow Interrupt // Timer4 Update/Overflow Interrupt
INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23){} INTERRUPT_HANDLER(TIM4_UPD_OVF_IRQHandler, 23){
if(TIM4_SR & TIM_SR1_UIF){ // update interrupt
Global_time++; // increase timer
}
TIM4_SR = 0; // clear all interrupt flags
}
#endif // STM8S903 #endif // STM8S903
// Eeprom EEC Interrupt // Eeprom EEC Interrupt

View File

@ -28,6 +28,9 @@
unsigned long Global_time = 0L; // global time in ms unsigned long Global_time = 0L; // global time in ms
U16 paused_val = 500; // interval between LED flashing U16 paused_val = 500; // interval between LED flashing
U8 drill_works = 0; // flag of working motor
U8 auto_speed = 0;
U8 UART_rx[UART_BUF_LEN]; // cycle buffer for received data U8 UART_rx[UART_BUF_LEN]; // cycle buffer for received data
U8 UART_rx_start_i = 0; // started index of received data (from which reading starts) U8 UART_rx_start_i = 0; // started index of received data (from which reading starts)
U8 UART_rx_cur_i = 0; // index of current first byte in rx array (to which data will be written) U8 UART_rx_cur_i = 0; // index of current first byte in rx array (to which data will be written)
@ -63,6 +66,8 @@ char usteps[8] =
#error Define MOTOR_TYPE_UNIPOLAR or MOTOR_TYPE_BIPOLAR #error Define MOTOR_TYPE_UNIPOLAR or MOTOR_TYPE_BIPOLAR
#endif #endif
U16 ADC_value = 0; // value of last ADC measurement
/** /**
* Send one byte through UART * Send one byte through UART
* @param byte - data to send * @param byte - data to send
@ -157,33 +162,65 @@ void error_msg(char *msg){
int main() { int main() {
unsigned long T = 0L; unsigned long T = 0L;
int Ival; int Ival;
U8 rb; U8 rb, v;
CFG_GCR |= 1; // disable SWIM CFG_GCR |= 1; // disable SWIM
// Configure clocking // Configure clocking
CLK_CKDIVR = 0; // F_HSI = 16MHz, f_CPU = 16MHz CLK_CKDIVR = 0; // F_HSI = 16MHz, f_CPU = 16MHz
// Configure timer 1 - systick // Timer 4 (8 bit) used as system tick timer
// prescaler = f_{in}/f_{tim1} - 1 // prescaler == 128 (2^7), Tfreq = 125kHz
// set Timer1 to 1MHz: 1/1 - 1 = 15 // period = 1ms, so ARR = 125
TIM1_PSCRH = 0; TIM4_PSCR = 7;
TIM1_PSCRL = 15; // LSB should be written last as it updates prescaler TIM4_ARR = 125;
// auto-reload each 1ms: TIM_ARR = 1000 = 0x03E8
TIM1_ARRH = 0x03;
TIM1_ARRL = 0xE8;
// interrupts: update // interrupts: update
TIM1_IER = TIM_IER_UIE; TIM4_IER = TIM_IER_UIE;
// auto-reload + interrupt on overflow + enable
TIM4_CR1 = TIM_CR1_APRE | TIM_CR1_URS | TIM_CR1_CEN;
// Timer1 is PWM generator for drill motor: 1MHz -> 10kHz PWM from 0 to 100
TIM1_PSCRH = 0; // this timer have 16 bit prescaler
TIM1_PSCRL = 3; // LSB should be written last as it updates prescaler
// PWM frequency is 10kHz: 1000/10 = 100
TIM1_ARRH = 0;
TIM1_ARRL = 100;
TIM1_CCR1H = 0; TIM1_CCR1L = 10; // default: 10%
// channel 1 generates PWM pulses
TIM1_CCMR1 = 0x60; // OC1M = 110b - PWM mode 1 ( 1 -> 0)
//TIM1_CCMR1 = 0x70; // OC1M = 111b - PWM mode 2 ( 0 -> 1)
TIM1_CCER1 = 1; // Channel 1 is on. Active is high
//TIM1_CCER1 = 3; // Channel 1 is on. Active is low
// interrupts: none for timer 1
TIM1_IER = 0;
// auto-reload + interrupt on overflow + enable // auto-reload + interrupt on overflow + enable
TIM1_CR1 = TIM_CR1_APRE | TIM_CR1_URS | TIM_CR1_CEN; TIM1_CR1 = TIM_CR1_APRE | TIM_CR1_URS | TIM_CR1_CEN;
// Configure pins // configure ADC
// select PF4 - Sence (AIN12) & enable interrupt for EOC
ADC_CSR = 0x2c; // EOCIE = 1; CH[3:0] = 0x0c (12)
ADC_TDRH = 0x10;// disable Schmitt triger for AIN12
// right alignment
ADC_CR2 = 0x08; // don't forget: first read ADC_DRL!
// f_{ADC} = f/18 & continuous non-buffered conversion & wake it up
ADC_CR1 = 0x73;
ADC_CR1 = 0x73; // turn on ADC (this needs second write operation)
// Configure pins
// EXTI
EXTI_CR1 = 0x30; // PCIS[1:0] = 11b -> rising/falling
PC_CR1 = 0x1c; // PC2, PC3 and PC4 are switches with pull-up
PC_CR2 = 0x1c; // enable interrupts
// other
PC_DDR |= GPIO_PIN1; // setup timer's output
DRILL_OFF(); // set PC1 to zero - power off motor
// PC2 - PP output (on-board LED) // PC2 - PP output (on-board LED)
PORT(LED_PORT, DDR) |= LED_PIN; PORT(LED_PORT, DDR) |= LED_PIN;
PORT(LED_PORT, CR1) |= LED_PIN; PORT(LED_PORT, CR1) |= LED_PIN;
// PD5 - UART2_TX // PD5 - UART2_TX
PORT(UART_PORT, DDR) |= UART_TX_PIN; PORT(UART_PORT, DDR) |= UART_TX_PIN;
PORT(UART_PORT, CR1) |= UART_TX_PIN; PORT(UART_PORT, CR1) |= UART_TX_PIN;
// Configure UART // Configure UART
// 8 bit, no parity, 1 stop (UART_CR1/3 = 0 - reset value) // 8 bit, no parity, 1 stop (UART_CR1/3 = 0 - reset value)
// 57600 on 16MHz: BRR1=0x11, BRR2=0x06 // 57600 on 16MHz: BRR1=0x11, BRR2=0x06
UART2_BRR1 = 0x11; UART2_BRR2 = 0x06; UART2_BRR1 = 0x11; UART2_BRR2 = 0x06;
@ -198,8 +235,13 @@ int main() {
// Loop // Loop
do{ do{
if((Global_time - T > paused_val) || (T > Global_time)){ if((Global_time - T > paused_val) || (T > Global_time)){
U8 i;
T = Global_time; T = Global_time;
PORT(LED_PORT, ODR) ^= LED_PIN; // blink on-board LED PORT(LED_PORT, ODR) ^= LED_PIN; // blink on-board LED
//ADC_value = 0;
//for(i = 0; i < 10; i++) ADC_value += ADC_values[i];
//ADC_value /= 10;
printUint((U8*)&ADC_value, 2); // & print out ADC value
} }
if(UART_read_byte(&rb)){ // buffer isn't empty if(UART_read_byte(&rb)){ // buffer isn't empty
switch(rb){ switch(rb){
@ -207,7 +249,11 @@ int main() {
case 'H': case 'H':
uart_write("\nPROTO:\n+/-\tLED period\nS/s\tset/get Mspeed\n" uart_write("\nPROTO:\n+/-\tLED period\nS/s\tset/get Mspeed\n"
"m\tget steps\nx\tstop\np\tpause/resume\nM\tmove motor\na\tadd Nstps\n" "m\tget steps\nx\tstop\np\tpause/resume\nM\tmove motor\na\tadd Nstps\n"
"u\tunipolar motor\nb\tbipolar motor\n"); "0\tturn drill OFF\n1\tturn drill ON\n"
">\trotate faster\n<\trotate slower\n"
"u\ttray up\nd\ttray down\n"
"c\tauto speed off\nz\tauto speed on\n"
"g\tget speed\n");
break; break;
case '+': case '+':
paused_val += 100; paused_val += 100;
@ -217,7 +263,7 @@ int main() {
case '-': case '-':
paused_val -= 100; paused_val -= 100;
if(paused_val < 100) // but not less than 0.1s if(paused_val < 100) // but not less than 0.1s
paused_val = 500; paused_val = 100;
break; break;
case 'S': // set stepper speed case 'S': // set stepper speed
if(readInt(&Ival) && Ival > MIN_STEP_LENGTH) if(readInt(&Ival) && Ival > MIN_STEP_LENGTH)
@ -255,6 +301,34 @@ int main() {
error_msg("bad value"); error_msg("bad value");
} }
break; break;
case '0': // turn off drill
DRILL_OFF();
break;
case '1': // turn on drill
DRILL_ON();
break;
case '>': // faster
DRILL_FASTER();
break;
case '<': // slower
DRILL_SLOWER();
break;
case 'u':
TRAY_UP();
break;
case 'd':
TRAY_DOWN();
break;
case 'c':
auto_speed = 0;
break;
case 'z':
auto_speed = 1;
break;
case 'g':
v = TIM1_CCR1L;
printUint(&v, 1);
break;
} }
} }
}while(1); }while(1);

View File

@ -33,6 +33,11 @@ extern U8 UART_rx[];
extern U8 UART_rx_start_i; extern U8 UART_rx_start_i;
extern U8 UART_rx_cur_i; extern U8 UART_rx_cur_i;
//extern U16 ADC_values[];
extern U16 ADC_value; // value of last ADC measurement
extern U8 drill_works;
extern U8 auto_speed; // == 1 to automatic speed regulation
void UART_send_byte(U8 byte); void UART_send_byte(U8 byte);
void uart_write(char *str); void uart_write(char *str);
void printUint(U8 *val, U8 len); void printUint(U8 *val, U8 len);

View File

@ -47,6 +47,18 @@
/***** Stepper motor *****/ /***** Stepper motor *****/
// Clocking // Clocking
#define STP_PORT PB // PB0..3 -- pins A..D of stepper #define STP_PORT PB // PB0..3 -- pins A..D of stepper
/* drill motor PC1 - timer 1 PWM output 1 */
#define DRILL_ON() do{TIM1_BKR |= 0x80; drill_works = 1;}while(0) // turn on drill motor
#define DRILL_OFF() do{TIM1_BKR &= ~0x80; PC_ODR &= ~GPIO_PIN1; drill_works = 0;}while(0) // turn it off
#define DRILL_FASTER() do{U8 r = TIM1_CCR1L; if(r < 100) TIM1_CCR1L = r+1;}while(0)// increase current
#define DRILL_SLOWER() do{U8 r = TIM1_CCR1L; if(r > 0) TIM1_CCR1L = r-1;}while(0) // decrease it
/* tray motor: PB4, PB5 - rotation direction; PC2, PC3 - end-switches (bottom/top) */
#define TRAY_UP() do{if(!(PC_IDR & GPIO_PIN3)){PB_ODR &= ~0x30; PB_ODR |= 0x10;}}while(0)
#define TRAY_DOWN() do{if(!(PC_IDR & GPIO_PIN2)){PB_ODR &= ~0x30; PB_ODR |= 0x20;}}while(0)
#define TRAY_STOP() do{PB_ODR &= ~0x30;}while(0)
#endif // __PORTS_DEFINITION_H__ #endif // __PORTS_DEFINITION_H__

View File

@ -1,4 +1,4 @@
Cmp-Mod V01 Created by CvPcb (2013-may-18)-stable date = Вс 17 авг 2014 22:58:37 Cmp-Mod V01 Created by CvPcb (2013-may-18)-stable date = Вт 19 авг 2014 18:05:15
BeginCmp BeginCmp
TimeStamp = /52FB0413; TimeStamp = /52FB0413;
@ -32,7 +32,14 @@ BeginCmp
TimeStamp = /53F0F88C; TimeStamp = /53F0F88C;
Reference = C5; Reference = C5;
ValeurCmp = 47u; ValeurCmp = 47u;
IdModule = SM1206; IdModule = SM1206POL;
EndCmp
BeginCmp
TimeStamp = /53EF036E/53F36070;
Reference = C6;
ValeurCmp = 47u;
IdModule = SM1206POL;
EndCmp EndCmp
BeginCmp BeginCmp
@ -133,13 +140,6 @@ ValeurCmp = CONN_2;
IdModule = SIL-2; IdModule = SIL-2;
EndCmp EndCmp
BeginCmp
TimeStamp = /53EF036E/53E67E1E;
Reference = Q1;
ValeurCmp = MOS_N;
IdModule = ;
EndCmp
BeginCmp BeginCmp
TimeStamp = /52FB0DE2; TimeStamp = /52FB0DE2;
Reference = R1; Reference = R1;
@ -164,7 +164,7 @@ EndCmp
BeginCmp BeginCmp
TimeStamp = /53EF036E/53E680EF; TimeStamp = /53EF036E/53E680EF;
Reference = R4; Reference = R4;
ValeurCmp = 1k; ValeurCmp = 47k;
IdModule = SM0603; IdModule = SM0603;
EndCmp EndCmp
@ -183,8 +183,36 @@ IdModule = R4;
EndCmp EndCmp
BeginCmp BeginCmp
TimeStamp = /52FB0F3B; TimeStamp = /53EF036E/53F123DF;
Reference = R7;
ValeurCmp = 1R;
IdModule = R4;
EndCmp
BeginCmp
TimeStamp = /53F13089;
Reference = SW1; Reference = SW1;
ValeurCmp = DRILL;
IdModule = 2PIN_6mm;
EndCmp
BeginCmp
TimeStamp = /53F12B09;
Reference = SW2;
ValeurCmp = UP;
IdModule = 2PIN_6mm;
EndCmp
BeginCmp
TimeStamp = /53F12B1C;
Reference = SW3;
ValeurCmp = DOWN;
IdModule = 2PIN_6mm;
EndCmp
BeginCmp
TimeStamp = /52FB0F3B;
Reference = SW4;
ValeurCmp = SW_PUSH; ValeurCmp = SW_PUSH;
IdModule = 2PIN_6mm; IdModule = 2PIN_6mm;
EndCmp EndCmp
@ -203,4 +231,11 @@ ValeurCmp = LM1117MPX-3.3;
IdModule = SOT223; IdModule = SOT223;
EndCmp EndCmp
BeginCmp
TimeStamp = /53EF036E/53F123C0;
Reference = VT1;
ValeurCmp = S8205A;
IdModule = TSSOP-8;
EndCmp
EndListe EndListe

View File

@ -1,7 +1,7 @@
(export (version D) (export (version D)
(design (design
(source /sdh/Data/documents/00__Electronics/STM8/microdrill/schematics/MCU_module.sch) (source /home/eddy/Docs/ELECTRONICS/STM8/STM8_samples/microdrill/schematics/MCU_module.sch)
(date "Вс 17 авг 2014 22:34:25") (date "Вт 19 авг 2014 18:08:16")
(tool "eeschema (2013-may-18)-stable")) (tool "eeschema (2013-may-18)-stable"))
(components (components
(comp (ref U1) (comp (ref U1)
@ -59,7 +59,7 @@
(libsource (lib device) (part R)) (libsource (lib device) (part R))
(sheetpath (names /) (tstamps /)) (sheetpath (names /) (tstamps /))
(tstamp 52FB0EFD)) (tstamp 52FB0EFD))
(comp (ref SW1) (comp (ref SW4)
(value SW_PUSH) (value SW_PUSH)
(libsource (lib device) (part SW_PUSH)) (libsource (lib device) (part SW_PUSH))
(sheetpath (names /) (tstamps /)) (sheetpath (names /) (tstamps /))
@ -122,16 +122,26 @@
(libsource (lib conn) (part CONN_2)) (libsource (lib conn) (part CONN_2))
(sheetpath (names /) (tstamps /)) (sheetpath (names /) (tstamps /))
(tstamp 53F1169C)) (tstamp 53F1169C))
(comp (ref SW2)
(value UP)
(libsource (lib device) (part SW_PUSH))
(sheetpath (names /) (tstamps /))
(tstamp 53F12B09))
(comp (ref SW3)
(value DOWN)
(libsource (lib device) (part SW_PUSH))
(sheetpath (names /) (tstamps /))
(tstamp 53F12B1C))
(comp (ref SW1)
(value DRILL)
(libsource (lib device) (part SW_PUSH))
(sheetpath (names /) (tstamps /))
(tstamp 53F13089))
(comp (ref P7) (comp (ref P7)
(value CONN_2) (value CONN_2)
(libsource (lib conn) (part CONN_2)) (libsource (lib conn) (part CONN_2))
(sheetpath (names "/Drill motor/") (tstamps /53EF036E/)) (sheetpath (names "/Drill motor/") (tstamps /53EF036E/))
(tstamp 53E67E05)) (tstamp 53E67E05))
(comp (ref Q1)
(value MOS_N)
(libsource (lib device) (part MOS_N))
(sheetpath (names "/Drill motor/") (tstamps /53EF036E/))
(tstamp 53E67E1E))
(comp (ref R5) (comp (ref R5)
(value 1R) (value 1R)
(libsource (lib device) (part R)) (libsource (lib device) (part R))
@ -143,7 +153,7 @@
(sheetpath (names "/Drill motor/") (tstamps /53EF036E/)) (sheetpath (names "/Drill motor/") (tstamps /53EF036E/))
(tstamp 53E67E9C)) (tstamp 53E67E9C))
(comp (ref R4) (comp (ref R4)
(value 1k) (value 47k)
(libsource (lib device) (part R)) (libsource (lib device) (part R))
(sheetpath (names "/Drill motor/") (tstamps /53EF036E/)) (sheetpath (names "/Drill motor/") (tstamps /53EF036E/))
(tstamp 53E680EF)) (tstamp 53E680EF))
@ -151,7 +161,23 @@
(value DIODESCH) (value DIODESCH)
(libsource (lib device) (part DIODESCH)) (libsource (lib device) (part DIODESCH))
(sheetpath (names "/Drill motor/") (tstamps /53EF036E/)) (sheetpath (names "/Drill motor/") (tstamps /53EF036E/))
(tstamp 53E68EA1))) (tstamp 53E68EA1))
(comp (ref VT1)
(value S8205A)
(footprint TSSOP-8)
(libsource (lib s8205a) (part S8205A))
(sheetpath (names "/Drill motor/") (tstamps /53EF036E/))
(tstamp 53F123C0))
(comp (ref R7)
(value 1R)
(libsource (lib device) (part R))
(sheetpath (names "/Drill motor/") (tstamps /53EF036E/))
(tstamp 53F123DF))
(comp (ref C6)
(value 47u)
(libsource (lib device) (part CP1))
(sheetpath (names "/Drill motor/") (tstamps /53EF036E/))
(tstamp 53F36070)))
(libparts (libparts
(libpart (lib device) (part C) (libpart (lib device) (part C)
(description "Condensateur non polarise") (description "Condensateur non polarise")
@ -161,9 +187,7 @@
(fp C1-1)) (fp C1-1))
(fields (fields
(field (name Reference) C) (field (name Reference) C)
(field (name Value) C) (field (name Value) C))
(field (name Footprint) ~)
(field (name Datasheet) ~))
(pins (pins
(pin (num 1) (name ~) (type passive)) (pin (num 1) (name ~) (type passive))
(pin (num 2) (name ~) (type passive)))) (pin (num 2) (name ~) (type passive))))
@ -174,9 +198,7 @@
(fp SM*)) (fp SM*))
(fields (fields
(field (name Reference) C) (field (name Reference) C)
(field (name Value) CP1) (field (name Value) CP1))
(field (name Footprint) ~)
(field (name Datasheet) ~))
(pins (pins
(pin (num 1) (name ~) (type passive)) (pin (num 1) (name ~) (type passive))
(pin (num 2) (name ~) (type passive)))) (pin (num 2) (name ~) (type passive))))
@ -187,9 +209,7 @@
(fp S*)) (fp S*))
(fields (fields
(field (name Reference) D) (field (name Reference) D)
(field (name Value) DIODESCH) (field (name Value) DIODESCH))
(field (name Footprint) ~)
(field (name Datasheet) ~))
(pins (pins
(pin (num 1) (name A) (type passive)) (pin (num 1) (name A) (type passive))
(pin (num 2) (name K) (type passive)))) (pin (num 2) (name K) (type passive))))
@ -204,23 +224,10 @@
(fp LEDV)) (fp LEDV))
(fields (fields
(field (name Reference) D) (field (name Reference) D)
(field (name Value) LED) (field (name Value) LED))
(field (name Footprint) ~)
(field (name Datasheet) ~))
(pins (pins
(pin (num 1) (name A) (type passive)) (pin (num 1) (name A) (type passive))
(pin (num 2) (name K) (type passive)))) (pin (num 2) (name K) (type passive))))
(libpart (lib device) (part MOS_N)
(docs transistors/mos/*.*)
(fields
(field (name Reference) Q)
(field (name Value) MOS_N)
(field (name Footprint) ~)
(field (name Datasheet) ~))
(pins
(pin (num D) (name D) (type passive))
(pin (num G) (name G) (type input))
(pin (num S) (name S) (type passive))))
(libpart (lib device) (part R) (libpart (lib device) (part R)
(description Resistance) (description Resistance)
(footprints (footprints
@ -231,9 +238,7 @@
(fp SM1206)) (fp SM1206))
(fields (fields
(field (name Reference) R) (field (name Reference) R)
(field (name Value) R) (field (name Value) R))
(field (name Footprint) ~)
(field (name Datasheet) ~))
(pins (pins
(pin (num 1) (name ~) (type passive)) (pin (num 1) (name ~) (type passive))
(pin (num 2) (name ~) (type passive)))) (pin (num 2) (name ~) (type passive))))
@ -241,9 +246,7 @@
(description "Push Button") (description "Push Button")
(fields (fields
(field (name Reference) SW) (field (name Reference) SW)
(field (name Value) SW_PUSH) (field (name Value) SW_PUSH))
(field (name Footprint) ~)
(field (name Datasheet) ~))
(pins (pins
(pin (num 1) (name 1) (type passive)) (pin (num 1) (name 1) (type passive))
(pin (num 2) (name 2) (type passive)))) (pin (num 2) (name 2) (type passive))))
@ -305,6 +308,26 @@
(pin (num 3) (name ~) (type passive)) (pin (num 3) (name ~) (type passive))
(pin (num 4) (name ~) (type passive)) (pin (num 4) (name ~) (type passive))
(pin (num 5) (name ~) (type passive)))) (pin (num 5) (name ~) (type passive))))
(libpart (lib L9110) (part L9110)
(footprints
(fp DIP8*)
(fp DIP-8*)
(fp SOP8*)
(fp SOP-8*))
(fields
(field (name Reference) DA)
(field (name Value) L9110)
(field (name Footprint) ~)
(field (name Datasheet) ~))
(pins
(pin (num 1) (name OA) (type output))
(pin (num 2) (name VCC) (type power_in))
(pin (num 3) (name VCC) (type power_in))
(pin (num 4) (name OB) (type output))
(pin (num 5) (name GND) (type power_in))
(pin (num 6) (name IA) (type input))
(pin (num 7) (name IB) (type input))
(pin (num 8) (name GND) (type power_in))))
(libpart (lib stm8s105k4t6c) (part STM8S105K4T6C) (libpart (lib stm8s105k4t6c) (part STM8S105K4T6C)
(footprints (footprints
(fp lqfp32*)) (fp lqfp32*))
@ -358,215 +381,230 @@
(pin (num 1) (name GND) (type power_in)) (pin (num 1) (name GND) (type power_in))
(pin (num 2) (name OUT) (type power_out)) (pin (num 2) (name OUT) (type power_out))
(pin (num 3) (name IN) (type power_in)))) (pin (num 3) (name IN) (type power_in))))
(libpart (lib L9110) (part L9110) (libpart (lib s8205a) (part S8205A)
(footprints (footprints
(fp DIP8*) (fp TSSOP8*)
(fp DIP-8*) (fp TSSOP-8*))
(fp SOP8*)
(fp SOP-8*))
(fields (fields
(field (name Reference) DA) (field (name Reference) VT)
(field (name Value) L9110)) (field (name Value) S8205A)
(field (name Footprint) TSSOP-8)
(field (name Datasheet) ~))
(pins (pins
(pin (num 1) (name OA) (type output)) (pin (num 1) (name D) (type passive))
(pin (num 2) (name VCC) (type power_in)) (pin (num 2) (name S1) (type passive))
(pin (num 3) (name VCC) (type power_in)) (pin (num 3) (name S1) (type passive))
(pin (num 4) (name OB) (type output)) (pin (num 4) (name G1) (type passive))
(pin (num 5) (name GND) (type power_in)) (pin (num 5) (name G2) (type passive))
(pin (num 6) (name IA) (type input)) (pin (num 7) (name S2) (type passive))
(pin (num 7) (name IB) (type input)) (pin (num 8) (name D) (type passive)))))
(pin (num 8) (name GND) (type power_in)))))
(libraries (libraries
(library (logical device) (library (logical device)
(uri /usr/share/kicad/library/device.lib)) (uri /usr/share/kicad/library/device.lib))
(library (logical conn) (library (logical conn)
(uri /usr/share/kicad/library/conn.lib)) (uri /usr/share/kicad/library/conn.lib))
(library (logical stm8s105k4t6c)
(uri stm8s105k4t6c.lib))
(library (logical L9110) (library (logical L9110)
(uri L9110.lib)) (uri L9110.lib))
(library (logical stm8s105k4t6c)
(uri stm8s105k4t6c.lib))
(library (logical LM1117) (library (logical LM1117)
(uri LM1117.lib))) (uri LM1117.lib))
(library (logical s8205a)
(uri s8205a.lib)))
(nets (nets
(net (code 1) (name "") (net (code 1) (name /PB2)
(node (ref DA2) (pin 4))
(node (ref P3) (pin 4)))
(net (code 2) (name "")
(node (ref DA2) (pin 1))
(node (ref P3) (pin 3)))
(net (code 3) (name /PB1)
(node (ref P1) (pin 11))
(node (ref U1) (pin 15))
(node (ref DA1) (pin 7)))
(net (code 4) (name /PB0)
(node (ref DA1) (pin 6))
(node (ref P1) (pin 12))
(node (ref U1) (pin 16)))
(net (code 5) (name /PB2)
(node (ref U1) (pin 14))
(node (ref P1) (pin 10)) (node (ref P1) (pin 10))
(node (ref DA2) (pin 6))) (node (ref DA2) (pin 6))
(net (code 6) (name "") (node (ref U1) (pin 14)))
(node (ref P3) (pin 1)) (net (code 2) (name /PB5)
(node (ref DA1) (pin 1))) (node (ref DA3) (pin 7))
(net (code 7) (name "/Drill motor/Sence") (node (ref U1) (pin 11))
(node (ref U1) (pin 8)) (node (ref P1) (pin 7)))
(node (ref P1) (pin 6)) (net (code 3) (name /PB4)
(node (ref R4) (pin 1))) (node (ref U1) (pin 12))
(net (code 8) (name "/Drill motor/PWM_in") (node (ref DA3) (pin 6))
(node (ref P1) (pin 14)) (node (ref P1) (pin 8)))
(node (ref Q1) (pin G)) (net (code 4) (name /PB3)
(node (ref U1) (pin 18))) (node (ref U1) (pin 13))
(net (code 9) (name "") (node (ref P1) (pin 9))
(node (ref DA2) (pin 7)))
(net (code 5) (name "")
(node (ref DA1) (pin 4)) (node (ref DA1) (pin 4))
(node (ref P3) (pin 2))) (node (ref P3) (pin 2)))
(net (code 10) (name /PB5) (net (code 6) (name "")
(node (ref U1) (pin 11)) (node (ref DA2) (pin 4))
(node (ref P1) (pin 7)) (node (ref P3) (pin 4)))
(node (ref DA3) (pin 7))) (net (code 7) (name "")
(net (code 11) (name /PB4) (node (ref DA2) (pin 1))
(node (ref U1) (pin 12)) (node (ref P3) (pin 3)))
(node (ref P1) (pin 8)) (net (code 8) (name GND)
(node (ref DA3) (pin 6)))
(net (code 12) (name /PB3)
(node (ref U1) (pin 13))
(node (ref DA2) (pin 7))
(node (ref P1) (pin 9)))
(net (code 13) (name /5.0V)
(node (ref P6) (pin 2)))
(net (code 14) (name GND)
(node (ref C5) (pin 2))
(node (ref U2) (pin 1)) (node (ref U2) (pin 1))
(node (ref C4) (pin 2))
(node (ref K1) (pin 1)) (node (ref K1) (pin 1))
(node (ref R2) (pin 2))
(node (ref SW1) (pin 1))
(node (ref C3) (pin 2))
(node (ref R5) (pin 2))
(node (ref R6) (pin 2))
(node (ref C2) (pin 1))
(node (ref P1) (pin 2)) (node (ref P1) (pin 2))
(node (ref SW1) (pin 2))
(node (ref SW3) (pin 1))
(node (ref SW2) (pin 2))
(node (ref C4) (pin 2))
(node (ref C5) (pin 2))
(node (ref C6) (pin 2))
(node (ref C3) (pin 2))
(node (ref SW4) (pin 1))
(node (ref R7) (pin 2))
(node (ref R6) (pin 2))
(node (ref R5) (pin 2))
(node (ref P2) (pin 4)) (node (ref P2) (pin 4))
(node (ref U1) (pin 10)) (node (ref U1) (pin 10))
(node (ref U1) (pin 4)) (node (ref U1) (pin 4))
(node (ref C2) (pin 1))
(node (ref C1) (pin 1)) (node (ref C1) (pin 1))
(node (ref DA3) (pin 8)) (node (ref R2) (pin 2))
(node (ref DA2) (pin 8))
(node (ref DA1) (pin 8)) (node (ref DA1) (pin 8))
(node (ref DA2) (pin 5))
(node (ref P6) (pin 5))
(node (ref DA1) (pin 5)) (node (ref DA1) (pin 5))
(node (ref DA3) (pin 5))) (node (ref DA2) (pin 8))
(net (code 15) (name +3.3V) (node (ref DA2) (pin 5))
(node (ref D1) (pin 1)) (node (ref DA3) (pin 5))
(node (ref R3) (pin 1)) (node (ref P6) (pin 5))
(node (ref P2) (pin 1)) (node (ref DA3) (pin 8)))
(node (ref P1) (pin 1)) (net (code 9) (name /PB1)
(node (ref P1) (pin 11))
(node (ref U1) (pin 15))
(node (ref DA1) (pin 7)))
(net (code 10) (name /PB0)
(node (ref U1) (pin 16))
(node (ref P1) (pin 12))
(node (ref DA1) (pin 6)))
(net (code 11) (name /5.0V)
(node (ref P6) (pin 2)))
(net (code 12) (name +3.3V)
(node (ref U1) (pin 9))
(node (ref D2) (pin 1)) (node (ref D2) (pin 1))
(node (ref R3) (pin 1))
(node (ref P6) (pin 1))
(node (ref P1) (pin 1))
(node (ref C2) (pin 2)) (node (ref C2) (pin 2))
(node (ref U1) (pin 6)) (node (ref U1) (pin 6))
(node (ref P2) (pin 1))
(node (ref U1) (pin 7)) (node (ref U1) (pin 7))
(node (ref U1) (pin 9))
(node (ref C5) (pin 1)) (node (ref C5) (pin 1))
(node (ref U2) (pin 2)) (node (ref U2) (pin 2))
(node (ref P6) (pin 1))) (node (ref D1) (pin 1)))
(net (code 16) (name /PD6) (net (code 13) (name /PD6)
(node (ref P6) (pin 3)) (node (ref P5) (pin 2))
(node (ref U1) (pin 31)) (node (ref U1) (pin 31))
(node (ref P5) (pin 2))) (node (ref P6) (pin 3)))
(net (code 14) (name "")
(node (ref DA1) (pin 1))
(node (ref P3) (pin 1)))
(net (code 15) (name "/Drill motor/Sence")
(node (ref R4) (pin 1))
(node (ref C6) (pin 1))
(node (ref P1) (pin 6))
(node (ref U1) (pin 8)))
(net (code 16) (name "/Drill motor/PWM_in")
(node (ref VT1) (pin 4))
(node (ref U1) (pin 18))
(node (ref P1) (pin 14)))
(net (code 17) (name /PD5) (net (code 17) (name /PD5)
(node (ref P6) (pin 4))
(node (ref P5) (pin 3)) (node (ref P5) (pin 3))
(node (ref P6) (pin 4))
(node (ref U1) (pin 30))) (node (ref U1) (pin 30)))
(net (code 18) (name "") (net (code 18) (name "")
(node (ref DA3) (pin 1)) (node (ref DA3) (pin 4))
(node (ref P4) (pin 1))) (node (ref P4) (pin 2)))
(net (code 19) (name "") (net (code 19) (name "")
(node (ref P4) (pin 2)) (node (ref P4) (pin 1))
(node (ref DA3) (pin 4))) (node (ref DA3) (pin 1)))
(net (code 20) (name +12V) (net (code 20) (name +5V)
(node (ref P7) (pin 1)) (node (ref C4) (pin 1))
(node (ref K1) (pin 3)) (node (ref U2) (pin 3))
(node (ref D3) (pin 2)))
(net (code 21) (name +5V)
(node (ref DA1) (pin 3)) (node (ref DA1) (pin 3))
(node (ref DA1) (pin 2))
(node (ref DA3) (pin 3)) (node (ref DA3) (pin 3))
(node (ref DA3) (pin 2)) (node (ref DA3) (pin 2))
(node (ref DA2) (pin 2))
(node (ref DA2) (pin 3)) (node (ref DA2) (pin 3))
(node (ref DA1) (pin 2)) (node (ref DA2) (pin 2))
(node (ref K1) (pin 2)) (node (ref K1) (pin 2)))
(node (ref C4) (pin 1)) (net (code 21) (name /PC4)
(node (ref U2) (pin 3))) (node (ref U1) (pin 21))
(net (code 22) (name /NRST) (node (ref SW1) (pin 1))
(node (ref P2) (pin 3)) (node (ref P5) (pin 12)))
(node (ref SW1) (pin 2)) (net (code 22) (name /PC2)
(node (ref R3) (pin 2)) (node (ref U1) (pin 19))
(node (ref C3) (pin 1)) (node (ref SW3) (pin 2))
(node (ref P1) (pin 3)) (node (ref R1) (pin 2))
(node (ref U1) (pin 1))) (node (ref P5) (pin 14)))
(net (code 23) (name "") (net (code 23) (name /PC3)
(node (ref C1) (pin 2)) (node (ref SW2) (pin 1))
(node (ref U1) (pin 5))) (node (ref P5) (pin 13))
(net (code 24) (name /PC7) (node (ref U1) (pin 20)))
(node (ref U1) (pin 24)) (net (code 24) (name +12V)
(node (ref P5) (pin 9))) (node (ref D3) (pin 2))
(net (code 25) (name /PC6) (node (ref K1) (pin 3))
(node (ref U1) (pin 23)) (node (ref P7) (pin 1)))
(node (ref P5) (pin 10))) (net (code 25) (name /OSC1IN)
(net (code 26) (name /PD7)
(node (ref U1) (pin 32))
(node (ref P5) (pin 1)))
(net (code 27) (name /PC5)
(node (ref P5) (pin 11))
(node (ref U1) (pin 22)))
(net (code 28) (name /PC4)
(node (ref P5) (pin 12))
(node (ref U1) (pin 21)))
(net (code 29) (name /PD0)
(node (ref P5) (pin 8))
(node (ref U1) (pin 25)))
(net (code 30) (name /PC3)
(node (ref U1) (pin 20))
(node (ref P5) (pin 13)))
(net (code 31) (name /OSC2IN)
(node (ref P1) (pin 5))
(node (ref U1) (pin 3)))
(net (code 32) (name /OSC1IN)
(node (ref P1) (pin 4)) (node (ref P1) (pin 4))
(node (ref U1) (pin 2))) (node (ref U1) (pin 2)))
(net (code 33) (name /PD4) (net (code 26) (name /PD0)
(node (ref U1) (pin 29)) (node (ref P5) (pin 8))
(node (ref P5) (pin 4))) (node (ref U1) (pin 25)))
(net (code 34) (name /PC2) (net (code 27) (name /PC7)
(node (ref R1) (pin 2)) (node (ref P5) (pin 9))
(node (ref P5) (pin 14)) (node (ref U1) (pin 24)))
(node (ref U1) (pin 19))) (net (code 28) (name /PC6)
(node (ref U1) (pin 23))
(node (ref P5) (pin 10)))
(net (code 29) (name /PD7)
(node (ref P5) (pin 1))
(node (ref U1) (pin 32)))
(net (code 30) (name /PC5)
(node (ref U1) (pin 22))
(node (ref P5) (pin 11)))
(net (code 31) (name "")
(node (ref C1) (pin 2))
(node (ref U1) (pin 5)))
(net (code 32) (name /OSC2IN)
(node (ref P1) (pin 5))
(node (ref U1) (pin 3)))
(net (code 33) (name /NRST)
(node (ref P1) (pin 3))
(node (ref U1) (pin 1))
(node (ref C3) (pin 1))
(node (ref P2) (pin 3))
(node (ref SW4) (pin 2))
(node (ref R3) (pin 2)))
(net (code 34) (name /PD4)
(node (ref P5) (pin 4))
(node (ref U1) (pin 29)))
(net (code 35) (name /PD3) (net (code 35) (name /PD3)
(node (ref P5) (pin 5)) (node (ref U1) (pin 28))
(node (ref U1) (pin 28))) (node (ref P5) (pin 5)))
(net (code 36) (name /PD2) (net (code 36) (name /PD2)
(node (ref P5) (pin 6)) (node (ref U1) (pin 27))
(node (ref U1) (pin 27))) (node (ref P5) (pin 6)))
(net (code 37) (name /PE5) (net (code 37) (name /PE5)
(node (ref U1) (pin 17)) (node (ref U1) (pin 17))
(node (ref P1) (pin 13))) (node (ref P1) (pin 13)))
(net (code 38) (name /SWIM/PD1) (net (code 38) (name /SWIM/PD1)
(node (ref U1) (pin 26)) (node (ref P5) (pin 7))
(node (ref P2) (pin 2)) (node (ref P2) (pin 2))
(node (ref P5) (pin 7))) (node (ref U1) (pin 26)))
(net (code 39) (name "") (net (code 39) (name "")
(node (ref R2) (pin 1)) (node (ref R2) (pin 1))
(node (ref D2) (pin 2))) (node (ref D2) (pin 2)))
(net (code 40) (name "") (net (code 40) (name "")
(node (ref D1) (pin 2)) (node (ref R1) (pin 1))
(node (ref R1) (pin 1))) (node (ref D1) (pin 2)))
(net (code 41) (name "") (net (code 41) (name "")
(node (ref P7) (pin 2)) (node (ref VT1) (pin 3))
(node (ref Q1) (pin D)) (node (ref VT1) (pin 7))
(node (ref D3) (pin 1))) (node (ref R7) (pin 1))
(net (code 42) (name "") (node (ref VT1) (pin 2))
(node (ref Q1) (pin S)) (node (ref VT1) (pin 5))
(node (ref R5) (pin 1)) (node (ref R5) (pin 1))
(node (ref R6) (pin 1)) (node (ref R6) (pin 1))
(node (ref R4) (pin 2))))) (node (ref R4) (pin 2)))
(net (code 42) (name "")
(node (ref D3) (pin 1))
(node (ref VT1) (pin 8))
(node (ref VT1) (pin 1))
(node (ref P7) (pin 2)))))

View File

@ -1,10 +1,5 @@
update=Вс 17 авг 2014 23:25:44 update=Вт 19 авг 2014 18:02:55
last_client=eeschema last_client=cvpcb
[cvpcb]
version=1
NetIExt=net
[cvpcb/libraries]
EquName1=devcms
[pcbnew] [pcbnew]
version=1 version=1
LastNetListRead= LastNetListRead=
@ -25,7 +20,6 @@ DrawSegmentWidth=" 0.200000"
BoardOutlineThickness=" 0.100000" BoardOutlineThickness=" 0.100000"
ModuleOutlineThickness=" 0.150000" ModuleOutlineThickness=" 0.150000"
[pcbnew/libraries] [pcbnew/libraries]
LibDir=
LibName1=sockets LibName1=sockets
LibName2=connect LibName2=connect
LibName3=discret LibName3=discret
@ -33,16 +27,16 @@ LibName4=pin_array
LibName5=divers LibName5=divers
LibName6=smd_capacitors LibName6=smd_capacitors
LibName7=smd_resistors LibName7=smd_resistors
LibName8=smd_crystal&oscillator LibName8=smd_dil
LibName9=smd_dil LibName9=smd_transistors
LibName10=smd_transistors LibName10=libcms
LibName11=libcms LibName11=display
LibName12=display LibName12=led
LibName13=led LibName13=dip_sockets
LibName14=dip_sockets LibName14=pga_sockets
LibName15=pga_sockets LibName15=valves
LibName16=valves LibName16=SOP8
LibName17=SOP8 LibDir=
[eeschema] [eeschema]
version=1 version=1
LibDir= LibDir=
@ -86,3 +80,8 @@ LibName31=stm8s105k4t6c
LibName32=L9110 LibName32=L9110
LibName33=LM1117 LibName33=LM1117
LibName34=s8205a LibName34=s8205a
[cvpcb]
version=1
NetIExt=net
[cvpcb/libraries]
EquName1=devcms

View File

@ -40,7 +40,7 @@ $Descr A3 16535 11693
encoding utf-8 encoding utf-8
Sheet 1 2 Sheet 1 2
Title "" Title ""
Date "17 aug 2014" Date "19 aug 2014"
Rev "" Rev ""
Comp "" Comp ""
Comment1 "" Comment1 ""
@ -408,10 +408,10 @@ Wire Wire Line
Wire Wire Line Wire Wire Line
6500 3850 6500 4050 6500 3850 6500 4050
$Comp $Comp
L SW_PUSH SW1 L SW_PUSH SW4
U 1 1 52FB0F3B U 1 1 52FB0F3B
P 6500 3550 P 6500 3550
F 0 "SW1" H 6650 3660 50 0000 C CNN F 0 "SW4" H 6650 3660 50 0000 C CNN
F 1 "SW_PUSH" H 6500 3470 50 0000 C CNN F 1 "SW_PUSH" H 6500 3470 50 0000 C CNN
F 2 "" H 6500 3550 60 0000 C CNN F 2 "" H 6500 3550 60 0000 C CNN
F 3 "" H 6500 3550 60 0000 C CNN F 3 "" H 6500 3550 60 0000 C CNN
@ -986,10 +986,10 @@ Connection ~ 9000 2900
Wire Notes Line Wire Notes Line
5700 8450 3550 8450 5700 8450 3550 8450
$Comp $Comp
L SW_PUSH SW? L SW_PUSH SW2
U 1 1 53F12B09 U 1 1 53F12B09
P 4150 8250 P 4150 8250
F 0 "SW?" H 4300 8360 50 0000 C CNN F 0 "SW2" H 4300 8360 50 0000 C CNN
F 1 "UP" H 4150 8170 50 0000 C CNN F 1 "UP" H 4150 8170 50 0000 C CNN
F 2 "~" H 4150 8250 60 0000 C CNN F 2 "~" H 4150 8250 60 0000 C CNN
F 3 "~" H 4150 8250 60 0000 C CNN F 3 "~" H 4150 8250 60 0000 C CNN
@ -997,10 +997,10 @@ F 3 "~" H 4150 8250 60 0000 C CNN
1 0 0 -1 1 0 0 -1
$EndComp $EndComp
$Comp $Comp
L SW_PUSH SW? L SW_PUSH SW3
U 1 1 53F12B1C U 1 1 53F12B1C
P 5050 8250 P 5050 8250
F 0 "SW?" H 5200 8360 50 0000 C CNN F 0 "SW3" H 5200 8360 50 0000 C CNN
F 1 "DOWN" H 5050 8170 50 0000 C CNN F 1 "DOWN" H 5050 8170 50 0000 C CNN
F 2 "~" H 5050 8250 60 0000 C CNN F 2 "~" H 5050 8250 60 0000 C CNN
F 3 "~" H 5050 8250 60 0000 C CNN F 3 "~" H 5050 8250 60 0000 C CNN
@ -1010,10 +1010,10 @@ $EndComp
Wire Wire Line Wire Wire Line
4450 8250 4750 8250 4450 8250 4750 8250
$Comp $Comp
L GND #PWR? L GND #PWR028
U 1 1 53F12BC1 U 1 1 53F12BC1
P 4600 8350 P 4600 8350
F 0 "#PWR?" H 4600 8350 30 0001 C CNN F 0 "#PWR028" H 4600 8350 30 0001 C CNN
F 1 "GND" H 4600 8280 30 0001 C CNN F 1 "GND" H 4600 8280 30 0001 C CNN
F 2 "" H 4600 8350 60 0000 C CNN F 2 "" H 4600 8350 60 0000 C CNN
F 3 "" H 4600 8350 60 0000 C CNN F 3 "" H 4600 8350 60 0000 C CNN
@ -1028,10 +1028,10 @@ PC2
Text Label 3850 8250 2 60 ~ 0 Text Label 3850 8250 2 60 ~ 0
PC3 PC3
$Comp $Comp
L SW_PUSH SW? L SW_PUSH SW1
U 1 1 53F13089 U 1 1 53F13089
P 1650 6750 P 1650 6750
F 0 "SW?" H 1800 6860 50 0000 C CNN F 0 "SW1" H 1800 6860 50 0000 C CNN
F 1 "DRILL" H 1650 6670 50 0000 C CNN F 1 "DRILL" H 1650 6670 50 0000 C CNN
F 2 "~" H 1650 6750 60 0000 C CNN F 2 "~" H 1650 6750 60 0000 C CNN
F 3 "~" H 1650 6750 60 0000 C CNN F 3 "~" H 1650 6750 60 0000 C CNN
@ -1039,10 +1039,10 @@ F 3 "~" H 1650 6750 60 0000 C CNN
1 0 0 -1 1 0 0 -1
$EndComp $EndComp
$Comp $Comp
L GND #PWR? L GND #PWR029
U 1 1 53F130B8 U 1 1 53F130B8
P 1950 6950 P 1950 6950
F 0 "#PWR?" H 1950 6950 30 0001 C CNN F 0 "#PWR029" H 1950 6950 30 0001 C CNN
F 1 "GND" H 1950 6880 30 0001 C CNN F 1 "GND" H 1950 6880 30 0001 C CNN
F 2 "" H 1950 6950 60 0000 C CNN F 2 "" H 1950 6950 60 0000 C CNN
F 3 "" H 1950 6950 60 0000 C CNN F 3 "" H 1950 6950 60 0000 C CNN

File diff suppressed because it is too large Load Diff

View File

@ -1,44 +1,13 @@
update=Вс 10 авг 2014 00:29:49 update=Вт 19 авг 2014 18:08:41
version=1 version=1
last_client=cvpcb last_client=pcbnew
[pcbnew]
version=1
LastNetListRead=
UseCmpFile=1
PadDrill=0.600000000000
PadDrillOvalY=0.600000000000
PadSizeH=1.500000000000
PadSizeV=1.500000000000
PcbTextSizeV=1.500000000000
PcbTextSizeH=1.500000000000
PcbTextThickness=0.300000000000
ModuleTextSizeV=1.000000000000
ModuleTextSizeH=1.000000000000
ModuleTextSizeThickness=0.150000000000
SolderMaskClearance=0.000000000000
SolderMaskMinWidth=0.000000000000
DrawSegmentWidth=0.200000000000
BoardOutlineThickness=0.100000000000
ModuleOutlineThickness=0.150000000000
[pcbnew/libraries]
LibName1=sockets
LibName2=connect
LibName3=discret
LibName4=pin_array
LibName5=divers
LibName6=smd_capacitors
LibName7=smd_resistors
LibName8=smd_dil
LibName9=smd_transistors
LibName10=libcms
LibName11=display
LibName12=led
LibName13=dip_sockets
LibName14=pga_sockets
LibName15=valves
LibDir=
[general] [general]
version=1 version=1
[cvpcb]
version=1
NetIExt=net
[cvpcb/libraries]
EquName1=devcms
[eeschema] [eeschema]
version=1 version=1
LibDir= LibDir=
@ -56,8 +25,43 @@ LibName5=linear
LibName6=regul LibName6=regul
LibName7=texas LibName7=texas
LibName8=contrib LibName8=contrib
[cvpcb] LibName9=s8205a
LibName10=L9110
LibName11=LM1117
LibName12=stm8s105k4t6c
[pcbnew]
version=1 version=1
NetIExt=net LastNetListRead=MCU_module.net
[cvpcb/libraries] UseCmpFile=0
EquName1=devcms PadDrill=" 0.600000"
PadDrillOvalY=" 0.600000"
PadSizeH=" 1.500000"
PadSizeV=" 1.500000"
PcbTextSizeV=" 1.500000"
PcbTextSizeH=" 1.500000"
PcbTextThickness=" 0.300000"
ModuleTextSizeV=" 1.000000"
ModuleTextSizeH=" 1.000000"
ModuleTextSizeThickness=" 0.150000"
SolderMaskClearance=" 0.000000"
SolderMaskMinWidth=" 0.000000"
DrawSegmentWidth=" 0.200000"
BoardOutlineThickness=" 0.100000"
ModuleOutlineThickness=" 0.150000"
[pcbnew/libraries]
LibDir=
LibName1=sockets
LibName2=connect
LibName3=discret
LibName4=pin_array
LibName5=divers
LibName6=smd_capacitors
LibName7=smd_resistors
LibName8=smd_dil
LibName9=smd_transistors
LibName10=libcms
LibName11=display
LibName12=led
LibName13=dip_sockets
LibName14=pga_sockets
LibName15=valves

View File

@ -40,7 +40,7 @@ $Descr A4 11693 8268
encoding utf-8 encoding utf-8
Sheet 2 2 Sheet 2 2
Title "" Title ""
Date "17 aug 2014" Date "19 aug 2014"
Rev "" Rev ""
Comp "" Comp ""
Comment1 "" Comment1 ""
@ -62,10 +62,10 @@ $EndComp
Text Notes 5525 3150 0 60 ~ 0 Text Notes 5525 3150 0 60 ~ 0
Motor Motor
$Comp $Comp
L GND #PWR028 L GND #PWR030
U 1 1 53E67E30 U 1 1 53E67E30
P 4800 5700 P 4800 5700
F 0 "#PWR028" H 4800 5700 30 0001 C CNN F 0 "#PWR030" H 4800 5700 30 0001 C CNN
F 1 "GND" H 4800 5630 30 0001 C CNN F 1 "GND" H 4800 5630 30 0001 C CNN
F 2 "" H 4800 5700 60 0000 C CNN F 2 "" H 4800 5700 60 0000 C CNN
F 3 "" H 4800 5700 60 0000 C CNN F 3 "" H 4800 5700 60 0000 C CNN
@ -95,10 +95,10 @@ F 3 "" H 4900 5350 60 0000 C CNN
1 0 0 -1 1 0 0 -1
$EndComp $EndComp
$Comp $Comp
L +12V #PWR029 L +12V #PWR031
U 1 1 53E67FAE U 1 1 53E67FAE
P 5375 3200 P 5375 3200
F 0 "#PWR029" H 5375 3150 20 0001 C CNN F 0 "#PWR031" H 5375 3150 20 0001 C CNN
F 1 "+12V" H 5375 3300 30 0000 C CNN F 1 "+12V" H 5375 3300 30 0000 C CNN
F 2 "" H 5375 3200 60 0000 C CNN F 2 "" H 5375 3200 60 0000 C CNN
F 3 "" H 5375 3200 60 0000 C CNN F 3 "" H 5375 3200 60 0000 C CNN
@ -110,7 +110,7 @@ L R R4
U 1 1 53E680EF U 1 1 53E680EF
P 4350 5100 P 4350 5100
F 0 "R4" V 4430 5100 50 0000 C CNN F 0 "R4" V 4430 5100 50 0000 C CNN
F 1 "1k" V 4350 5100 50 0000 C CNN F 1 "47k" V 4350 5100 50 0000 C CNN
F 2 "" H 4350 5100 60 0000 C CNN F 2 "" H 4350 5100 60 0000 C CNN
F 3 "" H 4350 5100 60 0000 C CNN F 3 "" H 4350 5100 60 0000 C CNN
1 4350 5100 1 4350 5100
@ -157,10 +157,10 @@ Wire Wire Line
Wire Wire Line Wire Wire Line
4550 4350 3200 4350 4550 4350 3200 4350
$Comp $Comp
L S8205A VT? L S8205A VT1
U 1 1 53F123C0 U 1 1 53F123C0
P 5300 4150 P 5300 4150
F 0 "VT?" H 5375 3775 60 0000 R CNN F 0 "VT1" H 5375 3775 60 0000 R CNN
F 1 "S8205A" H 5450 4500 60 0000 R CNN F 1 "S8205A" H 5450 4500 60 0000 R CNN
F 2 "TSSOP-8" H 5250 3850 60 0001 C CNN F 2 "TSSOP-8" H 5250 3850 60 0001 C CNN
F 3 "~" H 5450 4150 60 0000 C CNN F 3 "~" H 5450 4150 60 0000 C CNN
@ -175,10 +175,10 @@ Wire Wire Line
Wire Wire Line Wire Wire Line
6050 4600 6050 4350 6050 4600 6050 4350
$Comp $Comp
L R R? L R R7
U 1 1 53F123DF U 1 1 53F123DF
P 5100 5350 P 5100 5350
F 0 "R?" V 5180 5350 50 0000 C CNN F 0 "R7" V 5180 5350 50 0000 C CNN
F 1 "1R" V 5100 5350 50 0000 C CNN F 1 "1R" V 5100 5350 50 0000 C CNN
F 2 "" H 5100 5350 60 0000 C CNN F 2 "" H 5100 5350 60 0000 C CNN
F 3 "" H 5100 5350 60 0000 C CNN F 3 "" H 5100 5350 60 0000 C CNN
@ -211,4 +211,31 @@ Wire Wire Line
Wire Wire Line Wire Wire Line
6050 3700 6050 3950 6050 3700 6050 3950
Connection ~ 5375 3700 Connection ~ 5375 3700
$Comp
L GND #PWR032
U 1 1 53F35910
P 4000 5700
F 0 "#PWR032" H 4000 5700 30 0001 C CNN
F 1 "GND" H 4000 5630 30 0001 C CNN
F 2 "" H 4000 5700 60 0000 C CNN
F 3 "" H 4000 5700 60 0000 C CNN
1 4000 5700
1 0 0 -1
$EndComp
Wire Wire Line
4000 5700 4000 5600
Wire Wire Line
4000 5200 4000 5100
Connection ~ 4000 5100
$Comp
L CP1 C6
U 1 1 53F36070
P 4000 5400
F 0 "C6" H 4050 5500 50 0000 L CNN
F 1 "47u" H 4050 5300 50 0000 L CNN
F 2 "" H 4000 5400 60 0000 C CNN
F 3 "" H 4000 5400 60 0000 C CNN
1 4000 5400
1 0 0 -1
$EndComp
$EndSCHEMATC $EndSCHEMATC

View File

@ -1,94 +1,118 @@
:2080A000AE5007F6AA0FF7AE5008F6AA0FF7815202160590CF000EAE530CA604F7909E0F21 :2080A000AE5007F6AA0FAE5007F7AE5008F6AA0FAE5008F7815202160590CF000EAE530CF4
:2080C00001AE530DF74FAE530E909FF7AE5301A601F7AE5300F6AA84F75B02811E03A300B8 :2080C000A604F7909E0F01AE530DF74FAE530E909FF7AE5301A601F7AE5300F6AA84AE5372
:2080E000002E0B3501000D1E03501F032004725F000D16035F905D2A015A90CF000BCF004C :2080E00000F75B02811E03A300002E0B3501000D1E03501F032004725F000D16035F905D71
:20810000097210530081AE5300F6A4FEF7725F000C725F000B725F000A725F0009AE5005FF :208100002A015A90CF000BCF0009AE5300F6AA01AE5300F781AE5300F6A4FEAE5300F7727A
:20812000F6A4F0F7AE81E589CD83475B0281CE000B2607CE0009272C2000AE5300F695A52B :208120005F000C725F000B725F000A725F0009AE5005F6A4F0AE5005F7AE820C89CD842185
:20814000012711A4FEAE5300F7AE81EB89CD83475B0220109EAA01AE5300F7AE81F289CDCD :208140005B0281CE000B2607CE0009272D2000AE5300F6959EA5012711A4FEAE5300F7AEA0
:2081600083475B028172115300CE000B260FCE0009260A1E0389CD80DC5B02206716035F3D :20816000821289CD84215B0220109EAA01AE5300F7AE821989CD84215B0281AE5300F6A4E5
:20818000905D2A015A72B9000B9FC9000A979EC900099590CF000BCF0009CE000BA300006B :20818000FEAE5300F7CE000B2610CE0009260B1E0389CD80E55B02CC820B16035F905D2AB1
:2081A000C6000AA200C60009A2002E2AAE81FA89CD83475B02C6000DA0014F49C7000D906E :2081A000015A909F909772B9000B9FC9000A979EC900099590CF000BCF0009CE000BA3000C
:2081C000CE000B90504FC2000A974FC200099590CF000BCF0009CE000B2605CE000927043D :2081C00000C6000AA200C60009A2002E2AAE822189CD84215B02C6000DA0014F49C7000DDB
:2081E000721053008173746F700A0070617573650A00726573756D650A007265766572630F :2081E00090CE000B90504FC2000A974FC200099590CF000BCF0009CE000B2605CE00092791
:03820000650A000C :208200000AAE5300F6AA01AE5300F78173746F700A0070617573650A00726573756D650AA6
:078ADD000000000000000092 :0A82200000726576657263650A005E
:20820300808080808080808080AE5255F644241B90CE001472A90001C60013A90097C600A0 :078DCA0000000000000000A2
:2082230012A9009590CF0014CF0012AE52557F80805202AE5302F66B027B02442503CC82D2 :20822A008080808080AE500BF6A5102616725D0018262EAE526DF6AA80AE526DF735010062
:20824300D07B02A4FEAE5302F7AE5005F6A4F06B01AE001A9FCB0011979EA90095F61A0172 :20824A0018201E725D00182718AE526DF6A47FAE526DF7AE500AF6A4FDAE500AF7725F003F
:20826300AE5005F7725D000D272C725C0011C60011A1072D4B725F001190CE000B72A2009D :20826A0018AE500BF6A40CA10C270AAE5005F6A4CFAE5005F78080808080805202AE530292
:2082830001C6000AA20097C60009A2009590CF000BCF0009202A725A0011C60011A1002EBC :20828A00F66B027B02442503CC83217B02A4FEAE5302F7AE5005F6A4F06B01AE001C9FCBD2
:2082A3001F3507001190CE000B72A20001C6000AA20097C60009A2009590CF000BCF000980 :2082AA000011979EA90095F61A01AE5005F7725D000D272C725C0011C60011A1072D4B72AE
:2082C300CE000B2608CE00092603CD81065B028080808080805204AE5240F66B047B04A5C4 :2082CA005F001190CE000B72A20001C6000AA20097C60009A2009590CF000BCF0009202A0B
:2082E30020274DAE5241F66B017B04A4804D27FDAE52417B01F7AE00011F02C6001997C670 :2082EA00725A0011C60011A1002E1F3507001190CE000B72A20001C6000AA20097C600092F
:2083030000194CC700194F9572FB027B01F7C60018C10019260FC600184CC70018A108268A :20830A00A2009590CF000BCF0009CE000B2608CE00092603CD81155B0280808080808052C1
:1683230004725F0018C60019A1082604725F00195B04808080805C :20832A0004AE5240F66B047B04A5202750AE5241F66B017B04A4804D27FDAE52417B01F764
:028AE400000090 :20834A00AE00011F02C6001B97C6001B4CC7001B4F9572FB027B01F7C6001AC1001B261202
:20800000820080838200000082008203820082048200820582008206820082078200820820 :20836A00C6001A4CC7001AC6001AA1082604725F001AC6001BA1082604725F001B5B0480C9
:20802000820082098200820A82000000820000008200820B8200820C820082338200823493 :20838A005202AE5405F65F971F01AE5404F65F9758585858585858589F1A02979E1A01951A
:20804000820082D3820082D4820082D58200000082000000820082D6820082D7820082D803 :2083AA00CF0024725D0018272B725D00192725A30032230EAE5266F64D27194AAE5266F7BD
:208060008200833682008337820083388200000082000000820000008200000082000000C2 :2083CA002012A3001E240DAE5266F6A16424054CAE5266F7AE5400F6A43FAE5400F75B020B
:1D808300AE00082707724F00005A26F9AE00192709D68ADCD700085A26F7CC80806D :2083EA0080AE5342F644241B90CE001472A90001C60013A90097C60012A9009590CF001407
:03808000CC857D2F :09840A00CF0012AE53427F8080C6
:20833900AE5240F64824F9AE52417B03F781160390F64D2718AE5240F64824F9AE5245F651 :028DD1000000A0
:20835900AA08F790F6905CAE5241F720E3815202C60019C1001826034F20271605AE000198 :2080000082008083820000008200822A8200822B8200822C8200822D8200822E8200822F36
:208379001F01C6001897C600184CC700184F9572FB01F690F7C60018A1082604725F0018DD :20802000820082808200828182000000820000008200828282008283820082848200828515
:20839900A6015B0281521C5F1F101F0E7B21A1042303CC84747B21A1032603CC84740D2190 :20804000820083248200832582008326820000008200000082008327820083288200832917
:2083B9002603CC8474965C1F124F5F9772FB127F4CA10C25F51E121C000AA60AF77B21A104 :208060008200838A820083EB820084128200000082000000820000008200000082000000DF
:2083D90001270E7B21A102271C7B21A104272120301E1FF66B1C5F0F191F0F7B1C6B117BF6 :1D808300AE00082707724F00005A26F9AE001D2709D68DC9D700085A26F7CC808079
:2083F900196B0E201C161F90FE5F17101F0E20111E1FE6036B18E602FE6B101F0E7B186BBA :03808000CC865A51
:2084190011A6096B0D4B0A5F894B001E14891E1489CD88585B089F887B0E6B15840A0D5FD3 :20841300AE5240F64824F9AE52417B03F781160390F64D271BAE5240F64824F9AE5245F673
:20843900417B144172FB12AB30F74B0A5F894B001E14891E1489CD88D55B081F10170E1EC4 :20843300AA08AE5245F790F6905CAE5241F720E0815202C6001BC1001A26034F2027160526
:208459001026041E0E27067B0DA1FF2CB87B0D4C5F9772FB1289CD83475B025B1C81521A3A :20845300AE00011F01C6001A97C6001A4CC7001A4F9572FB01F690F7C6001AA108260472C2
:20847900CE00141F03CE00121F015F1F0D1F0B0F080F060F05961C000789CD83675B024D47 :208473005F001AA6015B0281521C5F1F101F0E7B21A1042303CC85517B21A1032603CC85FF
:208499002603CC851B7B07A12D260E1E0D260A1E0B2606A6016B0820697B07A1302403CC11 :20849300510D212603CC8551965C1F124F5F9772FB127F4CA10C25F51E121C000AA60AF709
:2084B900853D7B07A1392303CC853DA6016B061E0D891E0D894B0A5F894B00CD89745B089C :2084B3007B21A101270E7B21A102271C7B21A104272120301E1FF66B1C5F0F191F0F7B1CD5
:2084D9001F1917177B070F155F90977B15909572F9199F1918979E19179572A200309FA269 :2084D3006B117B196B0E201C161F90FE5F17101F0E20111E1FE6036B17E602FE6B101F0EE7
:2084F900006B109EA200170D6B0B7B106B0CAE7FFF130D4F120C4F120B24075F1F0D1F0B07 :2084F3007B176B11A6096B0D4B0A5F894B001E14891E1489CD8B495B089F887B0E6B19847A
:208519000F0590CE001472F203C60013120295C6001212019790A327109EA2009FA2002442 :208513000A0D5F417B184172FB12AB30F74B0A5F894B001E14891E1489CD8BC65B081F10BE
:2085390003CC848E0D0526040D0626034F201A7B0D887B0F6B0B846B090D0827051E095080 :20853300170E1E1026041E0E27067B0DA1FF2CB87B0D4C5F9772FB1289CD84215B025B1C2E
:208559001F091E1D1609FFA6015B1A81AE87A189CD83475B021E0389CD83475B024B0ACDD1 :2085530081521ACE00141F0DCE00121F0B5F1F061F040F080F020F01961C000389CD844451
:2085790083398481520C5F1F031F0172107F60AE50C67FAE52607FAE5261A60FF7AE526230 :208573005B024D2603CC85F87B03A12D260E1E06260A1E042606A6016B0820697B03A130B8
:20859900A603F7AE5263A6E8F7AE5254A601F7AE5250A685F7AE500CF6AA04F7AE500DF630 :208593002403CC861A7B03A1392303CC861AA6016B021E06891E06894B0A5F894B00CD8CFC
:2085B900AA04F7AE5011F6AA20F7AE5012F6AA20F7AE5242A611F7AE5243A606F7AE524555 :2085B300655B081F1917177B030F115F90977B11909572F9199F1918979E19179572A20043
:2085D900A62CF79A4BE84B03CD80AF5B02CD80A0CE001472F0031F0AC6001312026B09C6C1 :2085D300309FA2006B149EA20017066B047B146B05AE7FFF13064F12054F120424075F1F14
:2085F90000121201CE0016905F88130B909F120A909E12015B012511CE00141303C60013D5 :2085F300061F040F0190CE001472F20DC60013120C95C60012120B9790A327109EA2009FEB
:208619001202C6001212012411CE00141F03CE00121F01AE500AF6A804F7961C000589CD5B :20861300A2002403CC856B0D0126040D0226034F201A7B06887B086B0B846B090D0827058E
:2086390083675B024D27A97B056B0C7B0CA12B27637B0CA12D2603CC86C97B0CA148274871 :208633001E09501F091E1D1609FFA6015B1A81AE8A2F89CD84215B021E0389CD84215B025A
:208659007B0CA14D2603CC872C7B0CA1532603CC86E57B0CA1612603CC87767B0CA16827D7 :208653004B0ACD84138481520D5F1F031F01AE7F60F6AA01AE7F60F7AE50C67FAE5345A668
:20867900277B0CA16D2603CC871E7B0CA1702603CC87707B0CA1732603CC87107B0CA17840 :2086730007F7AE5346A67DF7AE5341A601F7AE5340A685F7AE52607FAE5261A603F7AE5265
:208699002603CC876ACC85E9AE87AA89CD83475B02CC85E9CE00161C0064CF0016A32710E8 :20869300627FAE5263A664F7AE52657FAE5266A60AF7AE5258A660F7AE525CA601F7AE5242
:2086B9002203CC85E935F4001735010016CC85E9CE00161D0064CF0016A300642503CC85B2 :2086B300547FAE5250A685F7AE5400A62CF7AE5406A610F7AE5402A608F7AE5401A673F726
:2086D900E935F4001735010016CC85E9961C000689CD84775B024D27121E06A3007D2D0B6A :2086D300AE5401A673F7AE50A0A630F7AE500DA61CF7AE500EA61CF7AE500CF6AA02AE50D6
:2086F9001E0689CD80AF5B02CC85E9AE883189CD85655B02CC85E9AE000E4B0289CD839E63 :2086F3000CF7AE526DF6A47FAE526DF7AE500AF6A4FDAE500AF7725F0018AE500CF6AA0445
:208719005B03CC85E9AE00094B0489CD839E5B03CC85E9CE000B2605CE0009270CAE883B14 :20871300AE500CF7AE500DF6AA04AE500DF7AE5011F6AA20AE5011F7AE5012F6AA20AE50F1
:2087390089CD85655B02CC85E9961C000689CD84775B024D270F1E06270B1E0689CD80DC34 :2087330012F7AE5242A611F7AE5243A606F7AE5245A62CF79A4BE84B03CD80B55B02CD8072
:208759005B02CC85E9AE884389CD85655B02CC85E9CD8106CC85E9CD812ECC85E9961C0023 :20875300A0CE001472F0031F0CC6001312026B0BC600121201CE0016905F88130D909F12EA
:208779000689CD84775B024D270F1E06270B1E0689CD81655B02CC85E9AE884E89CD856598 :208773000C909E12015B012511CE00141303C600131202C600121201241FCE00141F03CE22
:208799005B02CC85E95B0C810A4552524F523A20000A50524F544F3A0A2B2F2D094C45440C :2087930000121F01AE500AF6A804AE500AF7AE00244B0289CD847B5B03961C000689CD8487
:2087B90020706572696F640A532F73097365742F676574204D73706565640A6D09676574FC :2087B300445B024D279B7B066B097B09A12B2603CC887D7B09A12D2603CC889C7B09A130F7
:2087D9002073746570730A780973746F700A700970617573652F726573756D650A4D096DB2 :2087D3002603CC89747B09A1312603CC898F7B09A13C2603CC89B37B09A13E2603CC89A01E
:2087F9006F7665206D6F746F720A6109616464204E737470730A7509756E69706F6C6172FE :2087F3007B09A1482603CC88717B09A14D2603CC89027B09A1532603CC88BB7B09A16126BD
:20881900206D6F746F720A62096269706F6C6172206D6F746F720A00626164207370656541 :2088130003CC894C7B09A1632603CC8A097B09A1642603CC89E77B09A1672603CC8A177B06
:1F88390064006D6F76696E672100626164204E7374657073006261642076616C756500E3 :2088330009A16827397B09A16D2603CC88F47B09A1702603CC89467B09A1732603CC88E65C
:108AE6000000000001F40000080A0206040501095E :208853007B09A1752603CC89C57B09A1782603CC89407B09A17A2603CC8A10CC8754AE8AC0
:2088580052040F040F017B0B484F494D262E160D1E0B905859170D1F0B1E09130D7B0812C9 :208873003889CD84215B02CC8754CE00161C0064CF0016CE0016A327102203CC875435F4B2
:208878000C7B07120B240D160D1E0B549056170D1F0B20080C017B016B0420CA7B046B0339 :20889300001735010016CC8754CE00161D0064CF0016CE0016A300642503CC87543564001E
:208898001E09130D7B08120C7B07120B2513160972F20D7B08120C977B07120B9517091FC6 :2088B30017725F0016CC8754961C000789CD85545B024D27121E07A3007D2D0B1E0789CD3D
:2088B80007160D1E0B549056170D1F0B7B036B020A030D0226CA1E0916075B048152125FE7 :2088D30080B55B02CC8754AE8B2289CD86425B02CC8754AE000E4B0289CD847B5B03CC87C0
:2088D8001F051F03A6206B027B15484F496B0116171E1590585917171F157B036B0B1E0412 :2088F30054AE00094B0489CD847B5B03CC8754CE000B2605CE0009270CAE8B2C89CD864220
:2088F800887B076B0F84080E59090B1F047B0E6B067B0B6B030D01271A7B06AA016B127B51 :208913005B02CC8754961C000789CD85545B024D270F1E07270B1E0789CD80E55B02CC8791
:20891800056B117B046B107B036B0F16111705160F17031E05131B7B04121A7B0312192580 :2089330054AE8B3489CD86425B02CC8754CD8115CC8754CD8143CC8754961C000789CD856B
:208938002B160572F21B7B04121A6B087B03121917056B037B086B047B18AA0190977B1720 :20895300545B024D270F1E07270B1E0789CD817B5B02CC8754AE8B3F89CD86425B02CC87B8
:2089580090957B16977B159517171F150A020D022703CC88E01E1716155B128152409096AC :2089730054AE526DF6A47FAE526DF7AE500AF6A4FDAE500AF7725F0018CC8754AE526DF615
:20897800905C961C00431F091E09E603961C00471F0B1E0B1F111E111F131E1388E60197B2 :20899300AA80AE526DF735010018CC8754AE5266F6A1642503CC87544CAE5266F7CC8754C1
:20899800844290FF72A900021E09E6031E0B1F3F1E3F1F0D1E0D1F0F1E0F88E603978442D9 :2089B300AE5266F64D2603CC87544AAE5266F7CC8754AE500BF6A5082703CC8754AE50055D
:2089B80090FF965C1F151E15F66B1B1E09F697160B90E603429F1B1B1E15F71E15F66B1CFC :2089D300F6A4CFAE5005F7AE5005F6AA10AE5005F7CC8754AE500BF6A5042703CC8754AEA6
:2089D8001E09E60197160B90E602429F1B1C1E15F79096905C93FE1F1D1E09E6011E0B1FCA :2089F3005005F6A4CFAE5005F7AE5005F6AA20AE5005F7CC8754725F0019CC875435010081
:2089F8001F1E1F1F211E211F231E2388E60397844272FB1D90FF93FE1F251E09E6021E0B0D :208A130019CC8754AE5266F66B05961C00054B0189CD847B5B03CC87545B0D810A4552527E
:208A18001F271E271F291E291F2B1E2B88E60297844272FB2590FF16091E09E6021E0B1F2D :208A33004F523A20000A50524F544F3A0A2B2F2D094C454420706572696F640A532F730936
:208A38002F1E2F1F311E311F331E3388E6019784429F90F71E095C1F351E09E60290971E43 :208A53007365742F676574204D73706565640A6D096765742073746570730A780973746FDA
:208A58000BE60390421E35FF160B1E09E6031E0B1F371E371F3D1E3D88F69784429F90F729 :208A7300700A700970617573652F726573756D650A4D096D6F7665206D6F746F720A610936
:208A78001E0B5C1F2D1E09E60390971E0BE60290421E2DFF1E0B1C00037F1E091C00037F1D :208A9300616464204E737470730A30097475726E206472696C6C204F46460A310974757285
:208A9800965CE6036B08E6026B07E6016B06F616431739164572F9071719887B07193B6B59 :208AB3006E206472696C6C204F4E0A3E09726F74617465206661737465720A3C09726F7418
:208AB800198419396B171619EF021617FFE603E602FE16491E4772F9199F1918979E191795 :208AD30061746520736C6F7765720A7509747261792075700A64097472617920646F776E31
:058AD80095515B408197 :208AF3000A63096175746F207370656564206F66660A7A096175746F207370656564206FA2
:208B13006E0A67096765742073706565640A00626164207370656564006D6F76696E6721D6
:168B330000626164204E7374657073006261642076616C75650004
:148DD3000000000001F400000000080A02060405010900006A
:208B490052040F020F017B0B484F494D262E160D1E0B905859170D1F0B1E09130D7B0812D7
:208B69000C7B07120B240D160D1E0B549056170D1F0B20080C017B016B0220CA7B026B0448
:208B89001E09130D7B08120C7B07120B2513160972F20D7B08120C977B07120B9517091FD2
:208BA90007160D1E0B549056170D1F0B7B046B030A040D0326CA1E0916075B048152125FEF
:208BC9001F051F03A6206B027B15484F496B0116171E1590585917171F157B036B0F1E041A
:208BE900887B076B1384081259090F1F047B126B067B0F6B030D01271A7B06AA016B0A7B51
:208C0900056B097B046B087B036B0716091705160717031E05131B7B04121A7B03121925B4
:208C29002B160572F21B7B04121A6B0C7B03121917056B037B0C6B047B18AA0190977B1724
:208C490090957B16977B159517171F150A020D022703CC8BD11E1716155B128152409096C4
:208C6900905C961C00431F0B1E0BE603961C00471F151E151F171E171F3F1E3F88E6019742
:208C8900844290FF72A900021E0BE6031E151F111E111F131E131F191E1988E60397844215
:208CA90090FF965C1F1B1E1BF66B1D1E0BF697161590E603429F1B1D1E1BF71E1BF66B1EDE
:208CC9001E0BE60197161590E602429F1B1E1E1BF79096905C93FE1F1F1E0BE6011E151FB4
:208CE900211E211F231E231F251E2588E60397844272FB1F90FF93FE1F271E0BE6021E15FD
:208D09001F291E291F2B1E2B1F2F1E2F88E60297844272FB2790FF160B1E0BE6021E151F19
:208D2900311E311F331E331F351E3588E6019784429F90F71E0B5C1F371E0BE60290971E3D
:208D490015E60390421E37FF16151E0BE6031E151F3D1E3D1F051E0588F69784429F90F777
:208D69001E155C1F2D1E0BE60390971E15E60290421E2DFF1E151C00037F1E0B1C00037F07
:208D8900965CE6036B0AE6026B09E6016B08F61643170D164572F909173B887B09190F6B91
:208DA9003B84190D6B39163BEF021639FFFE16491E4772F93B9F193A979E193995515B402F
:018DC9008128
:00000001FF :00000001FF