не такой рэлюхи нет, лучше через ключ, а вот то что проблем много, это точно проба пера.dosikus писал(а):З.Ы. Кста у него есть одна бяка , он не иницилизирует глобальные переменные из за этого может быть масса проблем.dosikus писал(а): Хотя можно без изменений в проге - вешать на вывод непосредственно обмотку реле , но релюху надо подбирать по току 20 mА максимум.
Нуждаюсь в помощи! прога для PIC16F628A
- Реклама
Код: Выделить всё
// --- ПЕРЕМЕННЫЕ --- //
unsigned char gSTATE; // Переменная состояния и ее значения
enum {ST_READY, ST_SLEEP, ST_ON, ST_SETUP, ST_START, ST_COUNT, \
ST_SIGNAL, ST_USERSTOP};
unsigned char gLED_DIGITS[2]; // Отображаемые на индикаторе символы
unsigned char gLED_COUNTER; // Текущий разряд индикатора
unsigned char gBUTTONS; // Положение кнопок
unsigned char gMIN_D, gMIN_E, gSEC, gQUANT; // Время
unsigned char gCSTOP; // Счетчик (для останова пользователем)
int16 gCW; // 16-битный счетчик
Хотябы 0 в них забить , в реале при старте там мусор.
Это еще одна беда когда отлаженная прога в протеусе не работает в железе.
CCS для этого есть static ...
Есть еще #ZERO_RAM но эта директива обнуляет все регистры - минус долго работает.
Ага это я всё понял ГУД, но проблем в том, что я -то не смогу реализовать это програмно.dosikus писал(а):Обьясняю на пальцах-
При старте микро ,регистры аппаратно не обнуляются и в них будет находится совсем не то что мы ожидаем .
Для этого нужно их иницилизировать- или обнулить или загонять то что нам надо по контексту.
- Реклама
Вариант 1:
Вариант 2:
Оба равнозначные.
Код: Выделить всё
unsigned char gSTATE=0; // Переменная состояния и ее значенияКод: Выделить всё
static unsigned char gSTATE; // Переменная состояния и ее значенияstatic
Variable is globally active and initialized to 0. Only accessible from this compilation unit.
Переменная глобально активна и инициализирована к 0. Только доступный от этой единицы трансляции.
Ага ясно, далее ещё что?dosikus писал(а):Вариант 1:
Вариант 2:Код: Выделить всё
unsigned char gSTATE=0; // Переменная состояния и ее значения
Оба равнозначные.Код: Выделить всё
static unsigned char gSTATE; // Переменная состояния и ее значения
static
Variable is globally active and initialized to 0. Only accessible from this compilation unit.Переменная глобально активна и инициализирована к 0. Только доступный от этой единицы трансляции.
Ну дык дальше по логике все переменные так же .
Код: Выделить всё
// --- ПЕРЕМЕННЫЕ --- //
static unsigned char gSTATE; // Переменная состояния и ее значения
enum {ST_READY, ST_SLEEP, ST_ON, ST_SETUP, ST_START, ST_COUNT, \
ST_SIGNAL, ST_USERSTOP};
static unsigned char gLED_DIGITS[2]; // Отображаемые на индикаторе символы
static unsigned char gLED_COUNTER; // Текущий разряд индикатора
static unsigned char gBUTTONS; // Положение кнопок
static unsigned char gMIN_D, gMIN_E, gSEC, gQUANT; // Время
static unsigned char gCSTOP; // Счетчик (для останова пользователем)
static int16 gCW; // 16-битный счетчик
ведать я что-то не то сделал, релюха включается при подаче питания сразу.
- Вложения
-
- hometimer1.c
- (16.91 КБ) 323 скачивания
dosikus писал(а):Надо посмотреть твою схему подключения .
- Вложения
-
- Timer3.GIF
- (28.49 КБ) 254 скачивания
Включаем питание таймера, рэлюха молчит, нажимаем кнопки выставляем время, нажимаем СТАРТ, рэлюха ВКЛ, по истечению времени, рэлюха ВЫКЛ, короче бонально.dosikus писал(а):Тебе нужно чтобы при включении на RA4 был 0 или 1 ?
То есть у нас получается инверсно - 1 на RA4 реле выключено , 0 включено ?
А дальше при включении реле выключено , стартуем таймер реле включаем - время закончилось реле выключили ?
Коль у меня ключ стоит, на транзюк в любом случае надо лог1, по истечению времени лог0, кстати если ещё в этом таймере выкинуть нах засыпание таймера вообще чудесно будет.
Ну и оставь кондер.
Короче при включении на входе висит 1 .
Из за того что выход некоторое время в z состоянии, а при кондере
на нем 0 - зарядка .
Короче при включении на входе висит 1 .
Из за того что выход некоторое время в z состоянии, а при кондере
на нем 0 - зарядка .
- Вложения
-
- hometimer1_cr.png
- (564 байт) 379 скачиваний
Блин проблем, если ставлю кондёр 4,7мкф, то так-же хлюпает рэле, если10мкф, то вообще рэле не запускается. Илог1 уже нет на выходе МК.dosikus писал(а):Ну и оставь кондер.
Короче при включении на входе висит 1 .
Из за того что выход некоторое время в z состоянии, а при кондере
на нем 0 - зарядка .
Последний раз редактировалось DeNew Пт авг 01, 2008 21:38:03, всего редактировалось 1 раз.


