| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Код для обработки CAN сообщений AT90CAN128
02.08.2010, 22:30
|
|
|
Прописка
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
|
Re: Код для обработки CAN сообщений AT90CAN128
Сообщение от XoDoK11
|
|
В Протеусе или еще где проект можно смоделировать?
|
Боюсь что нигде - тока железо плюс осцил http://www.avrfreaks.net/index.php?n...=77881&start=0
|
|
|
|
02.08.2010, 22:43
|
|
|
Частый гость
Регистрация: 16.09.2006
Сообщений: 15
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Код для обработки CAN сообщений AT90CAN128
Интересная штука, добавил код реакции на кнопки и вывод на светодиод:
|
Цитата:
|
while(1)
{
if (!(PINE & 0b00100000)) //if button is pressed (Bit5 = 0)
{
PORTB = PORTB & 0b11101111; //led on (Bit4 = 0)
CAN_SEND (MyMessage);
}
else
{
PORTB = PORTB | 0b00010000; //led off (Bit4 = 1)
}
if (!(PINE & 0b01000000)) //if button is pressed (Bit6 = 0)
{
PORTB = PORTB & 0b11110111; //led on (Bit3 = 0)
CAN_SEND (MyMessage);
}
else
{
PORTB = PORTB | 0b00001000; //led off (Bit3 = 1)
}
}
|
Светодиоды горят в пол силы, на выводе стабильно 2.4 вольта примерно..
Заливаю просто отдельный проект:
|
Цитата:
|
while (1)
{
//avoiding reset of the program
if (!(PINE & 0b00100000)) //if button is pressed (Bit5 = 0)
{
PORTB = PORTB & 0b11101111; //led on (Bit4 = 0)
}
else
{
PORTB = PORTB | 0b00010000; //led off (Bit4 = 1)
}
if (!(PINE & 0b01000000)) //if button is pressed (Bit6 = 0)
{
PORTB = PORTB & 0b11110111; //led on (Bit3 = 0)
}
else
{
PORTB = PORTB | 0b00001000; //led off (Bit3 = 1)
}
}
|
Светодиоды горят нормально. Для меня какая то мистика...
|
|
|
|
02.08.2010, 22:50
|
|
|
Прописка
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
|
Re: Код для обработки CAN сообщений AT90CAN128
а регистр DDRB на выход настроили DDRB=0xff;
А зачем такие сложности
|
PHP код:
|
PORTB = PORTB & 0b11101111;
PORTB = PORTB | 0b00010000;
|
не проще написать
|
PHP код:
|
PORTB |=(1‹‹4);
PORTB &=~(1‹‹4)
|
Последний раз редактировалось harchenko_pavel; 02.08.2010 в 22:56.
|
|
|
|
02.08.2010, 23:11
|
|
|
Частый гость
Регистрация: 16.09.2006
Сообщений: 15
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Код для обработки CAN сообщений AT90CAN128
В кан версии добавил функцию:
|
Цитата:
|
void Port_INIT()
{
// Port B initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0xFF;
// Port E initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTE=0x00;
DDRE=0x00;
}
|
|
|
|
|
02.08.2010, 23:20
|
|
|
Прописка
Регистрация: 28.09.2006
Сообщений: 144
Сказал спасибо: 11
Сказали Спасибо 95 раз(а) в 51 сообщении(ях)
|
Re: Код для обработки CAN сообщений AT90CAN128
Сообщение от LexaryStyle
|
|
В кан версии добавил функцию:
|
2.5В это z состояние. Даже не знаю, а функция вызвана
|
PHP код:
|
void main(void)
{
Port_INIT(); //Инициализируем порты
CAN_Message_t MyMessage;
MyMessage.IDT = 0x0F7AF0F4;
MyMessage.DLC = 5;
strncpy (&MyMessage.data[0], "Hallo", MyMessage.DLC);
CAN_INIT();
while(1)
{
CAN_SEND (MyMessage);
}
}
|
|
|
|
|
Сказали "Спасибо" harchenko_pavel
|
|
|
02.08.2010, 23:29
|
|
|
Частый гость
Регистрация: 16.09.2006
Сообщений: 15
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Код для обработки CAN сообщений AT90CAN128
Сообщение от harchenko_pavel
|
|
2.5В это z состояние. Даже не знаю, а функция вызвана
|
 Невнимательность, пока разбирался временно удалил вызов этой функции, только после вашиго замечания решил проверить.
Сегодня прикручу драйвер, посмотрю что на линии будет. Подскажите КАН Хакер или снифер проверенный на личном опыте!?
|
|
|
|
03.08.2010, 22:52
|
|
|
Частый гость
Регистрация: 16.09.2006
Сообщений: 15
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Код для обработки CAN сообщений AT90CAN128
Ребят подскажите как с помощью вышеописанного кода обработать принятые сообщения?
|
|
|
|
20.08.2010, 18:59
|
|
|
Частый гость
Регистрация: 16.09.2006
Сообщений: 15
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Код для обработки CAN сообщений AT90CAN128
На какой скорости надо подключаться кан хакером к устройству с данным кодом?
#define BRP_100_16 9
#define SJW_100_16 0
#define PRS_100_16 6
#define PHS2_100_16 3
#define PHS1_100_16 3
#define SMP_100_16 1
CANBT1 = (BRP_100_16 ‹‹ 1); /* BIT TIMING*/
CANBT2 = (PRS_100_16 ‹‹ 1) | (SJW_100_16 ‹‹ 5);
CANBT3 = (PHS2_100_16 ‹‹ 4) | (PHS1_100_16 ‹‹ 1) | (SMP_100_16);
При 16Мгц кварца.
Последний раз редактировалось LexaryStyle; 22.08.2010 в 21:40.
|
|
|
|
25.05.2011, 15:45
|
|
|
Прохожий
Регистрация: 25.05.2011
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Код для обработки CAN сообщений AT90CAN128
А есть у кого пример для CVAVR в котором есть функции Инциализация CAN как мастер, как слайв, передача по CAN, прием по CAN?
сижу 3 день не могу дупля врезать.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:02.
|
|