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

 
 
9 страниц V  < 1 2 3 4 5 > »   
Reply to this topicStart new topic
> Программная реализация интерфейса
zombi
сообщение Apr 12 2011, 18:22
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(stells @ Apr 12 2011, 22:10) *
кстати, этот Ваш кусочек кода в худшем случае на 20 тактов

Пока нет временной диграммы данных и синхро это все вообще очень примерно!!!
Но где Вы 20 тактов насчитали?
А если сихро не меняется то этот кусочег кода будет вечным biggrin.gif
Go to the top of the page
 
+Quote Post
stalknr
сообщение Apr 12 2011, 18:55
Сообщение #32


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

Группа: Участник
Сообщений: 79
Регистрация: 19-01-08
Пользователь №: 34 241



Господин ZOMBIK временная диаграмма выложена мною в сообщении номер 25
Хоть иногда читайте чужие сообщения а не только свои

А за идею ловить синхро и данные спасибо. Очень даже может помочь в работе

Сегодня уже начал писать программу на асме имитирующую передачу кода МАСТЕРОМ вроде хорошо получается и даже такты свободные остались.
Go to the top of the page
 
+Quote Post
zombi
сообщение Apr 12 2011, 18:59
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(stalknr @ Apr 12 2011, 22:50) *
Господин ZOMBIK временная диаграмма выложена мною в сообщении номер 25
Хоть иногда читайте чужие сообщения а не только свои

Мда...
Господин STALKNR, я читал Ваше сообщение номер 25.
И никакой информации о форме синхро сигнала там не нашел!
Go to the top of the page
 
+Quote Post
stells
сообщение Apr 12 2011, 19:17
Сообщение #34


внештатный сотрудник
******

Группа: Участник
Сообщений: 2 458
Регистрация: 10-05-08
Из: МО, Медвежьи озера
Пользователь №: 37 401



Цитата(zombi @ Apr 12 2011, 22:22) *
Пока нет временной диграммы данных и синхро это все вообще очень примерно!!!
Но где Вы 20 тактов насчитали?

насчитал тупо, не особо вдаваясь в подробности

Цитата(stalknr @ Apr 12 2011, 22:55) *
Сегодня уже начал писать программу на асме имитирующую передачу кода МАСТЕРОМ вроде хорошо получается и даже такты свободные остались.

с мастером всегда проще
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Apr 12 2011, 23:29
Сообщение #35


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата
16 тактов на прием одного бита - сомнительно, на грани фола


Цитата(zombi @ Apr 12 2011, 21:54) *
Код
    ldi  count,8
cc0:sbic port,synch
    rjmp cc0
    lsl  acc1
cc1:sbis port,synch
    rjmp cc1
    sbic port,bit_IN
    ori  acc1,$01
    dec     count
    brne cc0


Нет это очень много. 8 команд вместе с записью в Sram. Частота кварца 18.432 , что бы с погрешностями не заморачиваться в дальнейшем Вот такая идейка. Завтра вечером дам этот вариант. biggrin.gif На работе не дадут.....поработать

Вот их очередность
sbic
inc
сдвиг
dec count
brne main
st z
dec
brne main
Просто оформить надо, а сейчас лень.
Но похоже при таком ТЗ -APMом попахивает


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Apr 13 2011, 06:17
Сообщение #36


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Вот код , по идее сможем поймать биты. Но посчитать не успеваю

CODE

***********************
;/ * *
;/ * ATMega 164P *
;/ * *
;/ ***********************

; Ну def и equ не пишу

;*************************************************
;* ;;/ТАБЛИЦА прерываний;;* *
;*************************************************
jmp RESET ;/Reset

.org INT0addr
sbic PORTX,PXX; Линия данных ARINC-429
inc temp
lsl temp
dec count
brne MAIN
st Z,temp
ldi count,8
dec ZL
brne MAIN

; jmp PCINT0 ; PCINT0
; jmp PCINT1 ; PCINT1
; jmp PCINT2 ; PCINT2
; jmp PCINT3 ; PCINT


;**************************************************
;* ;;/Initialization ExtInterrupr;;* *
;**************************************************

; ЛОВИМ СИНХРОИМПУЛЬСЫ ARINC-429 по INT0
RESET:
ldi temp,1<<INTF0
out EIFR,temp
ldi temp,1<<INT0 ; Разрешаем прерывание INT0
out EIMSK,temp
ldi temp,1<<ISC01|0<<ISC00
sts EICRA,temp ;+ По спадающему фронту
-------------------------------------
ldi count,8

