ПрикольноMOHCTEP писал(а):Так и мне непонятно, оттого и спросил.))
Нельзя поделить 16-ти метровую верёвку на 9 одинаковых кусков, длиной, равной целому значению метров.
ПрикольноMOHCTEP писал(а):Так и мне непонятно, оттого и спросил.))
Все точно. Я ж и просил "по возможности равномерно". Т.е. пропуски могут немного и различаться. Важно распределиться по исходному массиву.Нельзя поделить 16-ти метровую верёвку на 9 одинаковых кусков, длиной, равной целому значению метров.
А Вы на чём пишите ? Вроде вопрос задали в теме по СиНа я.в.у. эта задачка решается в 5 секунд
Так. А если умножать/делить на 2^n?придётся делать бешеные умножения и деления на 10 в n-ной степени.
Ну можно и на 2^n. Только нужно прикинуть минимальную точность для фиксированной точки.MOHCTEP писал(а):Так. А если умножать/делить на 2^n?
Попробую, авось что-то да получится. ну а чего вы хотели, если в коде есть только включение, но нет отключения?ROMan2947 писал(а):при нажатии загорается и не гаснет совсем
Код: Выделить всё
ISR (INT0_vect)
{
PORTC ^= (1<<1);
}ARV писал(а):ну а чего вы хотели, если в коде есть только включение, но нет отключения?ROMan2947 писал(а):при нажатии загорается и не гаснет совсеми в главном цикле убрать запрет прерываний! как же вы будете работать с прерываниями, если запрещаете их?Код: Выделить всё
ISR (INT0_vect)
{
PORTC ^= (1<<1);
}
WiseLord писал(а):Вообще-то asm("nop") (в видео) и cli() (у Вас) в цикле - это совершенно разные вещи.
WiseLord писал(а):Вообще-то asm("nop") (в видео) и cli() (у Вас) в цикле - это совершенно разные вещи.
И пример в видео тоже не ахти - светодиод зажжётся только один раз при первом нажатии кнопки и больше свое состояния не поменяет. А то и вообще и без нажатия зажжётся на старте контроллера.
ARV писал(а):я вам сказал, что и как исправить, чтобы заработало в протеусе. в реале могут быть проблемы с дребезгом контактов кнопки.
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/iom16.h>
#define LED_DDR DDRC
#define LED_PORT PORTC
#define LED (1<<1)
#define BTN_DDR DDRD
#define BTN_PIN PIND
#define BTN (1<<2)
static char status = 0;
ISR (INT0_vect)
{
if (status)
LED_PORT &= ~LED;
else
LED_PORT |= LED;
status = !status;
}
int main(void)
{
BTN_DDR &= ~BTN; // Set as input
LED_DDR |= LED; // Set as output
GICR |= (1<<INT0); // Enable INT0
MCUCR &= ~(1<<ISC10); // Any logical change
sei();
while (1) {
}
return 0;
}
WiseLord писал(а):Посмотрите на что-то вродеСпойлер
Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/iom16.h>
#define LED_DDR DDRC
#define LED_PORT PORTC
#define LED (1<<1)
#define BTN_DDR DDRD
#define BTN_PIN PIND
#define BTN (1<<2)
static char status = 0;
ISR (INT0_vect)
{
if (status)
LED_PORT &= ~LED;
else
LED_PORT |= LED;
status = !status;
}
int main(void)
{
BTN_DDR &= ~BTN; // Set as input
LED_DDR |= LED; // Set as output
GICR |= (1<<INT0); // Enable INT0
MCUCR &= ~(1<<ISC10); // Any logical change
sei();
while (1) {
}
return 0;
}