реклама на сайте
подробности

 
 
> CAN128. Попробуем разобраться.
dormouse
сообщение Feb 16 2006, 20:04
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 22
Регистрация: 1-03-05
Из: Москва
Пользователь №: 2 980



Начал разработку несложного софта для системы из нескольких at90can128. Фактически, надо сделать несложный исходник на IAR EC++ 4.1 Посмотрел, что есть из готового, но ничего не нашёл.
Единственное - колоссального размера исходник от Atmel'a (вроде адаптированный от прошлой архитектуры).

Для начала очень желаемо суметь написать софт, который сможет принять-послать-обработать ошибку.

Насчёт более высокого уровня (DeviceNET, CANOpen e.t.c) пока не сумел разобраться - складывается ощущение, что ничего готового (ни одного готового каркаса) невозможно найти...

Есть желающие включиться в разработку из идейных или материальных побуждений?

Жду ответа.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение Feb 17 2006, 14:42
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



При начале работы я использовал CAN примерно так:

Код
//инициализация кана
static void CanInit(void)
{
  //входим в ресет моду
  CANGCON=0;
  while(CANGSTA & (1<<ENFG));

  // задаем TIME сеги... примеры есть в даташите
  CANBT1=CANBT1_DEF;
  CANBT2=CANBT2_DEF;
  CANBT3=CANBT3_DEF;

  // инициализируем все майлбоксы
  {
    BYTE i;
    for(i=0x00; i<0xF0; i+=0x10) {
      CANPAGE  = i;
      CANSTMOB = 0;
      CANCDMOB = 0;
    }  
  }
  
  // разрешаем прерывание на прием от майл боксов
  //  но только для полинга что бы использовать CANHPMOB
  CANGIE = 0x20;
  CANIE1=0x7F;
  CANIE2=0xFF;
  
}


// инициализация майл боксов
static void CanInitMailBoxes(void)
{
// инициализируем 6 майл боксов на прием extended frame

  CANPAGE=0;
  CANIDT1=??;
  CANIDT2=??;
  CANIDT3=??;
  CANIDT4=??;
  CANIDM1=??;
  CANIDM2=??;
  CANIDM3=??;
  CANIDM4=??;
  CANCDMOB=0x90;
  
  CANPAGE=0x10;
  CANIDT1=??;
  CANIDT2=??;
  CANIDT3=??;
  CANIDT4=??;
  CANIDM1=??;
  CANIDM2=??;
  CANIDM3=??;
  CANIDM4=??;
  CANCDMOB=0x90;

  CANPAGE=0x20;
  CANIDT1=??;
  CANIDT2=??;
  CANIDT3=??;
  CANIDT4=??;
  CANIDM1=??;
  CANIDM2=??;
  CANIDM3=??;
  CANIDM4=??;
  CANCDMOB=0x90;

  CANPAGE=0x30;
  CANIDT1=??;
  CANIDT2=??;
  CANIDT3=??;
  CANIDT4=??;
  CANIDM1=??;
  CANIDM2=??;
  CANIDM3=??;
  CANIDM4=??;
  CANCDMOB=0x90;

  CANPAGE=0x40;
  CANIDT1=??;
  CANIDT2=??;
  CANIDT3=??;
  CANIDT4=??;
  CANIDM1=??;
  CANIDM2=??;
  CANIDM3=??;
  CANIDM4=??;
  CANCDMOB=0x90;

  CANPAGE=0x50;
  CANIDT1=??;
  CANIDT2=??;
  CANIDT3=??;
  CANIDT4=??;
  CANIDM1=??;
  CANIDM2=??;
  CANIDM3=??;
  CANIDM4=??;
  CANCDMOB=0x90;
}

// вход в рабочий режим
static void CanEnterOperatingMode(void)
{
  CANGCON=(1<<ENASTB);
  while(!(CANGSTA & (1<<ENFG)));
}




// обработчик CAN (полингом)

