roboforum.ruТехнический форум по робототехнике. |
|
|
Не работает, даже в цикл while(1) не заходит, странно, как такое вобще может быть?
при этом загораются соответствующие светодиоды на выходах PORTB=00010001
Прога должна при нажатии кнопки перегонять серво постепенно из крайнего левого в крайнее правое положение
Ramzez писал(а): Даже 2 раза серва заработала , но не реагировала на кнопку (в отличае от светодиодов) , но всеголишь 2 раза, при неизменном коде прошивки.
#define F_CPU 1000000UL // 1 MHz
#include <avr/io.h>
#include <avr/interrupt.h>
// Declare your global variables here
void main(void)
{
PORTD=0x00;
DDRD=0x20; //выход таймера
DDRA = 0xff; //выходы
DDRB=0x00; //входы
PORTB=0b00000001 ; //pull-up на нулевую ногу
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: Normal top=FFFFh
// OC1A output: Set
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xC0;
TCCR1B=0x02;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x09;
ICR1L=0xc4;
OCR1AH=0x00;
OCR1AL=0xBC;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
while (1)
{
while(PINB & 0x01 != 0) {
if (OCR1AL<250)
{
OCR1AL++;
PORTA = 0b00000001;
}
}
if (OCR1AL>140)
{
OCR1AL--;
PORTA=0b00010000;
}
}
}
Ramzez писал(а): если иточник питания до 40 ампер
Вернуться в Новичкам или основы основ роботостроения.
Сейчас этот форум просматривают: Bing [Bot] и гости: 21