Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 19.04.2011, 11:19   #1
orionchik
Junior Member
 
Регистрация: 19.04.2011
Возраст: 31
Сообщений: 2
Вес репутации: 100/0
orionchik will become famous soon enoughorionchik will become famous soon enough
Отправить сообщение для orionchik с помощью ICQ
По умолчанию Очень нужна Ваша помощь (dsPIC30f6014 + CAN)

Здравствуйте!
Очень нужна Ваша помощь. Мозги закипают
Есть мини проект. Исходные данные идентичные платы. На которых расположен dsPic с обвеской.
Платы общаются между собой по CAN интерфейсу. Для этого были добавлены 2 микрухи mcp2551.
Необходимо передавать 8 байт информации по двум направлениям. Как я понял придется использовать 4 буфера.
Но к сожалению с CAN как то не доводилось работать. Вот сижу сейчас разбираюсь.

Есть исходник настройки CAN(см. ниже). который в принципе заработал и начал передавать числа.
Но как только я начал углубляться далее то окончательно запутался.
Вопросы по большей части связаны с ниже перечисленными регистрами.

C1RXM0SID
C1RXM0EIDH
C1RXM0EIDL

C1RXF0SID
C1RXF0EIDH
C1RXF0EIDL

C1TX0SID
C1TX0EID

C1RX0EID
C1RX0SID

Как связаны они между собой?
Как правильно их настроить?
В каких случаях используются , в каких нет?
Как правильно использовать маски и фильтры?
Пытаюсь разобраться за что и как эти регистры отвечают. Скажем так 50 % понятно 50% соответственно.

На данном этапе пытаюсь сделать что бы , например у одной платы был свой уникальный номер и она принимала только то сообщение которое именно ей и посылается.

Если есть примеры буду очень благодарен. А если хотя бы хоть один человек потратит на меня немного времени и объяснит. Буду вечно благодарен.
По сути интересует побольше разобраться с правильностью понимания настройки и использования регистров. По этому использование данного контроллера не существенно.
Если кого заинтересует скину исходник полностью.
Сильно не ругать :laughing:

(Пример настройки CAN, где то нашел ну и современен естественно вносил что то своё.)

Код:
 C1CTRLbits.REQOP = 4;
 C1CTRLbits.CANCKS = 1;            // Select the CAN Master Clock . It is equal to Fcy here. 
                                // equal to Fcy.(Fcy=30Mhz)
 C1CFG1bits.SJW=00;                //Synchronized jump width time is 1 x TQ when SJW is equal to 00

 C1CFG1bits.BRP = BRP_VAL;        //((FCY/(2*NTQ*BITRATE))-1)     

 C1CFG2 = 0x03F5;               // SEG1PH=6Tq, SEG2PH=3Tq, PRSEG=5Tq 
                                // Sample 3 times
                                // Each bit time is 15Tq

///Interrupt Section of CAN Peripheral
 C1INTF = 0;                    //Reset all The CAN Interrupts 
 IFS1bits.C1IF = 0;              //Reset the Interrupt Flag status register
 C1INTE = 0x00FF;               //Enable all CAN interrupt sources
 IEC1bits.C1IE = 1;                //Enable the CAN1 Interrupt 

//-----------------------------------------------------------------------------------------------------------------------
                        // Configure Receive registers, Filters and Masks
//-----------------------------------------------------------------------------------------------------------------------

 // We are initializing the Receive Buffer 0 and Receive Buffer 1 for CAN1 and CAN2 
 C1RX0CON = C1RX1CON = 0x0000;     // Receive Buffer1 and 0 Status //and Control Register for CAN1 and CAN2
 // Acceptance Mask Register0SID and Register1SID associated with Recieve Buffer0
 // and Receive Buffer1 for CAN1 and CAN2 
 C1RXM0SID  = C1RXM1SID   = 0x1FFD; 
  // Acceptance Mask Register0EIDH and Register1EIDH associated with Recieve Buffer0
 // and Receive Buffer1 for CAN1 and CAN2
 C1RXM0EIDH = C1RXM1EIDH  = 0x0FFF; 

 // Acceptance Mask Register0EIDL and Register1EIDL associated with Recieve Buffer0 
 //and Receive Buffer1 for CAN1 and CAN2
 C1RXM0EIDL = C1RXM1EIDL  = 0xFC00; 
 