static void CanHandler(void)
{
  {
    BYTE Tmp;
    if (CANGSTA & (1<<BOFF)) {
      Reset(); // произошло BUS OFF
    }
    Tmp=CANHPMOB; // Проверка принятых пакетов
    if (Tmp<0xF0) {
      CANPAGE=Tmp;
      if (Tmp<0x20) RxHandler1(); // прием из майл бокса 0 или 1
      else if (Tmp<0x40) RxHandler2(); // прием из майл бокса 2 или 3
      else if (Tmp<0x60) RxHandler3(); // прием из майл бокса 4 или 5
      // удаляем пакет
      CANSTMOB=0;
      CANCDMOB=0x90;

    } else {
      // 7 ой майл бокс используем для отправки
      CANPAGE=0x60;
      if (!(CANSTMOB & (1<<TXOK))) return;
      TxHandler();
    }  
  }
}


void main(void)
{
    CanInit();
    CanInitMailBoxes();
    CanEnterOperatingMode();
      // посылаем стартовый пакет (устройство включилось)
      // примерно так (extended frame без данных)
      CANIDT1=??;
      CANIDT2=??;
      CANIDT3=??;
      CANIDT4=??;
      CANSTMOB=0;
      CANCDMOB=0x50;

    while(1) {
      CanHandler();
    }

}
Go to the top of the page
 
+Quote Post
J0hnNick
сообщение Jun 15 2007, 10:21
Сообщение #3





Группа: Новичок
Сообщений: 13
Регистрация: 28-04-07
Пользователь №: 27 387



Цитата(KRS @ Feb 17 2006, 18:42) *
При начале работы я использовал CAN примерно так:

Код
// обработчик CAN (полингом)

static void CanHandler(void)
{
  {
    BYTE Tmp;
    if (CANGSTA & (1<<BOFF)) {
      Reset(); // произошло BUS OFF
    }
    Tmp=CANHPMOB; // Проверка принятых пакетов
    if (Tmp<0xF0) {
      CANPAGE=Tmp;
      if (Tmp<0x20) RxHandler1(); // прием из майл бокса 0 или 1
      else if (Tmp<0x40) RxHandler2(); // прием из майл бокса 2 или 3
      else if (Tmp<0x60) RxHandler3(); // прием из майл бокса 4 или 5
      // удаляем пакет
      CANSTMOB=0;
      CANCDMOB=0x90;

    } else {
      // 7 ой майл бокс используем для отправки
      CANPAGE=0x60;
      if (!(CANSTMOB & (1<<TXOK))) return;
      TxHandler();
    }  
  }
}


