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

 
 
> CAN Ack Error, AT91SAM7Xxxx
owl
сообщение May 5 2009, 13:41
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 90
Регистрация: 7-08-06
Из: Смоленск
Пользователь №: 19 370



Провозился пол дня с казавшейся по началу ерундовой проблемой, отменить CAN посылку, при отсутствии ACK сигнала (нет slave на шине).
Понял, что сделать это не могу!!! (Культурными средствами по крайней мере smile.gif )

Поиск в инете выдал следующее:

http://www.at91.com/samphpbb/viewtopic.php?f=15&t=5043
http://support.atmel.no/bin/customer?=&...ntry&id=254

Блин, очередной облом с процом....достало....
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
KRS
сообщение May 5 2009, 14:13
Сообщение #2


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

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



Так если ACK нет, значит на шине больше вообще нет устройств. Пусть себе передает пакет... как появится хотя бы одно устройство появится или ACK или ошибки до BUS OFF дойдут
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение May 5 2009, 14:28
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(owl @ May 5 2009, 16:41) *
Блин, очередной облом с процом....достало....

Да все нормально. Скорее ситуация ненормальная, когда шина пустая.
Хотя старенький MCP2515 умеет передавать сообщения однократно... rolleyes.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Serg_el
сообщение Jun 3 2009, 17:54
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 302
Регистрация: 13-12-06
Из: Togliatti
Пользователь №: 23 473



При попытке передать пакет, когда на шине только одно устройство (некому подтвердить принятие), mcu продолжает без остановки передавать этот пакет, при этом залезая в swi прерывание. Кто-нибудь сталкивался с подобным? Как можно побороть?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jun 3 2009, 18:55
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Недавно обсуждалось.
Go to the top of the page
 
+Quote Post
Serg_el
сообщение Jun 8 2009, 11:31
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 302
Регистрация: 13-12-06
Из: Togliatti
Пользователь №: 23 473



Цитата(owl @ May 5 2009, 17:41) *
Провозился пол дня с казавшейся по началу ерундовой проблемой, отменить CAN посылку, при отсутствии ACK сигнала (нет slave на шине).
Понял, что сделать это не могу!!! (Культурными средствами по крайней мере smile.gif )

Поиск в инете выдал следующее:

http://www.at91.com/samphpbb/viewtopic.php?f=15&t=5043
http://support.atmel.no/bin/customer?=&...ntry&id=254

Блин, очередной облом с процом....достало....


Как решили проблему? У меня при отсутствии ACK сигнала проц продолжает посылать пакет при этом входит в swi прерывание. Подумал все просто - сейчас сброшу бит CANEN в прерывании, выйду из него и буду ставить его по таймеру, ожидая подключения еще одного устройства к шине. Но не так все просто, проц далее начинает входить в Undefined_Addr, при этом адрес возврата 0x4. Адрес возврата для swi - 0x00108A7C. Использую библиотеки IARа. Там команды SWI 0x123456!!!!!!!!

Доктор я буду жить? crying.gif


__iar_sh_stdout_close:
00108A10 E59F1098 LDR R1, [PC, #+152] ; [.text_6 (0x108AB0)] =__iar_sh_stdout_handle (0x202050)
00108A14 E92D5000 STMDB SP!, {R12,LR}
00108A18 E5910000 LDR R0, [R1, #+0]
00108A1C E3500000 CMP R0, #0x0
00108A20 0A000003 BEQ 0x108A34
00108A24 E3A00002 MOV R0, #0x2
00108A28 EF123456 SWI 0x123456
00108A2C E3A00000 MOV R0, #0x0
00108A30 E5810000 STR R0, [R1, #+0]
00108A34 E8BD4001 LDMIA SP!, {R0,LR}
00108A38 E12FFF1E BX LR
__iar_sh_stdout:
00108A3C E92D4010 STMDB SP!, {R4,LR}
00108A40 E59F4068 LDR R4, [PC, #+104] ; [.text_6 (0x108AB0)] =__iar_sh_stdout_handle (0x202050)
00108A44 E24DD010 SUB SP, SP, #0x10
00108A48 E5940000 LDR R0, [R4, #+0]
00108A4C E1A03001 MOV R3, R1
00108A50 E3500000 CMP R0, #0x0
00108A54 1A000009 BNE 0x108A80
00108A58 E28F104C ADD R1, PC, #0x4C ; 0x108AAC
00108A5C E58D1000 STR R1, [SP, #+0]
00108A60 E3A01004 MOV R1, #0x4
00108A64 E58D1004 STR R1, [SP, #+4]
00108A68 E3A01003 MOV R1, #0x3
00108A6C E58D1008 STR R1, [SP, #+8]
00108A70 E1A0100D MOV R1, SP
00108A74 E3A00001 MOV R0, #0x1
00108A78 EF123456 SWI 0x123456
00108A7C E5840000 STR R0, [R4, #+0]
00108A80 E5941000 LDR R1, [R4, #+0]
00108A84 E58D3004 STR R3, [SP, #+4]
00108A88 E58D1000 STR R1, [SP, #+0]
00108A8C E58D2008 STR R2, [SP, #+8]
00108A90 E1A0100D MOV R1, SP



Посмотрел я на свой предыдущий пост внимательно и закомментировал все отладочные подпрограммы аля TRACE... и все встало на свои места, больше никаких левых прерываний. УРА!!!
Go to the top of the page
 
+Quote Post

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

 


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


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