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

 
 
> Посоветуйте пожалуйста, ввязываться ли, ... в новую технологию и схемотехнику
Kitsok
сообщение Feb 4 2010, 08:02
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Добрый день!

Имеется задача: обеспечить интерфейс между ПО на компьютере и большим количеством дискретных вводов и выводов(около 300 вводов и примерно столько-же выводов), некоторого количества 7-сегментных индикаторов (12 штук по 5 разрядов), небольшим (8) - аналоговых входов, и десятка ШИМов (управление электромоторами).

Требования по таймингу - от нажатия на кнопку до срабатывания функции ПО на компьютере - макс. 100 мс, в обратную сторону - то-же.

Вокруг бродят магнитные поля от мощных сервоприводов.
Напряжение питания всей сети ввода-вывода - желательно одно, желательно - 12 вольт.

Из элементной базы - мне близки AVRы и ARM7 от Atmel, из языка - С, с ассемблером не дружу лет 10, крайний раз писал на нём под х51.
Дискретный ввод-вывод планировал делать цепочками сдвиговых регистров, ШИМ - ШИМом контроллера, аналоговый ввод - АЦП AVRов.

Особых требований по стоимости решения нет, поэтому я как буриданов осёл мечусь между IP, RS-232 over IP, RS-485 и вот наткнулся на CAN, а точнее - на чип MCP25050, и стало мне хорошо-хорошо wink.gif

Вопрос такой: где стоит начать читать про CAN, и стоит ли вообще ввязываться в новую тему (как я понимаю, оптимально будет и контроллер использовать микрочиповский, что для меня - вновье).

Заранее благодарен!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kitsok
сообщение Feb 13 2010, 16:23
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Добрый день!

Ввязался wink.gif

Сейчас имеет место быть стенд из двух CAN-AVR от Olimex (at90can128 на борту).
Одна постоянно шлёт пакетики, другая - принимает и отправляет дебаг в RS-232, плюс отсылает пакетик регулярно.

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

Во-вторых, но это возможно софтовый глюк, приемник принимает все пакеты передатчика по два раза, примерно вот так:

Rcvd: 0x153 8 8e1000000
Rcvd: 0x153 8 8e1000000
Rcvd: 0x153 8 8f1000000
Rcvd: 0x153 8 8f1000000

Ну и в третьих, если снять питание с передатчика, то приемник может совершить отсылку одного-двух пакетов, после чего ситуация повторяет обрыв линии, т.е. ошибка передачи.

Вопрос: а это правильно? Терминатор-то установлен вне зависимости от питания.
Go to the top of the page
 
+Quote Post
Kitsok
сообщение Feb 14 2010, 22:35
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Всем привет опять!

Бьюсь, обессилил.

Со стороны передатчика - FreeRTOS и два таска:

Код
/* continuously send CAN packets ID 0x151 with max speed (approx 1000Hz) */
static void send_function2( void *x)
{
(void)x;
static CAN_packet packet={0x151, 8, "\0\0\0\0\0\0\0\0"};
    
for(;; )
  {
   can_send( &packet, 10, 10);
   packet.data[1]++;
   vTaskDelay(500);
  }
}

/* periodically send CAN packet ID 0x150 */
static void send_function( void *x)
{
(void)x;
static CAN_packet packet;

packet.id=0x150;
packet.length=2;
packet.data[0]=0x00;
packet.data[1]=0xaa;
    
for(;; )
  {
   can_send( &packet, 13, 500);        
   packet.data[0]++;
   vTaskDelay(1000);
  }
}


Приемник - без изменений echo & spy из Атмеловских библиотек:
Код
-0- RxCAN @ C20C: 0x00000150(Ext.), L=2, 81-AA
-0- RxCAN @ 047D: 0x00000151(Ext.), L=8, 00-03-00-00-00-00-00-00
-0- RxCAN @ 4686: 0x00000150(Ext.), L=2, 82-AA
-0- RxCAN @ 88FB: 0x00000151(Ext.), L=8, 00-05-00-00-00-00-00-00
-0- RxCAN @ CAFD: 0x00000150(Ext.), L=2, 83-AA
-0- RxCAN @ 0D72: 0x00000151(Ext.), L=8, 00-07-00-00-00-00-00-00
-0- RxCAN @ 4F75: 0x00000150(Ext.), L=2, 84-AA
-0- RxCAN @ 91EB: 0x00000151(Ext.), L=8, 00-09-00-00-00-00-00-00
-0- RxCAN @ D3EC: 0x00000150(Ext.), L=2, 85-AA
-0- RxCAN @ 1663: 0x00000151(Ext.), L=8, 00-0B-00-00-00-00-00-00

