Jump to content

Салих

Members
  • Content Count

    12
  • Joined

  • Last visited

Community Reputation

-1 Плохой

About Салих

  • Rank
    Новенький
  • Birthday 06/03/1994

Информация

  • Пол
    Мужчина
  • Интересы
    Радиоэлектроника.
  • Город
    Ташкент

Электроника

  • Стаж в электронике
    Менее года
  • Сфера радиоэлектроники
    Радиосвязь,электроника,ремонт,компьютерная техника,локальные сети.
  • Оборудование
    Паяльник,мультиметр,отвёртки(шлицевая,фигурная),бокорезы,нож,
    припой,канифоль,паяльная кислота,хлорид железа.

Recent Profile Visitors

431 profile views
  1. По даташиту посмотрел это USART выход. Может из за этого?
  2. Добрый день. Подскажите пожалуйста, почему на порте D не работает опрос кнопки? А на других работает. #include <avr/io.h> int main(void) { DDRD &= ~((1<<0)|(1<<1)); PORTD |=(1<<0)|(1<<1); DDRD |=(1<<PD6); while (1) { if ((PIND&(1<<PD0)) == 0) { PORTD |=(1<<PD6); } else { PORTD &=~(1<<PD6); } } }
  3. Добрый день. Помогите пожалуйста где ошибка в коде? Код не работает. #define F_CPU 8000000UL #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> ISR(ADC_vect) { OCR1A = ADCH; } void pwm_settings() { // PWM SETTINGS TCCR1A |= (1 << COM1A1)|(0 << COM1A0) |(1 << WGM11)|(1 << WGM10); TCCR1B |= (1 << WGM12)|(1 << WGM13)|(0 << CS12)|(1 << CS11)|(0 << CS10); TCNT1 = 0x00; ICR1 = 0xFF; OCR1A = 0x00; } int main(void) { DDRD |=(1<<PD5); //DDRD &= ~(1<<PD2); //PORTD |= (1<<PD2); DDRA &= ~(1<<PA0); void pwm_settings(); //ADC SETTTINGS ADCSRA |= (1<<ADEN)|(1<<ADSC)|(1<<ADATE)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0); ADMUX |= (0<<REFS1)|(0<<REFS0)|(0<<ADLAR)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0); SFIOR = 0x00; sei(); while(1) { } } Мне надо регулировать скважность сигнала на OCR1A
  4. Через АЦП можно останавливать работу ШИМ?
  5. #define F_CPU 1000000UL #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> void pwm_settings() { // PWM SETTINGS TCCR1A |= (1 << COM1A1)|(0 << COM1A0) |(1 << WGM11)|(1 << WGM10)|(1 << WGM12)|(1 << WGM13); TCCR1A |= (0 << CS12)|(0 << CS11)|(1 << CS10); TCNT1 = 0x00; ICR1 = 0xFF; OCR1A = 0x00; }; void pwm_off() { TCCR1A |= (0 << CS12)|(0 << CS11)|(0 << CS10); } ISR (INT0_vect) { pwm_off(); } int main(void) { void pwm_settings(); DDRD |=(1<<PD5); DDRD &= ~(1<<PD2); PORTD |= (1<<PD2); //EXTERNAL INTERRUPTS SETTINGS GICR |= (1 << INT0); MCUCR |= (1<<ISC00)|(0<<ISC01); sei(); while(1) { } } Помогите плиз что не так я сделал? Работаю на отладочной плате. Код не работает. Мне надо с помощью внешних прерываний включать выключать шим. Я еще думаю над АЦП. Кто знает на АЦП можно реализовать?
  6. А можно допустим на выводе PD5 сделать FastPWM. А на выводе PD2 с помощью внешних прерываний включать выключать ШИМ?
  7. #define F_CPU 1000000UL #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> void led_on() { PORTB=0xff; DDRB=0x00; } ISR (INT0_vect) { led_on(); } int main(void) { DDRD &= ~(1<<PD2); PORTD |= (1<<PD2); //EXTERNAL INTERRUPTS SETTINGS sei(); GICR |= (1 << INT0); MCUCR |= (0<<ISC00)|(1<<ISC01); while(1) { } } Вроде получилось. Я подключил к выводу PD2 переменный резистор. Когда на выводе PD2 логическая еденица то на портах PB напряжение отсудствует. Но почему то при прокручивании переменного резистора обратно на выводах PB7 все равно логическая еденицa.
  8. #define F_CPU 1000000UL #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> ISR(INT0_vect) { PORTD =0x00; } int main(void) { DDRD = 0xff; //EXTERNAL INTERRUPTS SETTINGS GICR |= (1 << INT0); MCUCR |= (0<<ISC00)|(1<<ISC01); sei(); while(1) { PORTD = 0xff; _delay_ms(220); _delay_ms(220); PORTD = 0x00; _delay_ms(220); _delay_ms(220); } } Не работает прерывание. Где ошибка? Помогите пожалуста
×
×
  • Create New...