почему это работает /* * AVR_MENU.c * * Created: 18.03.2017 5:30:25 * Author : User */ #define F_CPU 8000000UL #include <avr/io.h> //#include <avr/eeprom.h> #include <util/delay.h> #include <avr/interrupt.h> //#include <util/twi.h>
#include "lcd.h" #include "adc.h" #include <stdio.h> #include <avr/wdt.h> #include "I2C.h" #include "EEPROM_V.h" #define btn_plus (PINC&1<<2) #define btn_minus (PINC&1<<7) #define SLA_R_RTC_ADDR 0b10100001//макрос адреса +бит чтения #define SLA_WR_RTC_ADDR 0b10100000//макрос адреса +бит записи
volatile unsigned int a,b,c,d;// volatile unsigned char a1;// volatile unsigned char a2;// volatile unsigned char b1;//
volatile unsigned char b2;// unsigned char c1,d1;// unsigned char c2,d2;//
volatile unsigned int r1,r2,r3;// переменная для прерывания по кнопке volatile unsigned char menu=0; volatile unsigned int n=0; volatile unsigned char bit1=0; volatile unsigned char bit2=1; volatile unsigned char bit3=0; //-Wl,-u,vfprintf -lprintf_flt -lm //-lprintf_flt char buf1[10];
char buf2[10]; char buf3[10]; char buf4[10]; char buf5[10]; char buf6[10];
volatile unsigned char flag1=0; volatile unsigned char flag2=0; volatile unsigned char flag3=0; volatile unsigned char flag4=0; volatile unsigned char flag5=0; volatile unsigned char flag6=0; volatile unsigned char flag7=0; volatile unsigned char flag8=0; volatile unsigned char flag9=0; volatile unsigned char flag10=0; unsigned char data; volatile unsigned int pauza=0; volatile unsigned int pauza_x=0; volatile unsigned int pauza_z=0;
//volatile unsigned char flag1=0,flag7=0,flag8=0,flag9=0; //char flag2=0; //volatile unsigned char flag3=0; //char flag4=0; //volatile unsigned char flag5=0; //volatile unsigned char flag6=0;
//uint16_t save1 EEMEM; //uint16_t save2 EEMEM; //uint16_t save3 EEMEM; //uint16_t save4 EEMEM;
ISR(INT0_vect) { //r++; pauza=0; bit3=1; //TCNT2=0; //pauza_x=0; //flag5=0; } ISR(TIMER0_COMP_vect) { TCNT0=0; pauza_x++; asm("wdr"); } ISR(TIMER1_COMPB_vect) { TCNT1H=0; TCNT1L=0; pauza_z++; } ISR(TIMER2_COMP_vect) { TCNT2=0; pauza++; if (!(PINC&1<<3)) { flag1=1; pauza=0; } if ((flag1==1)&&(PINC&1<<3)) { if (pauza>2) { menu++;n++;flag1=0; } }
} //void write_eeprom(void) //{ // I2C_START(); // I2C_TrasmitByte(); // I2C_STOP();
//}
void programa_write_eep(void) {
//I2C_Write_EEPROM(0b1010000); //I2C_Write_EEPROM(0); //I2C_Write_EEPROM(0); //I2C_Write_EEPROM(a); I2C_STOP(); } void programa_2(void) { if (pauza_z>1200) { flag3=1; } if (pauza_z>1280) { flag3=0; } if (pauza_z>1400) { bit3=1; } if (flag3==1) { PORTD|=(1<<5); } if (flag3==0) { PORTD&=~(1<<5); } } //unsigned int ADC_result(unsigned char adc_input) //{ // ADMUX=adc_input | (ADMUX & 0xF0); //задержка для стабилизации входного напряжения // _delay_us(10); //начинаем преобразование (ADSC = 1)
// ADCSRA=ADCSRA|(1<<ADSC); // while(ADCSRA & (1<<ADSC));//ждем, пока АЦП закончит преобразование (ADIF = 0) // return ADCW;//ADC - содержит ADCH и ADCL //} void init_ports(void) { DDRA=0x00; PORTA=0x00; DDRC|=(0<<2)|(0<<3)|(0<<7);//настройка порта D на вход "0" и на выход "1" PORTC|=(1<<2)|(1<<3)|(1<<7);//настройка порта D на вход "0" и на выход "1" DDRB|=0xFF;// PORTB|=0x00;//установка на выводах портаB DDRD|=(1<<0)|(0<<1)|(0<<2)|(0<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7);//настройка порта D на вход "0" и на выход "1" PORTD|=(0<<0)|(1<<1)|(1<<2)|(1<<3)|(0<<4)|(0<<5)|(0<<6)|(0<<7);//установкана всех выводах порта D } void init_timers(void) { TCCR1B=(1<<CS12)|(0<<CS11)|(1<<CS10); TCCR1A=0; TCCR0|=(1<<CS02)|(0<<CS01)|(1<<CS00); TCCR2|=(1<<CS22)|(0<<CS21)|(1<<CS20); TIMSK|=(1<<OCIE0)|(1<<OCIE1B)|(1<<OCIE2); TIFR|=(1<<OCF0)|(1<<OCF1B)|(1<<OCF2); TCNT0=0; TCNT1H=0; TCNT1L=0;
TCNT2=0; OCR0=245; OCR1B=250;
OCR2=250; } void INT_PIN() { GICR|=(1<<INT0); MCUCR|=(1<<ISC01)|(1<<ISC00); GIFR|=(1<<INTF0); } //void init_ADC() //{ // ADCSRA|=(1<<ADEN); // ADCSRA|=(0<<ADIF)|(0<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); // ADMUX |=(0<<REFS1)|(1<<REFS0); // ADCSRA |=(1<<ADSC); //} void init_wachdog_timer(void) { WDTCR|=(0<<WDTOE)|(1<<WDE)|(1<<WDP2)|(1<<WDP1)|(0<<WDP0); } int main(void) { init_ports(); init_I2C_M(); I2C_START(); I2C_SendByte(SLA_WR_RTC_ADDR); I2C_SendByte(1); I2C_SendByte(0); I2C_START(); I2C_SendByte(SLA_R_RTC_ADDR); a1=I2C_Readbyte_EEPROM(); a2=I2C_Readlastbyte_EEPROM(); I2C_STOP(); // _delay_ms(5); // a=((unsigned int) a1<<8)|a2; I2C_START(); I2C_SendByte(SLA_WR_RTC_ADDR); I2C_SendByte(3); I2C_SendByte(2); I2C_START(); I2C_SendByte(SLA_R_RTC_ADDR); b1=I2C_Readbyte_EEPROM(); b2=I2C_Readlastbyte_EEPROM(); I2C_STOP(); // I2C_START(); // a=((unsigned int) a1<<8)|a2; //b=((unsigned int) b1<<8)|b2; //I2C_STOP(); //_delay_ms() // b=((unsigned int) b1<<8)|b2; I2C_START(); I2C_SendByte(SLA_WR_RTC_ADDR); I2C_SendByte(5); I2C_SendByte(4); I2C_START(); I2C_SendByte(SLA_R_RTC_ADDR); c1=I2C_Readbyte_EEPROM(); c2=I2C_Readbyte_EEPROM(); I2C_STOP(); // read_eeprom();// чтение 2 байт //a=TWDR; // programa_read_eep(); //a=eeprom_read_word(& save1);// чтение 2 байт //b=eeprom_read_word(& save2);// чтение 2 байт //c=eeprom_read_word(& save3);// чтение 2 байт //d=eeprom_read_word(& save4);// чтение 2 байт // _delay_us(5); // I2C_START(); // I2C_SendByte(SLA_WR_RTC_ADDR); // I2C_SendByte(3); // I2C_SendByte(3); // I2C_START(); // I2C_SendByte(SLA_R_RTC_ADDR); // c=I2C_Readbyte_EEPROM(); // b=I2C_Readbyte_EEPROM(); // c=I2C_Readbyte_EEPROM(); // b=I2C_Readlastbyte_EEPROM(); // I2C_STOP(); // a=((unsigned int) a1<<8)|a2; // b=((unsigned int) b1<<8)|b2; //b=((unsigned int) b1<<8)|b2; //a=((unsigned int )a1<<8)|a2; // b=((unsigned int) b1<<8)|b2; init_timers(); INT_PIN(); init_ADC(); lcd_init(LCD_DISP_ON); lcd_clrscr(); asm("sei") ; init_wachdog_timer(); a=((unsigned int )a1<<8)|a2; b=((unsigned int) b1<<8)|b2; c=((unsigned int )c1<<8)|c2; while(1) { PORTD|=(1<<4); if (bit3==1) { TCCR1B=(0<<CS12)|(0<<CS11)|(0<<CS10); } if (bit3==0) { TCCR1B=(1<<CS12)|(0<<CS11)|(1<<CS10); } if (ADC_result(4)>825) { // flag2=0; asm("cli") ; programa_2(); asm("sei") ; } else { bit3=0; //flag2=1; asm("cli") ; pauza_z=0; pauza=0; asm("sei") ; } if (n==1) { PORTD|=(1<<5); } if (n==5) { n=0; PORTD&=~(1<<5); } if (ADC_result(0)>a&&ADC_result(1)>b&&ADC_result(2)>c&&ADC_result(3)>825) { //PORTD|=(1<<7); bit1=1; // flag5=1; } else { // PORTD&=~(1<<7); bit1=0; } if (bit1==1) { PORTD|=(1<<7); } else { PORTD&=~(1<<7); } //if (bit1==1&&bit2==1) //{ // PORTD|=(1<<6); // } // else //{ // PORTD&=~(1<<6); // } if (menu==1) { asm("cli"); if (btn_plus==0) { if (pauza>1) { pauza=0; if ( a==1023) { a=0; } a++; } } if (btn_minus==0) { if (pauza>1) { pauza=0; if (a==0) { a=1023; } a--; } } asm("sei"); } if (menu==2) { asm("cli"); if (btn_plus==0) { if (pauza>1) { pauza=0; if (b==1023) { b=0; } b++; } } if (btn_minus==0) { if (pauza>1) { pauza=0; if (b==0) { b=1023; } b--; } } asm("sei"); } if (menu==3) { asm("cli"); if (btn_plus==0) { if (pauza>1) { pauza=0; c++; if (c==1023) { c=0; } } } if (btn_minus==0) { if (pauza>1) { pauza=0; if (c==0) { c=1023; } c--; } } asm("sei"); } if (menu==4) { asm("cli"); if (btn_plus==0) { if (pauza>1) { pauza=0; if ( d==1023) { d=0; } d++; } } if (btn_minus==0) { if (pauza>1) { pauza=0; if (d==0) { d=1023; } d--; } } asm("sei"); } if (menu==0) { // a=((unsigned int )a1<<8)|a2; // b=((unsigned int) b1<<8)|b2; asm("cli"); lcd_clrscr(); //sprintf(buf4); lcd_puts("BobrAVR"); // sprintf(buf3,"i=%.2fa",result); // lcd_gotoxy(9,0); // lcd_puts(buf3); if (ADC_result(2)<c) { lcd_gotoxy(8,0); lcd_puts("OF"); } else { lcd_gotoxy(8,0); lcd_puts("ON"); } if (ADC_result(4)>800) { lcd_gotoxy(12,0); lcd_puts("X"); } else { lcd_gotoxy(12,0); lcd_puts("Z"); } if (ADC_result(3)>800) { lcd_gotoxy(14,0); lcd_puts("X"); } else { lcd_gotoxy(14,0); lcd_puts("Z"); } _delay_ms(50); asm("sei"); } if (menu==1) { asm("cli"); lcd_clrscr(); // a=((unsigned int )a1<<8)|a2; sprintf(buf1,"a=%2d",a); lcd_puts(buf1); a1=a/256; a2=a%256; //a2=a&0xFF; // a1=a>>8; if (!(PIND&1<<3)) { flag2=1; _delay_ms(20); } if((flag2==1)&&(PIND&1<<3)) { flag2=0; //a1=a&0xFF; //a2=a>>8; I2C_START(); I2C_SendByte(SLA_WR_RTC_ADDR); I2C_SendByte(1); I2C_SendByte(0); I2C_Write_EEPROM(a1); I2C_Write_EEPROM(a2); I2C_STOP(); // _delay_ms(5); } if (ADC_result(0)>a) { lcd_gotoxy(0,9); lcd_puts("P"); } else { lcd_gotoxy(0,9); lcd_puts("R"); } r1=ADC_result(0); lcd_gotoxy(2,1); sprintf(buf4,"a1=%2d",r1); lcd_puts(buf4); _delay_ms(50); asm("sei"); } if (menu==2) { asm("cli"); lcd_clrscr(); sprintf(buf2,"b=%2d",b); lcd_puts(buf2); b1=b/256; b2=b%256; // asm("cli"); if (!(PIND&1<<3)) { flag2=1; _delay_ms(20); } if (flag2==1&&PIND&1<<3) { // b1=a/256; // b2=a%256; flag2=0; I2C_START(); I2C_SendByte(SLA_WR_RTC_ADDR); I2C_SendByte(3); I2C_SendByte(2); I2C_Write_EEPROM(b1); I2C_Write_EEPROM(b2); I2C_STOP(); // eeprom_write_word (& save2,b); } if (ADC_result(1)>b) { lcd_gotoxy(0,9); lcd_puts("P"); } else { lcd_gotoxy(0,9); lcd_puts("R"); } r2=ADC_result(1); lcd_gotoxy(2,1); sprintf(buf5,"b1=%2d",r2); lcd_puts(buf5); _delay_ms(50); asm("sei"); } if (menu==3) { asm("cli"); lcd_clrscr(); sprintf(buf3,"c=%2d",c); lcd_puts(buf3); c1=c/256; c2=c%256; if (!(PIND&1<<3)) { flag2=1; _delay_ms(20); } if (flag2==1&&PIND&1<<3) { flag2=0; I2C_START(); I2C_SendByte(SLA_WR_RTC_ADDR); I2C_SendByte(5); I2C_SendByte(4); I2C_Write_EEPROM(c1); I2C_Write_EEPROM(c2); I2C_STOP(); // _delay_ms(5); // eeprom_write_word (& save3,c); } if (ADC_result(2)>c) { lcd_gotoxy(0,9); lcd_puts("R"); } else { lcd_gotoxy(0,9); lcd_puts("ND"); } r3=ADC_result(2); lcd_gotoxy(3,1); sprintf(buf6,"c1=%2d",r3); lcd_puts(buf6); _delay_ms(50); asm("sei"); } if (menu==4) { menu=0; } } } а вот это не работает /* * main.c * * Created on: 12 авг. 2020 г. * Author: Ivan */ #include"main.h" #include<stdio.h> #define button1 GPIOA->IDR &GPIO_IDR_ID6 #define button2 GPIOA->IDR &GPIO_IDR_ID7 //#include"#include"main.h"lcd2.h" volatile unsigned int pauza=0;
volatile unsigned char flag=0; volatile unsigned int b,c; volatile unsigned int t,m; volatile unsigned char menu; volatile unsigned char menu_en; volatile unsigned int adc_data1=0; volatile unsigned int adc_data2=0; volatile unsigned int adc_data3=0; volatile unsigned int adc_data4=0; char bufer1[16];
char bufer2[16];
uint16_t ADC_Data[4]; //#define z 0xB1//Я typedef unsigned char byte; //переопределяем тип void delay_ms(int a) { int i = 0; int f = 0; while(f < a) { while(i<60) {i++;} f++; } }
uint8_t bii [8]= { 0B00000, 0B00000, 0B01010, 0B00100, 0B00100, 0B00100, 0B00100, 0B00000 }; uint8_t bk [8]= { 0B00000, 0B00000, 0B01001, 0B01010, 0B01100, 0B01010, 0B01001, 0B00000 }; uint8_t bj [8]= { 0B00000, 0B00000, 0B10101, 0B01110, 0B00100, 0B01110, 0B10101, 0B00000 }; uint8_t bm[]= {
0B00000, 0B00000, 0B10001, 0B11011, 0B10101, 0B10001, 0B10001, 0B00000 }; uint8_t bn[]= { 0B00000, 0B00000, 0B10010, 0B10010, 0B11110, 0B10010, 0B10010, 0B00000 }; uint8_t biu[]= { 0B00000, 0B00000, 0B10111, 0B10101, 0B11101, 0B10101, 0B10111, 0B00000
}; uint8_t iorp[]= { 0b00000, 0b01100, 0b11110, 0b11110, 0b01111, 0b00111, 0b00011, 0b00001 }; uint8_t ior2p[]= { 0b00000, 0b00110, 0b01111, 0b01110, 0b11110, 0b11100, 0b11000, 0b10000 };
void init_IWDGtimer(void) { RCC->CSR|= RCC_CSR_LSION;
IWDG->KR = 0x5555; // Access to registers IWDG->PR&= ~(IWDG_PR_PR_0 | IWDG_PR_PR_1 | IWDG_PR_PR_2); // 4096 IWDG->RLR =170;//0x7FF; while (!((IWDG->SR & IWDG_SR_PVU) && (IWDG->SR & IWDG_SR_RVU))){} // wait while bist of PVU and RVU will be set. IWDG->KR = 0xCCCC; // Start count down; } void program1(void) {
if(pauza==1) { lcd_clear(); lcd_set_xy(0, 0); // IWDG->KR = 0xAAAA; } if(pauza==20) {
//PORTC13_ON; lcd_clear(); lcd_set_xy(0, 0); lcd_send(2,DATA);
}
if(pauza==35) { // PORTC13_OF; lcd_clear(); lcd_set_xy(0, 0); lcd_send('a',DATA); lcd_send(2,DATA);
// pauza=0; }
if(pauza==50) { lcd_clear(); lcd_set_xy(0, 0); // lcd_set_user_char(0, bii); // lcd_set_user_char(1, bj); lcd_send(1,DATA); lcd_send('a',DATA); lcd_send(2,DATA); }
if(pauza==65) { lcd_clear(); //lcd_set_user_char(0, bii); // lcd_set_user_char(1, bj); lcd_set_xy(0, 0); lcd_send(0,DATA); lcd_send(1,DATA); lcd_send('a',DATA); lcd_send(2,DATA); //pauza=0; }
if(pauza==80) { lcd_clear();
lcd_set_xy(0, 0); lcd_send(' ' ,DATA); lcd_send( 0 ,DATA); lcd_send(1,DATA); lcd_send('a',DATA); lcd_send(2,DATA); //pauza=0; }
if(pauza==95) { lcd_clear(); // lcd_set_xy(0, 0);
// lcd_set_user_char(0, bii); // lcd_set_user_char(1, bj); lcd_set_xy(0, 0); lcd_send(' ',DATA); lcd_send(' ',DATA); lcd_send( 0 ,DATA); lcd_send(1,DATA); lcd_send('a',DATA); lcd_send(2,DATA); lcd_set_xy(0, 1); lcd_send(3,DATA); lcd_send('e',DATA); lcd_send(4,DATA); lcd_send(5,DATA); lcd_send(' ',DATA); lcd_send( 3 ,DATA); lcd_send('a',DATA); lcd_send( 3 ,DATA); lcd_send('a',DATA); // lcd_out("mama"); // pauza=0;
}
}
void program2(void) {
// TIM3->CNT=0;
// lcd_clear();
// b=100; lcd_set_xy(0, 0); //TIM3->CNT=b; // t=0; sprintf(bufer1,"b= %.4d" ,b); lcd_out(bufer1);
// } } void program3(void) {
// t=700; lcd_set_xy(1,9);
sprintf(bufer2,"t= %.4d",t); lcd_out(bufer2);
} void Calbac (void) { ADC_Data[0]=ADC1->JDR1; ADC_Data[1]=ADC1->JDR2; ADC_Data[2]=ADC1->JDR3; ADC_Data[3]=ADC1->JDR4;
//TIM4->CCR3=ADC_Data[2]; // TIM4->CCR3=ADC_Data[0]; //TIM4->CCR3=ADC_Data[2]; } int main(void) { //char bufer1[16]; //lcd_delay(); //int b; //init_IWDGtimer(); AHB1ER_init(); PORT_init(); timer2_init(); AFR_init_time3(); timer3_init(); AFR_init_time4(); time4_init(); time5_init(); timer6_init(); adc3_init_regular(); adc1_init_inject(); //lcd_init_GPIO(); // str_lcd("string");
// LCD_Clear(); ADC1->CR1|= ADC_CR1_JEOCIE;
ADC1->CR2 |= ADC_CR2_ADON; NVIC_EnableIRQ ( ADC_IRQn); ADC3->CR2|=ADC_CR2_EXTSEL_2 |ADC_CR2_EXTSEL_1; ADC1->CR2|=ADC_CR2_JEXTSEL_1 |ADC_CR2_JEXTSEL_0; //ADC1->CR2|=ADC_CR2_JSWSTART; //LCD_init1(); lcd_init(); //lcd_clear(); //lcd_set_state(LCD_ENABLE, CURSOR_ENABLE, BLINK);
lcd_set_user_char(0, bii); lcd_set_user_char(1, bj); lcd_set_user_char(2, bk); lcd_set_user_char(3, bm); lcd_set_user_char(4, bn); lcd_set_user_char(5, biu); // Наша рыба это символ номер ноль // lcd_out("This is fish"); //Выводим надпись в нулевую строку // lcd_set_xy(0,1); //переводим курсор в первую строку //lcd_send(0,DATA); // lcd_send(1,DATA); //lcd_send('a',DATA); //Выводим символ номер ноль // lcd_set_state(LCD_ENABLE, CURSOR_ENABLE, BLINK); //lcd_set_state(LCD_ENABLE,CURSOR_ENABLE,NO_BLINK); //lcd_clear(); //lcd_set_state(LCD_ENABLE,CURSOR_ENABLE,NO_BLINK); //InitialLCD(); //ClearLCD(); //Cursor(0,2); //lcd_out("mama"); //PrintStr("MAMA");
//lcd_set_xy(0, 1); //lcd_out("mama"); //lcd_set_xy(6, 6); //lcd_out("papa"); //lcd_send('X',DATA); // lcd_send('y',DATA); //lcd_send('e',DATA); // clearlcd(); // str_lcd("string"); // delay_ms(50); init_IWDGtimer(); while(1) { // IWDG->KR = 0xAAAA; //lcd_clear(); // lcd_set_xy(0, 0); //lcd_out("mama"); //lcd_set_xy(0, 1); //lcd_out("papa"); //delay_ms(50); //ADC1->CR2|=ADC_CR2_JSWSTART; //ADC1->CR2|=ADC_CR2_JEXTSEL_1 |ADC_CR2_JEXTSEL_0; //while(!(ADC1->SR & ADC_SR_JEOC)); // ADC1->SR &=~ ADC_SR_JEOC; // Calbac (); // if( ADC_Data[0]>2045) //{ // PORTC13_ON; // a=TIM3->CNT; // if(a==5) // { // PORTC13_ON; // } // else // { // PORTC13_OF; // } //lcd_set_xy(2, 0); //lcd_send(0,DATA); //lcd_out("mama"); //lcd_set_xy(6, 0); //lcd_out("papa"); //lcd_set_xy(0, 1); // lcd_set_xy(0, 1); // lcd_send('m',DATA);
if(menu==0) { // lcd_clear(); //lcd_set_xy(0, 0); program1(); //lcd_out("mama"); // Delay(50); // lcd_set_xy(6, 6);
//DWT_delay_ms(50); // delay_(5); // lcd_clear(); // lcd_set_xy(0, 1); // lcd_send(' ',DATA); // lcd_send('m',DATA); // delay(1); // PORTD1_ON; // delay_ms(100); // Delay(40); }
if(menu==1) { program2(); // if(b>=50) // { // PORTC13_ON; // } // else // { // PORTD1_OF; // PORTC13_OF;
// } Delay(40); // delay_ms(50); } if(menu==2) { program3(); Delay(40);
// delay_ms(50);
}
if(menu==3) { menu=0; pauza=0; } //Delay(20); // DWT_delay_ms(100);
// a=TIM3->CNT; //TIM4->CCR3=a; //TIM4->CCR3=ADC_Data[2]; // TIM4->CCR1=ADC_Data[0]; //ADC3->CR2|=ADC_CR2_JSWSTART; // PORTD1_ON; //TIM4->CCR1=4095; //TIM4->CCR2=4095; //TIM4->CCR3=4095; //TIM4->CCR4=4095;
} } /* * ISR.c * * Created on: 17 июл. 2020 г. * Author: Ivan */
#include"main.h"
#include"PORT.h" //void Calbac (void); extern unsigned char flag; extern unsigned char menu; extern unsigned char menu_en; extern unsigned int tic; extern unsigned int a; extern unsigned int b; extern unsigned int t; extern unsigned int pauza; extern unsigned int adc_data1; extern unsigned int adc_data2; extern unsigned int adc_data3; extern unsigned int adc_data4;
extern unsigned char flag;
void TIM1_IRQHandler (void) {
} void TIM2_IRQHandler (void) {
} void TIM3_IRQHandler (void) { if(TIM3->SR & TIM_SR_UIF) { TIM3->SR &= ~ TIM_SR_UIF; // IWDG->KR = 0xAAAA; // IWDG->KR = 0xAAAA; // pauza++; //if(pauza>20) //{
// PORTC13_ON; ///PORTD1_ON; // GPIOD->BSRR |= GPIO_BSRR_BS1; //GPIOC-> BSRR |=GPIO_BSRR_BS13; //} // if(pauza>40) //{ // PORTC13_OF; //PORTD1_OF; // GPIOD->BSRR |= GPIO_BSRR_BR1; // GPIOC-> BSRR |=GPIO_BSRR_BR13; // pauza=0; // } }
} void TIM4_IRQHandler (void) {
} void TIM5_IRQHandler (void) { if(TIM5->SR & TIM_SR_UIF) { TIM5->SR &= ~ TIM_SR_UIF;
} } void TIM6_DAC_IRQHandler (void) {
if(TIM6->SR & TIM_SR_UIF) { TIM6->SR &= ~ TIM_SR_UIF;
if(menu_en==1) {
b=TIM3->CNT;
} if(menu_en==2) {
//TIM3->CNT++; t=TIM3->CNT;
// menu_en=0; } if(menu_en==3) {
menu_en=0; }
//TIM3->CNT=b; if(!(GPIOC->IDR&GPIO_IDR_ID0)) { flag=1; pauza=0; // TIM3->CR1&=~TIM_CR1_CEN; // TIM3->CNT=0; // b=0;
RCC->APB1ENR &=~RCC_APB1ENR_TIM3EN;
// t=0; // TIM3->CR1&=~ TIM_CR1_CEN; DWT_delay_ms(10); } if(flag==1&&GPIOC->IDR&GPIO_IDR_ID0) { flag=0; DWT_delay_ms(10);
RCC->APB1ENR |=RCC_APB1ENR_TIM3EN;
// TIM3->CR1|= TIM_CR1_CEN; menu=menu+1; menu_en++; } //program1();
// PORTC13_ON; IWDG->KR = 0xAAAA; pauza++; } }
//void TIM7_IRQHandler (void); //void TIM8_IRQHandler (void); //void TIM9_IRQHandler (void); //void TIM10_IRQHandler (void); //void TIM11_IRQHandler (void); //void TIM12_IRQHandler (void); //void TIM13_IRQHandler (void) void ADC_IRQHandler(void) { if(ADC1->SR & ADC_SR_JEOC) { ADC1->SR &=~ ADC_SR_JEOC;
adc_data1=ADC1->JDR1; TIM4->CCR1=adc_data1; ADC1->SR &=~ ADC_SR_JEOC; adc_data2=ADC1->JDR2; TIM4->CCR2=adc_data2; ADC1->SR &=~ ADC_SR_JEOC; adc_data3=ADC1->JDR3; TIM4->CCR3=adc_data3; ADC1->SR &=~ ADC_SR_JEOC; adc_data4=ADC1->JDR4; TIM4->CCR4=adc_data4; // return=ADC1->JDR1; //flag=1; // TIM4->CCR1=adc_data1; // TIM4->CCR2=adc_data2; // TIM4->CCR3=adc_data3; // TIM4->CCR4=adc_data4; // TIM4->CCR1=adc_data1; // if( adc_data3>2045) // { // PORTD1_ON; // PORTC13_ON; // } // else // { // PORTD1_OF; // PORTC13_OF;
// }
} } вернее работает но не так как хотелось бы.Или я принцип энкодера не понимаю.Или вообще баран
Вложения: |
main.c [13.54 KiB]
Скачиваний: 193
|
|