|
Программная реализация интерфейса |
|
|
|
 |
Ответов
|
Apr 13 2011, 16:36
|
Частый гость
 
Группа: Участник
Сообщений: 79
Регистрация: 19-01-08
Пользователь №: 34 241

|
так ведет себя МАСТЕР. СЛАЙВ в этот момент принимает ПОСТОЕ СЛОВО и на его основе формирует ответ. Код //---------------------------------------------------------------------------- // Процедура _peredacha_slova_PRD //---------------------------------------------------------------------------- // передаем слово данных ведомому _peredacha_slova_PRD: //------------------------------------------------- // выдаем на PORTB.0 6 младших разрядов байта ADRES_OUT //------------------------------------------------- _out_ADRES_OUT: OUT PORTB, temp //50ns в регистр ввода-вывада (РВВ) передаем R16 PORTB ROR ADRES_OUT //100ns сдвигаем ADRES_OUT вправо причем SREG.C=ADRES_OUT.0 BRCS C_1 //150ns Выдаем SBR temp, (1<<PB1) // если бит SREG.С=0 то выдаем в выдаем в порт только синхросигнал RJMP C_0 C_1:SBR temp, (1<<PB1)+(1<<PB0)// если бит SREG.С=1 то выдаем в выдаем в порт синхросигнал и сам бит NOP C_0:NOP INC Nraz //400нс увеличиваем счетчик разрядов на +1 //_________________________________________ OUT PORTB, temp //450нс в регистр ввода-вывада (РВВ) передаем R16 PORTB CLR temp //500ns чистим темп NOP //550ns NOP //600ns NOP //650ns CPI Nraz, 0x06 //700ns и 750ns считаем 6 умпульсов BRLO _out_ADRES_OUT //800ns Nrz < 6 переход по "меньше" //------------------------------------------------- NOP
//------------------------------------------------- // выдаем на PORTB.0 8 разрядов байта DATA_L //------------------------------------------------- _out_DATA_L: OUT PORTB, temp //50ns в регистр ввода-вывада (РВВ) передаем R16 PORTB ROR DATA_L //100ns BRCS C_3 //150ns Выдаем SBR temp, (1<<PB1) // если бит SREG.С=0 то выдаем в выдаем в порт только синхросигнал RJMP C_2 C_3:SBR temp, (1<<PB1)+(1<<PB0)// если бит SREG.С=1 то выдаем в выдаем в порт синхросигнал и сам бит NOP C_2:NOP INC Nraz //400нс увеличиваем счетчик разрядов на +1 //_________________________________________ OUT PORTB, temp //450нс в регистр ввода-вывада (РВВ) передаем R16 PORTB CLR temp //500ns чистим темп NOP //550ns NOP //600ns NOP //650ns CPI Nraz, 0x0E //700ns и 750ns считаем 6+8 умпульсов BRLO _out_DATA_L //800ns Nrz < 6+8 переход по "меньше" //------------------------------------------------- NOP
//------------------------------------------------- // выдаем на PORTB.0 8 разрядов байта DATA_H //------------------------------------------------- _out_DATA_H: OUT PORTB, temp //50ns в регистр ввода-вывада (РВВ) передаем R16 PORTB ROR DATA_H //100ns BRCS C_5 //150ns Выдаем SBR temp, (1<<PB1) // если бит SREG.С=0 то выдаем в выдаем в порт только синхросигнал RJMP C_4 C_5:SBR temp, (1<<PB1)+(1<<PB0)// если бит SREG.С=1 то выдаем в выдаем в порт синхросигнал и сам бит NOP C_4:NOP INC Nraz //400нс увеличиваем счетчик разрядов на +1 //_________________________________________ OUT PORTB, temp //450нс в регистр ввода-вывада (РВВ) передаем R16 PORTB CLR temp //500ns чистим темп NOP //550ns NOP //600ns NOP //650ns CPI Nraz, 0x16 //700ns и 750ns считаем 6+8+8 умпульсов BRLO _out_DATA_H //800ns Nrz < 6+8+8 переход по "меньше" //-------------------------------------------------
// КОНЕЦ ВЫДАЧИ СЛОВА NOP OUT PORTB, temp // ставим на линию данных 0 и на линию синхро тоже 0 CLR Nraz // обнуляем счетчик разрядов INC Nsl // увеличиваем счетчик слов на +1 CLR temp RET // Выход из процедуры _peredacha_slova_PRD RET=4 маш. циклов //----------------------------------------------------------------------------
//---------------------------------------------------------------------------- // Процедура _peredacha_slova_PRM //---------------------------------------------------------------------------- // передаем слово ведомому и принимаем от него информацию _peredacha_slova_PRM: CLR ADRES_IN CLR DATA_L CLR DATA_H //------------------------------------------------- // выдаем на PORTB.0 6 младших разрядов байта ADRES_OUT // принимаем на PORTB.2 6 младших разрядов байта ADRES_IN //------------------------------------------------- _out_ADRES_OUT_and_in_ADRES_IN: OUT PORTB, temp //50ns в регистр ввода-вывада (РВВ) передаем R16 PORTB ROR ADRES_OUT //100ns сдвигаем ADRES_OUT вправо причем SREG.C=ADRES_OUT.0 BRCS C_7 //150ns Выдаем SBR temp, (1<<PB1) // если бит SREG.С=0 то выдаем в выдаем в порт только синхросигнал RJMP C_6 C_7:SBR temp, (1<<PB1)+(1<<PB0)// если бит SREG.С=1 то выдаем в выдаем в порт синхросигнал и сам бит NOP C_6:LSR ADRES_IN INC Nraz //400нс увеличиваем счетчик разрядов на +1 //_________________________________________ OUT PORTB, temp //450нс в регистр ввода-вывада (РВВ) передаем R16 PORTB CLR temp //500ns чистим темп NOP //550ns SBIC PINB, PB2 //600ns если PINB.2=0 то пропускаем следующую команду SBR ADRES_IN, (1<<7) //650ns ставим 1 в 7 разряде ADRES_IN CPI Nraz, 0x06 //700ns и 750ns считаем 6 умпульсов BRLO _out_ADRES_OUT_and_in_ADRES_IN //800ns Nrz < 6 переход по "меньше" //------------------------------------------------- NOP
//------------------------------------------------- // принимаем на PORTB.2 8 разрядов байта DATA_L //------------------------------------------------- _in_DATA_L: OUT PORTB, temp //50ns в регистр ввода-вывада (РВВ) передаем R16 PORTB LSR DATA_L //100ns NOP //150ns NOP //200ns выдаем в выдаем в порт только синхросигнал NOP //250ns NOP //300ns SBR temp, (1<<PB1) //300ns INC Nraz //400нс увеличиваем счетчик разрядов на +1 //_________________________________________ OUT PORTB, temp //450нс в регистр ввода-вывада (РВВ) передаем R16 PORTB CLR temp //500ns чистим темп NOP //550ns SBIC PINB, PB2 //600ns если PINB.2=0 то пропускаем следующую команду SBR DATA_L, (1<<7) //650ns ставим 1 в 7 разряде DATA_L CPI Nraz, 0x0E //700ns и 750ns считаем 6+8 умпульсов BRLO _in_DATA_L //800ns Nrz < 6+8 переход по "меньше" //------------------------------------------------- NOP
//------------------------------------------------- // выдаем на PORTB.0 8 разрядов байта DATA_H //------------------------------------------------- _in_DATA_H: OUT PORTB, temp //50ns в регистр ввода-вывада (РВВ) передаем R16 PORTB LSR DATA_H //100ns NOP //150ns NOP //200ns выдаем в выдаем в порт только синхросигнал NOP //250ns NOP //300ns SBR temp, (1<<PB1) //300ns INC Nraz //400нс увеличиваем счетчик разрядов на +1 //_________________________________________ OUT PORTB, temp //450нс в регистр ввода-вывада (РВВ) передаем R16 PORTB CLR temp //500ns чистим темп NOP //550ns SBIC PINB, PB2 //600ns если PINB.2=0 то пропускаем следующую команду SBR DATA_H, (1<<7) //650ns ставим 1 в 7 разряде DATA_H CPI Nraz, 0x16 //700ns и 750ns считаем 6+8+8 умпульсов BRLO _in_DATA_H //800ns Nrz < 6+8+8 переход по "меньше" //------------------------------------------------- NOP // КОНЕЦ ПРИЕМА СЛОВА OUT PORTB, temp // ставим на линию данных 0 и на линию синхро тоже 0 CLR Nraz // обнуляем счетчик разрядов INC Nsl // увеличиваем счетчик слов на +1 LSR ADRES_IN LSR ADRES_IN // сдивагаем 2 раза чтобы получить 1р адреса в 0р байта (ПОДГОНЯЕМ ПОД ФОРМАТ) LDI DATA_L, 0xAA
LDI YH, 0x01 LDI temp, 0x03 MUL temp, ADRES_IN MOV YL, R0
ST Y+, ADRES_IN ST Y+, DATA_L ST Y+, DATA_H CLR YL
; CLR ADRES_IN ; CLR DATA_L ; CLR DATA_H CLR temp RET // Выход из процедуры _peredacha_slova_PRD RET=4 маш. циклов //---------------------------------------------------------------------------- ЭТО ЧУДО у меня в протеусе сегодня заработало КОРОЧЕ в посылке у МАСТЕРА сначало 33 слово только на передачу (СЛАЙВ в это время принимает, складывает это все в ОЗУ и формирует ответ ввиде АДРЕС+2 ПУСТЫХ БАЙТА (НАХРЕНА НЕЗНАЮ)) далее перерыв в 300 мкс и МАСТЕР выдает еще 33 слова на передачу и прием (тоесть формирует для СЛАЙВА синхро сигнал и принимает от него данные) затем идет 6*1,28 мс пауза и все заново начинаеться
|
|
|
|
Сообщений в этой теме
stalknr Программная реализация интерфейса Apr 11 2011, 18:04 kovigor Цитата(stalknr @ Apr 11 2011, 21:04) Необ... Apr 11 2011, 18:18 stalknr А больше не чего реализовывать и не надо. Тупо про... Apr 11 2011, 18:25 kovigor Цитата(stalknr @ Apr 11 2011, 21:25) И со... Apr 11 2011, 18:36 stalknr Шустрый AVR уже выбрал - ATmega88. Предельная част... Apr 11 2011, 18:47 kovigor Цитата(stalknr @ Apr 11 2011, 21:47) Шуст... Apr 11 2011, 18:57 rx3apf Цитата(stalknr @ Apr 11 2011, 22:04) Необ... Apr 11 2011, 18:51 stalknr Это сильно урезанный и переделанный ARINC 429
разр... Apr 11 2011, 18:55 rx3apf Цитата(stalknr @ Apr 11 2011, 22:55) а ес... Apr 11 2011, 19:02  zombi Цитата(rx3apf @ Apr 11 2011, 23:02) Ну чт... Apr 12 2011, 17:32   rx3apf Цитата(zombi @ Apr 12 2011, 21:32) Или я ... Apr 12 2011, 17:45    zombi Цитата(rx3apf @ Apr 12 2011, 21:45) Начал... Apr 12 2011, 17:54     rx3apf Цитата(zombi @ Apr 12 2011, 21:54) А что,... Apr 12 2011, 17:57     stells Цитата(zombi @ Apr 12 2011, 21:54) Кстати... Apr 12 2011, 18:10      zombi Цитата(stells @ Apr 12 2011, 22:10) кстат... Apr 12 2011, 18:22       stells Цитата(zombi @ Apr 12 2011, 22:22) Пока н... Apr 12 2011, 19:17     ILYAUL Цитата16 тактов на прием одного бита - сомнительно... Apr 12 2011, 23:29 stalknr есть согласующая схема на ее выходе ТТЛ сигнал Дан... Apr 11 2011, 18:59 stells 16 тактов на прием одного бита - сомнительно, на г... Apr 11 2011, 19:07 nk@ Цитата(stells @ Apr 11 2011, 22:07) 16 та... Apr 11 2011, 20:37  rx3apf Цитата(nk@ @ Apr 12 2011, 00:37) +1 вот-в... Apr 11 2011, 21:38   nk@ Цитата(rx3apf @ Apr 12 2011, 00:38) Как р... Apr 12 2011, 04:20    rx3apf Цитата(nk@ @ Apr 12 2011, 08:20) Это если... Apr 12 2011, 08:46     nk@ Цитата(rx3apf @ Apr 12 2011, 11:46) На 11... Apr 12 2011, 09:51      rx3apf Цитата(nk@ @ Apr 12 2011, 13:51) Вы возьм... Apr 12 2011, 09:59       nk@ Цитата(rx3apf @ Apr 12 2011, 12:59) Я не ... Apr 12 2011, 11:16        kovigor Цитата(nk@ @ Apr 12 2011, 14:16) Когда ид... Apr 12 2011, 11:34        ILYAUL Цитата(nk@ @ Apr 12 2011, 15:16) С SPI не... Apr 12 2011, 11:56        rx3apf Цитата(nk@ @ Apr 12 2011, 15:16) Так вот ... Apr 12 2011, 15:13         777777 Цитата(rx3apf @ Apr 12 2011, 19:13) Изнач... Apr 13 2011, 09:51          zombi Цитата(777777 @ Apr 13 2011, 13:51) вынут... Apr 13 2011, 11:09           rx3apf Цитата(zombi @ Apr 13 2011, 15:09) А какж... Apr 13 2011, 12:07            ILYAUL Цитата(rx3apf @ Apr 13 2011, 16:07) Да та... Apr 13 2011, 12:20            stells Цитата(rx3apf @ Apr 13 2011, 16:07) Набир... Apr 13 2011, 12:38             ILYAUL Цитата(stells @ Apr 13 2011, 16:38) с тре... Apr 13 2011, 12:45              stells Цитата(ILYAUL @ Apr 13 2011, 16:45) Там и... Apr 13 2011, 12:49             rx3apf Цитата(stells @ Apr 13 2011, 16:38) с тре... Apr 13 2011, 12:52              stells Цитата(rx3apf @ Apr 13 2011, 16:52) Откуд... Apr 13 2011, 12:55               rx3apf Цитата(stells @ Apr 13 2011, 16:55) а рег... Apr 13 2011, 12:58                stells Цитата(rx3apf @ Apr 13 2011, 16:58) Я пон... Apr 13 2011, 13:05                 zombi Цитата(stells @ Apr 13 2011, 17:05) насче... Apr 13 2011, 13:14                zombi Цитата(rx3apf @ Apr 13 2011, 16:58) Я пон... Apr 13 2011, 13:06                 stells Цитата(zombi @ Apr 13 2011, 17:06) О како... Apr 13 2011, 13:09                 rx3apf Цитата(zombi @ Apr 13 2011, 17:06) О како... Apr 13 2011, 13:18             zombi Цитата(stells @ Apr 13 2011, 16:38) по 22... Apr 13 2011, 12:54      =GM= Цитата(nk@ @ Apr 12 2011, 08:51) 115200 в... Apr 12 2011, 12:05 =GM= Цитата(stalknr @ Apr 11 2011, 17:04) По 1... Apr 11 2011, 22:24 777777 Цитата(stalknr @ Apr 11 2011, 22:04) Посл... Apr 12 2011, 07:24 stalknr Здравствуйте товарищи!!!!
Докладыв... Apr 12 2011, 15:27 zombi Цитата(stalknr @ Apr 12 2011, 19:27) ЦЕЛЬ... Apr 13 2011, 12:44 stalknr Господин ZOMBIK временная диаграмма выложена мною ... Apr 12 2011, 18:55 zombi Цитата(stalknr @ Apr 12 2011, 22:50) Госп... Apr 12 2011, 18:59 ILYAUL Вот код , по идее сможем поймать биты. Но посчитат... Apr 13 2011, 06:17 =GM= Цитата(ILYAUL @ Apr 13 2011, 05:17) Вот к... Apr 13 2011, 10:21  ILYAUL Цитата(=GM= @ Apr 13 2011, 14:21) По идее... Apr 13 2011, 10:51 Kovrov А почему не хотим внешний приемник данных организо... Apr 13 2011, 11:26 =GM= Зачем нужен внешний, если есть встроенный сдвиговы... Apr 13 2011, 11:48  Kovrov Цитата(=GM= @ Apr 13 2011, 15:48) Зачем н... Apr 13 2011, 12:17 ILYAUL Коллеги! Там ТЗ , как то поменялось уже - посм... Apr 13 2011, 12:04 stells в общем от контроллера нужно 3 ноги: MOSI, SCK, T0... Apr 13 2011, 13:18 777777 Цитата(stells @ Apr 13 2011, 17:18) в общ... Apr 13 2011, 15:52  zombi Цитата(777777 @ Apr 13 2011, 19:52) Счетч... Apr 13 2011, 16:02   stells Цитата(zombi @ Apr 13 2011, 20:02) Действ... Apr 13 2011, 16:15 zombi Цитата(rx3apf @ Apr 13 2011, 17:18) А вни... Apr 13 2011, 13:40 kovigor Цитата(zombi @ Apr 13 2011, 16:40) Может ... Apr 13 2011, 13:49  stells Цитата(kovigor @ Apr 13 2011, 17:49) Или ... Apr 13 2011, 14:05   =GM= Кто-то здесь подсчитал, что при использовании прер... Apr 13 2011, 15:18    zombi Цитата(=GM= @ Apr 13 2011, 19:18) а при п... Apr 13 2011, 15:29     =GM= Цитата(zombi @ Apr 13 2011, 14:29) Не был... Apr 13 2011, 15:59      zombi Цитата(=GM= @ Apr 13 2011, 19:59) Ну отку... Apr 13 2011, 17:39       =GM= Обсуждения не получилось, ну да ладно. Давайте пог... Apr 14 2011, 13:05        zombi Цитата(=GM= @ Apr 14 2011, 17:05) Обсужде... Apr 14 2011, 14:21         =GM= Цитата(zombi @ Apr 14 2011, 13:21) А как ... Apr 14 2011, 16:25 stalknr Привет Господа!!!!
Смотрю пока я н... Apr 13 2011, 16:18 stells Цитата(stalknr @ Apr 13 2011, 20:18) Вооб... Apr 13 2011, 16:21 _pv Цитата(stalknr @ Apr 13 2011, 22:18) Вооб... Apr 14 2011, 15:18 stalknr Мне надо на один пин выдавать ДАННЫЕ (АДРЕС+ПУСТОЙ... Apr 13 2011, 16:25 stells Цитата(stalknr @ Apr 13 2011, 20:25) Мне ... Apr 13 2011, 16:27 zombi Цитата(stalknr @ Apr 13 2011, 20:36) ЭТО ... Apr 13 2011, 17:14 stalknr в начале пачки идет пустое слово (для синхроназаци... Apr 13 2011, 17:29 stalknr Интересно а как он узнает когда ему данные надо пр... Apr 13 2011, 17:44 zombi Т.е. слейв тоже может формировать синхро?
Нее шото... Apr 13 2011, 17:46 stalknr Может. МАСТЕР и СЛЕЙВ связаны линиями ПК1 и ПК2
ПК... Apr 13 2011, 17:51 zombi Цитата(stalknr @ Apr 13 2011, 21:51) Може... Apr 13 2011, 18:07 stalknr Нет линии не двунаправленные
ПК1 - 2 провода (синх... Apr 13 2011, 18:10 zombi Цитата(stalknr @ Apr 13 2011, 22:10) Нет ... Apr 13 2011, 18:17 stells да уж, тем более, что от arinc 429 остался только ... Apr 13 2011, 18:11 stalknr По ПК1 МАСТЕР кидает данные и синхро СЛЕЙВУ а по П... Apr 13 2011, 18:11 stalknr ЦЕНТЕР-ГЕРЕНГУ
Нас спалили переходим на нелегально... Apr 13 2011, 18:29 zombi Цитата(stalknr @ Apr 13 2011, 22:29) Что ... Apr 13 2011, 18:39 stalknr да кстате Господа как сформировать сигнал длительн... Apr 13 2011, 18:41 zombi Цитата(stalknr @ Apr 13 2011, 22:41) да к... Apr 13 2011, 18:47 Hmm О чем это все. Для 'ARINC-429' скорость ма... Apr 14 2011, 14:27 zombi Цитата(Hmm @ Apr 14 2011, 18:27) О чем эт... Apr 14 2011, 15:00 Hmm Цитата(zombi @ Apr 14 2011, 18:00) Может ... Apr 14 2011, 15:27 stalknr Привет всем!!!
Есть идея для слайва. П... Apr 14 2011, 15:10 zombi Цитата(stalknr @ Apr 14 2011, 19:10) Прив... Apr 14 2011, 15:42 stalknr Только вот не очень хочется ставить 6шт кр555ИР16 ... Apr 14 2011, 15:55 kovigor Цитата(stalknr @ Apr 14 2011, 18:55) Толь... Apr 14 2011, 16:01
2 страниц
1 2 >
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|