//Initializing of Acceptance Filter n Standard Identifier for CAN1

 C1RXF0SID     = 0x0AA8;    //CAN1 Receive Acceptance Filter2 SID         
 C1RXF2SID     = 0x1555;   //CAN1 Receive Acceptance Filter2 SID
 //C1RXF2EIDH = 0x0004;   //CAN1 Receive Acceptace  Filter2 Extended Identifier high byte
 //C1RXF2EIDL = 0x8C00;    //CAN1 Receive Acceptance Filter2 Extended identifier low byte

//-----------------------------------------------------------------------------------------------------------------------
                        // Configure Transmit Registers Buffer 0 and Transmit Buffer 1
//-----------------------------------------------------------------------------------------------------------------------
  
 C1TX0CON = 0x0003;     // High priority
 C1TX0SID = 0x50A8;     // SID 
 C1TX0EID = 0x0000;     // EID 
 C1TX0DLC = 0x0040;        //Select the Data word Length for CAN1 Transmit Buffer0 which is 8 byte  
 
 // Data Field 1,Data Field 2, Data Field 3, Data Field 4 // 8 bytes selected by DLC 

 //C1TX1CON = 0x0002;             // High Intermediate priority
 //C1TX1SID = 0xA855;             // SID  
 //C1TX1EID = 0x0004;             // EID                   
 //C1TX1DLC = 0x8DA0;                //Select the Data word Length for CAN1 Transmit Buffer1 which
                                // is 4 byte
 //Data Field 1, Data Field 2 // 4 bytes selected by DLC

// C1TX1B1 = OutData1[0];
// C1TX1B2 = OutData1[1];
 //Change to Loopback Operation Mode from Configuration Mode

    C1CTRLbits.REQOP = 0;            //переход в режим работы
    while(C1CTRLbits.OPMODE!=0){}
orionchik вне форума   Ответить с цитированием
Старый 19.04.2011, 12:28   #2
_jsi_
Senior Member
 
Регистрация: 05.03.2008
Сообщений: 148
Вес репутации: 102/42
_jsi_ will become famous soon enough_jsi_ will become famous soon enough
По умолчанию Re: Очень нужна Ваша помощь (dsPIC30f6014 + CAN)

Посмотри по форуму. Здесь тема про САN всплывала не раз.
Сам недавно разбирался Давай почту информацию что имею.
_jsi_ вне форума   Ответить с цитированием
Старый 19.04.2011, 12:44   #3
orionchik
Junior Member
 
Регистрация: 19.04.2011
Возраст: 31
Сообщений: 2
Вес репутации: 100/0
orionchik will become famous soon enoughorionchik will become famous soon enough
Отправить сообщение для orionchik с помощью ICQ
По умолчанию Re: Очень нужна Ваша помощь (dsPIC30f6014 + CAN)

Просто уже заколебался. Много чего облазил. До сих пор в поиске
orionchik@mail.ru
За ранее СПАСИБО!
orionchik вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
опять программатор самопал torser Вопросы начинающих 8 08.04.2010 02:01
Нужна ваша помощь Macroship Вопросы начинающих 12 23.01.2010 19:33
Очень нужна помощь, помогите кто чем может! Tonshic Вопросы начинающих 39 06.06.2009 16:14
Очень нужна помощь! Ищу компоненты... Katya Продукция MICROCHIP 14 16.04.2008 09:05
Нужна помощь в Proteus`е italic Общетехнические вопросы 2 25.03.2008 14:49


Часовой пояс GMT +3, время: 05:56.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot