Два ПИКа в связке
|
|
mikhail09p |
Дата: Чт, 16.12.2010, 14:36 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Подскажите. Как принять переданное значение в одну переменную? Тоесть сейчас принимаентся число в переменные Number[I] (массив). Мне нужно иметь не 2,3,4 числа, а столько, сколько передаю ( в данном случае одно). Если кто знает - почему пик передаёт полностью число, а принимает побайтно ?
Сообщение отредактировал
mikhail09p - Чт, 16.12.2010, 15:28
|
|
|
|
DAlexV |
Дата: Чт, 16.12.2010, 23:01 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Quote (mikhail09p) Если кто знает - почему пик передаёт полностью число, а принимает побайтно ? Признаюсь по секрету, он и передает так . Когда закидываешь в него строку, он дробит ее на байты и начинает отправлять по одному в передающий буфер USART(там 2 байта влезают). Там есть такой бит, высвобождения буфера передачи называется(могу путать название). После того как буфер свободен в USART закидывается следующий бит, и т. д. Поэтому и получается слитная передача данных. У буфера приемника то же есть такой бит(наличие данных вроде) по нему и нужно ориентироваться. Проверяем состояние бита в цикле. Если данные есть, то считываем, если нет считаем время сколько их не было. Насчитали больше чем длинна посылки 2 байт, передача закончилась, можно обрабатывать принятое.
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Сообщение отредактировал
DAlexV - Чт, 16.12.2010, 23:02
|
|
|
|
mikhail09p |
Дата: Вс, 09.01.2011, 17:00 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Хорошо, когда просто передаю и принимаю, то всё ок! А вот когда принимающий контроллер ещё и занимается прерываниями, то ничего не получается... Что не так делаю? Может, надо чего добавить типа Include "modedefs.bas"
Сообщение отредактировал
mikhail09p - Вс, 09.01.2011, 17:53
|
|
|
|
DAlexV |
Дата: Вс, 09.01.2011, 18:17 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Quote (mikhail09p) то ничего не получается... Что не так делаю? Ну вот только год начался, а уже слезы. Не раскисать !!!!! Коль мы разобрались с прерываниями и флагами то будем продолжать дальше их использовать.(http://picbasic.ru/forum/5-597-1) Существует прерывание и флаг приема(передчи) даннных по UART. Hserin здесь не знаю поможет(скорее всего навряд ли удастся совместное использование с прерыванимя). 1. Разрешаем прерывание по приему из UART(выставили флаг) 2. В прерывании добавляем проверку флага приема UART Если приняли, то считываем из регистра приема UART в какую-нибудь переменную Если нет, то проверяем следующий возможный источник прерывания 3. В основной программе проверяем "какую-нибудь переменную" на предмет изменений(в идеале можно добавиеть еще переменную типа BIT которая будет индицировать наличие новых данных) вот собственно и все.
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
mikhail09p |
Дата: Вс, 09.01.2011, 18:33 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Но Hserin ведь хардовый оператор ??? Пошёл в какой раз читать даташит. Я его, гада щас распечатаю! Может, Анатолий немного объяснит... Попробую в прерываниях.
Сообщение отредактировал
mikhail09p - Вс, 09.01.2011, 18:34
|
|
|
|
DAlexV |
Дата: Вс, 09.01.2011, 18:57 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Quote (mikhail09p) Может, Анатолий немного объяснит... Забавно. А русский печатать (извини) не пробовал ????? http://picbasic.ru/load/russkij_datasheet_pic16f87x/9-1-0-175
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
|
|
|
|
mikhail09p |
Дата: Вс, 09.01.2011, 19:20 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Да у меня русский, просто печатать 184 страницы... Распечатаю пока регистры и USART. А на Анатолия я надеюсь в смысле объяснения этого интересного оператора. Hserin же нет пока в книге Анатолия. В общем так: в результате моих трудов добился следующего. Когда отключаю синхросигнал 100 Гц на входе ИНТ, корректно работает Hserin. Когда подеётся синхро на вход ИНТ, работает остальная часть проги, но не корректно работает оператор Hserin - во все переменные считывает 256. Жду помощи. Вот исправленные файлы.
Сообщение отредактировал
mikhail09p - Вс, 09.01.2011, 22:48
|
|
|
|