Т.е. каждый второй фрейм более "частого" таска - теряется. Ошибок нет, смотрел через JTAG регистры.
Вот теперь я гадаю, где теряется фрейм - на приемнике, или на передатчике.

Может кто-нибудь сталкивался?

Update: Вот еще глюк, это уже серьезно ИМХО:
Код
-0- RxCAN @ E373: 0x00000151(Ext.), L=8, 00-0F-00-00-00-00-00-00
-0- TxCAN @ B704: 0x00000152(Ext.), L=8, 00-0F-00-00-00-00-E3-73
-0- RxCAN @ 2579: 0x00000150(Ext.), L=2, 08-AA
-0- TxCAN @ D47F: 0x00000151(Ext.), L=8, 08-AA-00-00-00-00-25-79
-0- RxCAN @ 67EB: 0x00000151(Ext.), L=8, 00-11-00-00-00-00-00-00


Отсюда видно, что пакетик в D47F есть суперпозиция пересылки пакета 2579 и D47F (08-AA и 00-10-00...). Где же гарантированная целостность? wink.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Kitsok   Посоветуйте пожалуйста, ввязываться ли   Feb 4 2010, 08:02
- - firstvald   Смотрите. Чем меньше технологий вы используете, те...   Feb 4 2010, 08:24
- - Kitsok   Спасибо за ответ. Про RS-232. Самый быстрый (и с...   Feb 4 2010, 09:05
|- - galjoen   Цитата(Kitsok @ Feb 4 2010, 12:05) Также ...   Feb 4 2010, 10:00
- - firstvald   С can не помогу - не знаю. RS232 и 485 по помехоза...   Feb 4 2010, 09:15
|- - Victor®   Цитата(firstvald @ Feb 4 2010, 12:15) RS2...   Feb 4 2010, 09:36
|- - rezident   Цитата(firstvald @ Feb 4 2010, 14:15) RS2...   Feb 4 2010, 10:05
- - galjoen   Цитата(Kitsok @ Feb 4 2010, 11:02) Добрый...   Feb 4 2010, 09:32
- - mrlee   Преимущество КЭН многие вещи делаются аппаратно. ...   Feb 4 2010, 09:39
- - syoma   Если стоимость не имеет значения а изделие штучное...   Feb 4 2010, 09:53
- - Kitsok   Спасибо за отклик Насчет multidrop RS-232 - я с...   Feb 4 2010, 10:21
- - syoma   ЦитатаА можно ли (предусмотрено ли стандартом) ...   Feb 5 2010, 08:00
- - firstvald   бухта в 1000 метров с резюками на концах. И гоняем...   Feb 5 2010, 08:23
|- - Kitsok   Добрый день! Последние дни читал и даташит на...   Feb 7 2010, 10:33
|- - galjoen   Цитата(Kitsok @ Feb 7 2010, 13:33) они вы...   Feb 7 2010, 11:37
||- - AlexandrY   Цитата(galjoen @ Feb 7 2010, 13:37) Усы 3...   Feb 7 2010, 11:46
||- - Kitsok   Стандарт лезу читать. Про ошибки опять. Правильн...   Feb 7 2010, 20:45
|- - cant   Цитата(Kitsok @ Feb 7 2010, 14:33) Читаю ...   Feb 15 2010, 09:26
- - AlexandrY   CAN самая надежная, дешевая и простая технология. ...   Feb 7 2010, 11:30
- - syoma   ЦитатаПро ошибки опять. Правильно ли я понимаю, чт...   Feb 15 2010, 08:45
- - Kitsok   Цитата(syoma @ Feb 15 2010, 11:45) Не зна...   Feb 15 2010, 11:37
- - Kitsok   Чисто полтергейст. Функция отсылки фрейма, низкоур...   Feb 16 2010, 06:21
- - Kitsok   Отвечу себе сам. Это - криво написанная функция ...   Feb 17 2010, 18:35


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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 00:32
Рейтинг@Mail.ru


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