Проект - тахометр +кнопка START-STOP engine

Обсуждаем контроллеры компании Atmel.
Ответить
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

Спасибо. Но возникает вопрос как быть?
Просто я думал что программа циклично заходит и проверяет это условие или я не прав. Если я не прав у меня возникает проблемма как можно это дело обойти т. е. обнулить переменную 1 раз?
т. е. переменную я обнуляю, но при условии, что триггер не взведен и сразу же взвожу триггер, т. е. при следующем заходе она не должна обнуляться.
Антидребезг я тоже сделал на таймере вот здесь

if (START_BUTTON && trig) // кнопка отпущена
{
if (tim2>SEC_05) // антидребезг
{
.....
по сл. ошибке, мне лучше запретить прерывание?
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

Да на счет программатора Вы меня не совсем правильно поняли))
на примере одного пина я показал как будет задействовано и работать готовая схема, +12в подается только при подключении к машине)), а при программировании туда вообще ничего подавать не собирался.))
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Прошу прощения, упустил, что у Вас триггер взводится. Сейчас еще раз посмотрю.

А при программировании контроллера у Вас питание на него как будет подаваться?

И при работе у Вас транзистор не будет открываться в таком включении.

У Вас антидребезг по факту отпускания кнопки, а по факту нажатия нет.

Код: Выделить всё

while (CHANGE_HEAT);
Вот здесь у Вас зависнет, пока не нажмете кнопку HEAT. А при ее нажатии у Вас сработает прерывание, для которого нет обработчика и контроллер сбросится. Вам надо или убрать настройку прерывания или написать для него обработчик
Последний раз редактировалось ИС-пытатель Ср апр 23, 2014 10:36:13, всего редактировалось 1 раз.
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

точно не будет на скорую руку вчера делал не посмотрел))
коллектор на +12В
эмиттер на диод через резак))

ну питание на контроллер тоже выход на плате сделаю?
Реклама
Эиком - электронные компоненты и радиодетали
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

я согласен с Вами на счет обработчика, но поставьте точку останова он вообще не заходит внутрь((
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

rxstart1 писал(а):ну питание на контроллер тоже выход на плате сделаю?
Как вариант
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

я запретил прерывание эффекта 0 ((
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Внутрь он заходит, но Протеус почему-то не отображает изменение переменной tim2 в прерывании (tim2++). Я бы не стал на это обращать внимание. У Протеуса много глюков. Лучше перекиньте код в студию, подправьте для нее и прогоните через ее симулятор. А еще лучше на железе проверьте
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

на счет первого ничего не понял, я не так давно занимаюсь программированием МК))
на счет последнего, Вы считаете что код работоспособен?
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

А вот, нашел у Вас.

Код: Выделить всё

void change_key_pos(char num)
{
 switch (num) 
       {
        case 0: ACC=0;                    // все выключить
                IGN=0;
                IGN_FAULT=0;
                STARTER=0;
        break;
!!!!        case 1: ACC=1;                         // включить АСС - аксесуары т. е. первое положение "ключа"
                IGN=0;
                IGN_FAULT=0;
                STARTER=0;
!!!!                tim2=0;                            // взвести таймер
        break;
        case 2: if (tim2>SEC_10) // если пауза межде первам и вторым нажатием превысила 10 сек. выключить все
                  {
                   ACC=0;
                   IGN=0;
                   IGN_FAULT=0;
                   STARTER=0;
                   key=0;
                   tim2=0;
                   break;
                  }
                 ACC=1;                        
                 IGN=!err;                  // в зависимости от исправности
                 IGN_FAULT=err;             // включить реле IGN
        break;
       } 
}
У Вас key будет = 1, потому что изменяется всего раз, а потом вы триггером запрещаете изменение. А в этом switch у Вас сбрасывается tim2

И еще.
1. Антидребезг у Вас не правильно сделан.
2. Необходимо добавить антидребезг после нажатия
Последний раз редактировалось ИС-пытатель Ср апр 23, 2014 11:03:52, всего редактировалось 1 раз.
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

убрал все ровно не работает((
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Давайте архив со всеми изменениями. Скомпилировать не забыли?

попробуйте закомментировать вот этот кусок:

for (i=0;i<k;i++)
{
on_led(i);
delay_ms(5);
}

будет работать или нет?
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

Вру заработало все ОК, но поочему то с дикими тормозами попробую перегрузить комп))
СПАСИБО Вам огромное помогли, время выключения предеться чуть переделать, а так все ок))
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

просто вместо 2 сек надо держать секунды 4-5 почему так получилось хз?
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

Есть еще одна проблема чем больше частота вращения вала тем больше тормоза? как быть?
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Скорость эмуляции протеуса зависит от мощности компьютера. И она не всегда совпадает с реальностью. Проверяйте в железе.

А вот лучшее спасибо - это плюсик в карму. ;)

А то я тут поцапался с несколькими типами и меня уже "плохим" сделали. )
но я думаю, Вы еще будете писать - не все там идеально . :beer:
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

а как плюсик поставить я поставил + в рейтенге сообщений - это карма))?

я сделал условие если двигатель работает то включать диоды в цикле, а при нажатии на кнопку сразу проверку поставил если двигатель работает вырубить все - и помогло))

еще у меня есть вопрос как работать с энергонезависимой памятью, мне туда надо бит ошибки прописывать при разрыве линии IGN переменная err тип bit?
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

rxstart1 писал(а):а как плюсик поставить я поставил + в рейтенге сообщений - это карма))?
Нет, но тоже сойдет. ) Карма - это в информации обо мне можно поставить. но Вы все равно сейчас не измените. Мало сообщений у Вас.

По поводу памяти - скачайте Евстифеева. "Микроконтроллеры AVR Tiny и Mega". Лучше в .pdf
Там все хорошо описано. Прям по оглавлению находите и читайте.

P.S. Ну, Вы понастарались с плюсами! :)))
Вымогатель припоя
Аватара пользователя
Сообщения: 508
Зарегистрирован: Пт фев 22, 2013 18:00:43
Откуда: Беларусь, г. Гомель

Сообщение rxstart1 »

У меня новая проблема, но уже с протеусом в дебаге в окне переменных выдает следующее:
err R-254 byte Item (1 bytes at 0xFFFFFF02) not within memory block (0x00000460 bytes).
И ничего не работает((
Погуглил, но толком ничего не нашел((
с EEPROM разобрался там всего 2 команды записать в память и считать, но пока не реализовал, т. к. эта проблема ставит крест на всей работе((

Прикрепляю новый код
Вложения
mega.rar
(252.5 КБ) 135 скачиваний
Последний раз редактировалось rxstart1 Чт апр 24, 2014 09:23:10, всего редактировалось 1 раз.
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

Насколько помнится, Протеус может видеть только глобальные переменные. Если у Вас переменная объявлена внутри функции - он ее не сможет отобразить. Это если я правильно понял проблему.
Ответить

Вернуться в «AVR»