Технический форум по робототехнике.
yak-40 » 13 авг 2009, 12:42
У тебя прерывание первого таймера не открыто.
Стоит TIMSK=0x01; а надо TIMSK=0x05;
avr123.nm.ru » 13 авг 2009, 12:51
У меня сделано без прерываний в основном цикле программы, обычный счетчик считает ...
- Код: Выделить всё • Развернуть
char ctr_out;
while(1) {
if (ctr_out > 100){ // вывод на 7seg 2 раза в секунду
out_7seg(data);
ctr_out = 0; // счетчик увеличивается 200 раз в сек в прерыв переполн таймер 0
следующий код программы ...
}
Master » 13 авг 2009, 13:18
2 yak-40 Убица ап стену, пасиба, а то у меня уже моск лопнул.
Я забыл совсем про этот регистр.
2 avr123.nm.ru Ну можно и так. Просто у меня таймер свободный.
Добавлено спустя 23 минуты 31 секунду:
Отредактировал первое сообщение, выложил проект. Теперь буду плату ваять.
blindman » 13 авг 2009, 18:39
Master, я бы внёс в код следующие изменения.
#define ind_0 и прочие заменил бы на
- Код: Выделить всё • Развернуть
static char digits[] = {
0b00111111,
0b00000110,
0b01011011,
0b01001111,
0b01100110,
0b01101101,
0b01111101,
0b00000111,
0b01111111,
0b01101111,
};
и Displey() переписал бы так:
- Код: Выделить всё • Развернуть
void Displey(void)
{
unsigned int data = DCV_displey;
//Выводим dro индикатор
ind_dro;
PORTD = digits[data % 10];
pause;
data /= 10;
//Выводим ed индикатор
ind_ed;
PORTD = digits[data % 10];
pause;
data /= 10;
//Выводим des индикатор
ind_des;
PORTD = digits[data % 10];
pause;
}
ИМХО компактнее и проще
Master » 13 авг 2009, 21:52
Прикольно, пасиба поробую.
Master » 17 авг 2009, 09:54
Я тут задумал еще светодиодик добавить чтобы при низком заряде он зажигался. Какое напряжение считается низким для авто аккумулятора?
=DeaD= » 17 авг 2009, 09:59
Правильно писать:
Display()а то глаз царапает
yak-40 » 17 авг 2009, 10:41
Master писал(а):Какое напряжение считается низким для авто аккумулятора?
Тут вопрос вот в чём. При заведённом двигателе измерять или при заглушеном?
avr123.nm.ru » 17 авг 2009, 10:57
Master писал(а):Я тут задумал еще светодиодик добавить чтобы при низком заряде он зажигался. Какое напряжение считается низким для авто аккумулятора?
10.5 самое низкое, поэтому меньше 11 я бы не советовал разряжать. А когда мотор работает напруга должна быть 13.8 - 14.2 вольт примерно но не менее 13.2 Если меньше то генератор не рубит как надо.
yak-40 » 17 авг 2009, 11:13
И получается, если настроить индикатор на заведённый двигатель, то при заглушеном светодиод будет всегда гореть
Вопрос: нужен ли он?
Возможное решение: делать датчик работы двигателя, и менять уставку индикатора.
Master » 17 авг 2009, 11:40
Блин, ну и хрен с ним, откуда я датчик работы двигателя возьму.
Master » 30 авг 2009, 00:25
На этой неделе снова вернулся к этой теме, буду уже печатку травить.
Переписал процедуру Displey как рекомендовал
blindman все работает, только я не совсем понимаю как оно работает, вот давайте пошагово.
Допустим напряжение получилось 12,6 В
DCV_displey=13,6
- Код: Выделить всё • Развернуть
void Displey(void)
{
unsigned int data=DCV_displey; =13,6
//Выводим dro индикатор
ind_dro;
PORTD=digits[data%10]; 13,6%10=6
pause;
data=data/10; 13,6/10=1,36
//Выводим ed индикатор
ind_ed;
PORTD = digits[data%10]; 1,36%10=36 Что выводим 36 ????
pause;
data=data/10;
//Выводим des индикатор
ind_des;
PORTD = digits[data%10];
pause;
}
avr123.nm.ru » 30 авг 2009, 01:18
Master писал(а): откуда я датчик работы двигателя возьму.
Иногда принимают порог около 12,8 вольт как признак работы мотора. Если напруга в сети выше - то работает.
Master » 30 авг 2009, 01:42
А если генератор не работает? Лучше отдельный провод от зажигания кинуть.
Добавлено спустя 10 минут 45 секунд:
Блин я совсем запутался
чему будет равно
1. 13,6%10=3,6
2. 13,6/10=1 если переменные целые числа (всмысле что 13,6 это содержимое целочисленной переменной data)
верно?
Добавлено спустя 3 минуты 28 секунд:
Все разобрался.
avr123.nm.ru » 30 авг 2009, 12:13
1. 136 % 10 будет 6
2. 136 / 10 будет 13
3. 136 % 100 будет 36
4. 136 / 100 будет 1