2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Простая задача
Сообщение28.04.2008, 21:55 


28/04/08
2
Здравствуйте ALL.
Подскажите решение простой задачи:
в автомобиле установлен многофунциональній монитор,который имеет 3 входа,на один из которых подключена камера заднего вида с парктроником,а на другой PCCAR,переключение входов осуществляеться одной кнопкой на мониторе(по кругу 1-2-3 снова 1 вход и т.д)задача такова:
при подачи питания (в данном случае +12 с фонаря заднего хода) устройство
подает импульс длинной примерно четверть секунды,который замыкает контакты
на вышеупомянутой кнопке,а при снятии напряжения подает 2 импульса.
Имею в своем распоряжении программатор для пиков,пик ATmega8L,паяльник,и руки руки не из...
а вот с написанием программы туго.

помогите создать прошивку.

 Профиль  
                  
 
 
Сообщение30.04.2008, 17:28 


21/03/06
1545
Москва
Боюсь, что Вам вряд ли помогут с такой формулировкой задачи. Написать-то программу - пара строк. Я даже могу вспомнить мегу, скачать заголовочный файл под ATmega8L, написать эту пару строк программы... Но, не забывайте, что основное в работе программиста - отладка. Как Вы предлагаете форумчанам заниматься отладкой Вашей системы? Я уж не говорю о том, что Вы не написали концепцию устройства (схему), на какие порты что подадите, от каких будете замыкать кнопку.

В общем, задача-то действительно простая, но... слишком много неизвестных. Рад бы помочь, да пока не могу.

Если Вы обладаете азами программирования, ставьте IAR Studio для Меги, настраивайте, конструируйте (или покупайте) программатор, проверяйте все это дело. На конкретные вопросы - отвечу. Даже напишу Вам те несколько строк, что Вам требуется. Однако, опыт говорит о том, что подобная удаленная работа скорее всего обречена на провал.

P.S. может быть, найдете более легкий путь коммутирования камер в зависимости от состояния автомобиля? По-моему, микроконтроллер тут не нужен.

 Профиль  
                  
 
 
Сообщение09.05.2008, 02:26 


28/04/08
2
Ответ понятный ,благодарю.От идеи не отказался ,хотя альтернативный вариант задачи ,на логике, подкинул местным электронщикам.
Насчет портов,дык мне без разницы куда вход а откуда выход,в крайнем случае управляющий выход с AVR пустить через оптопару или геркон.На вход подается +12 в через резистор ,->на выходе импульс,снялось напряжение -> 2 импульса.Можно ,конечно прифигачить AVR к контроллеру монитора там и сигнал с камеры есть,кстати в новой версии автомоника так наверное и поступили,по крайней мере там уже есть автопереключение входов,но это усложнит задачу.

P.S. я не думал что это так сложно,иначе помощи бы не просил:)
С уважением,Владимир.

 Профиль  
                  
 
 
Сообщение09.05.2008, 10:01 


21/03/06
1545
Москва
Что-то типа этого:

Код:
#include <ioavr.h>
#include <intrinsics.h>

int main( void )
{
  PORTB = 0x00; //Когда ножки будут выходами, на них будет 0
  DDRB = 0x01; // Ножку PB0 - на выход
 
  static enum {ON, OFF} state = OFF;

  while(1)        // Eternal loop
  {
   
    if( (PINB & 0x02) && state == OFF )
    {
      __delay_cycles(400000);  // Ждем 400 000 циклов (ок. 50 мс) (для защиты от помехи)
      if( PINB & 0x02 )
      {
        PORTB = 0x01;  //Ножку PB0 в 1
        __delay_cycles(2000000);  // Ждем 2 000 000 циклов (ок. 250 мс)
        PORTB = 0x00;  //Ножку PB0 в 0

        state = ON;
      }
    }
   
    if( !(PINB & 0x02) && state == ON )
    {
      __delay_cycles(400000);  // Ждем 400 000 циклов (ок. 50 мс) (для защиты от помехи)
      if( !(PINB & 0x02) )
      {
        PORTB = 0x01;  //Ножку PB0 в 1
        __delay_cycles(2000000);  // Ждем 2 000 000 циклов (ок. 250 мс)
        PORTB = 0x00;  //Ножку PB0 в 0
        __delay_cycles(2000000);  // Ждем 2 000 000 циклов (ок. 250 мс)
        PORTB = 0x01;  //Ножку PB0 в 1
        __delay_cycles(2000000);  // Ждем 2 000 000 циклов (ок. 250 мс)
        PORTB = 0x00;  //Ножку PB0 в 0

        state = OFF;
      }
    }
   
  }
}

Примитивизм конечно, но работать должно. Времена задержек подберите сами.
Выполняется однократная дополнительная проверка состояния входа для минимизации помехи. Можно усовершенствовать алгоритм, вплоть до написания цифровых фильтров.

Компилируется IAR C для Меги, в проекте необходимо правильно выбрать целевой процессор. В более старых версиях компилятора надо было включать специфический .h файл для каждого процессора, сейчас посмотрел бегло - вроде уже не надо, может быть что-то упустил.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group