на эту функчию получаю в компиляторе winavr ошибки
C:\WinAVR\projects\Can_Int/main.c:143: undefined reference to `TxHandler'
C:\WinAVR\projects\Can_Int/main.c:127: undefined reference to `Reset'
C:\WinAVR\projects\Can_Int/main.c:132: undefined reference to `RxHandler1'
C:\WinAVR\projects\Can_Int/main.c:133: undefined reference to `RxHandler2'
C:\WinAVR\projects\Can_Int/main.c:134: undefined reference to `RxHandler3'

как их исправить?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- dormouse   CAN128. Попробуем разобраться.   Feb 16 2006, 20:04
- - era   Типа совет. Когда работал с CAN-ом слепил приблуд...   Feb 16 2006, 21:31
- - Aleks17   По-моему проще разобраться и своё сгородить. На С ...   Feb 17 2006, 03:39
- - spf   Цитата(dormouse @ Feb 17 2006, 01:04) Для...   Feb 17 2006, 04:24
- - dormouse   Найденные в продаже устройства: 1. Славна $70...   Feb 17 2006, 11:07
|- - ruslannd   Цитата(KRS @ Feb 17 2006, 18:42) При нача...   Apr 4 2006, 10:13
|- - ruslannd   Цитата(KRS @ Feb 17 2006, 18:42) При нача...   Apr 4 2006, 11:43
||- - KRS   Цитата(ruslannd @ Apr 4 2006, 15:43) Цита...   Apr 4 2006, 14:28
||- - ruslannd   Цитата(KRS @ Apr 4 2006, 18:28) Цитата(ru...   Apr 5 2006, 14:48
|- - d'Bill   Дык их то и надо написАть ручками   Jun 18 2007, 19:34
- - dormouse   Пока изучаю, ещё не компилировал. После обдумывани...   Feb 22 2006, 12:54
|- - spf   Цитата(dormouse @ Feb 22 2006, 17:54) Пок...   Feb 26 2006, 05:18
- - Седой   Уважаемый dormouse, Вы пишите: ЦитатаPS Ответа от ...   Feb 24 2006, 07:51
- - dormouse   Письмо я направил на NPP@SLAVNA.RU, 17 Фев 2006 16...   Feb 24 2006, 11:00
- - dormouse   Отлично. Почти собрал этот исходник. Осталось толь...   Feb 26 2006, 06:06
|- - Andy Mozzhevilov   Цитата(dormouse @ Feb 26 2006, 11:06) До ...   Feb 26 2006, 10:02
|- - ipc   Цитата(dormouse @ Feb 26 2006, 10:06) Про...   Apr 4 2006, 11:14
- - John   Посмотрите еще здесь - Описание CAN на русском яз...   Mar 1 2006, 03:15
- - dormouse   Позволю добавить от себя ;-) Я разобрался с работо...   Apr 4 2006, 21:00
|- - ipc   Цитата(dormouse @ Apr 5 2006, 01:00) Позв...   Apr 5 2006, 05:11
|- - zltigo   Цитата(dormouse @ Apr 5 2006, 00:00) PS О...   Apr 12 2006, 19:07
- - kanzler   Привет всем! Идейные соображения по поводу CAN...   Apr 5 2006, 05:28
|- - ipc   Цитата(kanzler @ Apr 5 2006, 09:28) Приве...   Apr 5 2006, 05:39
- - dormouse   Совершенно верное суждение насчёт протоколов высок...   Apr 5 2006, 07:00
|- - ipc   Цитата(dormouse @ Apr 5 2006, 11:00) Сове...   Apr 5 2006, 07:22
- - dormouse   Тогда можно попросить указать цены на вами закупле...   Apr 5 2006, 07:51
- - ipc   Плата IXXAT USBtoCAN(2 канала с опторазвязкой) ~25...   Apr 5 2006, 08:03
- - dormouse   Цена действительно оказалась более чем приемлемой....   Apr 5 2006, 08:16
|- - ipc   Цитата(dormouse @ Apr 5 2006, 12:16) Цена...   Apr 5 2006, 08:55
- - dormouse   Atmel сделала шаг вперёд к gcc и CAN. Конкретно: т...   Apr 12 2006, 18:24
- - Седой   ЦитатаЧуть-чуть портят впечатление кривенькие с ко...   Apr 17 2006, 13:05
- - zuuuuk   Меня очень интерисует эта тема. т. к. я сейчас тол...   Jun 8 2007, 16:24
|- - spf   Цитата(zuuuuk @ Jun 8 2007, 22:24) Меня о...   Jun 8 2007, 16:34
- - Dimorus   я не могу понять как этот Can ваще работает млиин ...   Jun 19 2007, 15:19
- - Dimorus   А кто-нибудь автора dormouse видел или может знает...   Jun 20 2007, 15:42
|- - Alexeus   Цитата(Dimorus @ Jun 20 2007, 18:42) А кт...   Jan 22 2009, 13:52
|- - galjoen   Цитата(Alexeus @ Jan 22 2009, 16:52) Така...   Jan 23 2009, 11:02
- - SasaVitebsk   По моему на асме ничего не было. Если только билио...   Jan 22 2009, 18:10
- - ARV   я же выкладывал нормальную библиотеку для работы с...   Jan 22 2009, 18:20
|- - Alexeus   Цитата(ARV @ Jan 22 2009, 21:20) я же вык...   Jan 23 2009, 12:12
|- - ARV   Цитата(Alexeus @ Jan 23 2009, 15:12) Спас...   Jan 24 2009, 16:45
|- - Alexeus   Это, конечно, похоже больше в тематику- обучалка, ...   Jan 26 2009, 07:36
- - SasaVitebsk   А там нечего писать. Инициализацию - заимствовать....   Jan 23 2009, 19:52


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 11:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.0145 секунд с 7
ELECTRONIX ©2004-2016