; Не продумывал особо, но на расположение буффера возможно придётся делать ограничение
; Он должен находится в самом начале памяти, в данном MCU = 100
ldwi Z,BUFF ; макрос LDI
; Ниже команду пишу специально , хотя по сути она не нужна, так чтобы была понятно логика
subi ZL,-33
;**************************************************
sei
MAIN: rjmp MAIN


Сообщение отредактировал IgorKossak - Apr 13 2011, 09:55
Причина редактирования: [codebox] !!!


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
777777
сообщение Apr 13 2011, 09:51
Сообщение #37


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

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(rx3apf @ Apr 12 2011, 19:13) *
Изначально разговор был про программную реализацию. SPI slave тоже можно, благо что приемник имеет двойную буферизацию. Байтовую синхронизацию, правда, придется обеспечивать ручками. И границы слов тоже. Но чтобы быстренько все это дело скушать и куда-то отдать - вполне, и 22 бита вместо 24 тут нисколько не помеха. Накладные расходы на сборку-отправку резко сокращаются. А синхронизацией пускай PC занимается. Я так понимаю, что речь о каком-то сниффере протокола, и задача засосать в PC этот самый входной поток. Вариантов реализации по крайней мере два-три...

Я так понял, что программная реализация - это чисто спортивный интерес. Практически же этим заниматься глупо, на SPI это можно сделать проще на порядок, а может и на два. Потому что вынуть байт из SPI - это пара команд, а для программного приема каждого бита требуется не меньше десятка.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 13 2011, 10:21
Сообщение #38


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(ILYAUL @ Apr 13 2011, 05:17) *
Вот код, по идее сможем поймать биты. Но посчитать не успеваю

По идее, в вашем коде надо бы стек корректировать после каждого прерывания.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Apr 13 2011, 10:51
Сообщение #39


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(=GM= @ Apr 13 2011, 14:21) *
По идее, в вашем коде надо бы стек корректировать после каждого прерывания.

Согласен , но это не обязательно делать , пока отлавливаем посылку


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
zombi
сообщение Apr 13 2011, 11:09
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(777777 @ Apr 13 2011, 13:51) *
вынуть байт из SPI - это пара команд, а для программного приема каждого бита требуется не меньше десятка.

А какже быть с 22 битами данных?

Цитата(ILYAUL @ Apr 13 2011, 10:17) *
Вот код , по идее сможем поймать биты. Но посчитать не успеваю

На мой взгляд при програмной реализации приема по SPI необходимо прочитать линию данных как можно ближе к фронту синхро сигнала (D-триггер это делает синхронно).
Если делать по опросу синхро то чтение линии данных произойдёт в лучшем случае через 3 такта, в худшем через 5 тактов процессора.
Если использовать прерывание то линию данных проц прочитает в самом лучшем случае через 7 тактов.
Но чтобы ответить на вопрос возможна ли реализация этого протокола нужна временная диаграмма сигналов SYNC и DATA.
TS никак не хочет ее предоставить или сам не знает, но уже пишет
Цитата
программу на асме имитирующую передачу кода МАСТЕРОМ
biggrin.gif
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Apr 13 2011, 11:26
Сообщение #41


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



А почему не хотим внешний приемник данных организовать например на группе внешних последовательно- параллельных регистров ?


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 13 2011, 11:48
Сообщение #42


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Зачем нужен внешний, если есть встроенный сдвиговый регистр spi?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Apr 13 2011, 12:04
Сообщение #43


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Коллеги! Там ТЗ , как то поменялось уже - посмотрите топик #25


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Apr 13 2011, 12:07
Сообщение #44


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(zombi @ Apr 13 2011, 15:09) *
А какже быть с 22 битами данных?

Да так же, как и с началом принимаемого слова. Программно, иначе никак. А какие проблемы ? Набираем 8 битов, сохраняем... А потом программная обработка. Причем лучше уже на хосте (PC), который гораздо быстрее.


Go to the top of the page
 
+Quote Post
Kovrov
сообщение Apr 13 2011, 12:17
Сообщение #45


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Цитата(=GM= @ Apr 13 2011, 15:48) *
Зачем нужен внешний, если есть встроенный сдвиговый регистр spi?


я особо не вчитывался, но показалось что то не устроило автора в SPI.
а так то конечно...

Цитата(rx3apf @ Apr 13 2011, 16:07) *
Да так же, как и с началом принимаемого слова. Программно, иначе никак. А какие проблемы ? Набираем 8 битов, сохраняем... А потом программная обработка. Причем лучше уже на хосте (PC), который гораздо быстрее.


да - я бы также поступил
если не заморачиваться -
через spi берем данные из интерфейса и транслируем их через UART
а уже на другой системе анализируем..

или взять Xmega- spi завести на DMA
и уже можно сделать анализ локально..


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post

9 страниц V  < 1 2 3 4 5 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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