мк AT90CAN32, как запустить CAN на приём данных?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Родился
Сообщения: 6
Зарегистрирован: Пн май 14, 2012 18:19:54

Сообщение ABS_NUL »

Код: Выделить всё

;** Любые другие Для CAN
Vite:
	ldi Bufer,0x00		; 4-7    :  Выбраны 0 MOb, индекс 0
	sts CANPAGE,Bufer		; 3       :  Автоинкркмент индекса
	ldi Bufer,0x00		; 24-31 :  Тег идентификатора =00
	sts CANIDT4,Bufer		;
	ldi Bufer,0x00		; 16-23 :  Тег идентификатора =00
	sts CANIDT3,Bufer		;
	ldi Bufer,0x01		; 8-15   :  Тег идентификатора =01
	sts CANIDT2,Bufer		;
	ldi Bufer,0x00		; 3-7     :  Тег идентификатора =00
	sts CANIDT1,Bufer		; 2        :  Тег запроса удалённой передачи
	clr Bufer			; 1        :  Бит1 удалённого кадра или кадра данных для передачи
				; 0        :  Бит0 удалённого кадра или кадра данных для передачи
	sts CANMSG,Slovo1		; Передача по CAN
Vite1:
	lds Bufer,CANGSTA		; Ожидание передачи
	sbrc Bufer,4		;
	rjmp Vite1			;
	sts CANMSG,Slovo2		; Передача по CAN (Запись в MOb0)
Vite2:
	lds Bufer,CANGSTA		; Ожидание передачи
	sbrc Bufer,4		;
	rjmp Vite2			;
	sts CANMSG,Slovo3		; Передача по CAN (Запись в MOb1)
Vite3:
	lds Bufer,CANGSTA		; Ожидание передачи
	sbrc Bufer,4		;
	rjmp Vite3			;
	sts CANMSG,Slovo4		; Передача по CAN (Запись в MOb2)
Vite4:
	lds Bufer,CANGSTA		; Ожидание передачи
	sbrc Bufer,4		;
	rjmp Vite4			;
	sts CANMSG,Slovo5		; Передача по CAN (Запись в MOb3)
Vite5:
	lds Bufer,CANGSTA		; Ожидание передачи
	sbrc Bufer,4		;
	rjmp Vite5			;
	sts CANMSG,Slovo6		; Передача по CAN (Запись в MOb4)
Vite6:
	lds Bufer,CANGSTA		; Ожидание передачи
	sbrc Bufer,4		;
	rjmp Vite6			;
	ldi Bufer,0x00
	sts CANMSG,Bufer		; Передача по CAN (Запись в MOb5)
	ldi Bufer,0x00
	sts CANMSG,Bufer		; Передача по CAN (Запись в MOb6)
	ldi Bufer,0x46
	sts CANCDMOB,Bufer		; Начать передачу
 	
	ldi Bufer,0x11		; 4-7:  Выбраны 7 MOb, индекс 1
	sts CANPAGE,Bufer		; 3       :  Автоинкркмент индекса
	ldi Bufer,0x00		; 24-31 :  Тег идентификатора =00
	sts CANIDT4,Bufer		;
	ldi Bufer,0x02		; 16-23 :  Тег идентификатора =02
	sts CANIDT3,Bufer		;
	ldi Bufer,0x00		; 8-15   :  Тег идентификатора =00
	sts CANIDT2,Bufer		;
	ldi Bufer,0x00		; 3-7     :  Тег идентификатора =00
	sts CANIDT1,Bufer		; 2         : Тег запроса удалённой передачи
	clr Bufer			; 1         : Бит1 удалённого кадра или кадра данных для передачи
	ldi Bufer,0x82
	sts CANCDMOB,Bufer		; Начать приём
				; 0        : Бит0 удалённого кадра или кадра данных для передачи
;	call Delay
	lds Bufer,CANMSG		; Приём по CAN (Загрузка из MOb1)
	out PortF,Bufer
	sts $39A,Bufer
:dont_know:
В чём проблема? Передача данных на ура, а принять никак не получается... Если кто сможет дайте работающий код плиз (месяц ковыряюсь).
PS: USART на ней тоже почемуто не работает (ни 1, ни 2)
Последний раз редактировалось ABS_NUL Вт май 15, 2012 18:51:51, всего редактировалось 1 раз.
Реклама
Родился
Сообщения: 6
Зарегистрирован: Пн май 14, 2012 18:19:54

Сообщение ABS_NUL »

:shock: Сегодня набрёл на станность приёма по CAN. Данные он оказывается считывает, но после каждой прошивки они лежат в разных MOb (т. е. прошивая микруху несколько раз, добился результата, но со последующей прошивкой всё сбилось. И так несколько раз). Как зделать чтобы принятые данные сохранялись в определённом MOb? КТО ПОДСКАЖЕТ? ОЧЕНЬ НУНА!!!
Реклама
Родился
Сообщения: 6
Зарегистрирован: Пн май 14, 2012 18:19:54

Сообщение ABS_NUL »

УРА!!! Нашёл причину! Я приём делал на 2.0А, а надобыло на 2.0B! Когда исправил всё заработало!!! Спасибо всем кто хотел мне помочь!
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»