Артём__ 0 22 августа, 2012 Опубликовано 22 августа, 2012 · Жалоба МК MSP430F149, тактирование от внешнего кварца частотой 8 МГц. Спросите в гугле: семейство микроконтроллеров msp430x1xx. руководство пользователя Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasta 0 22 августа, 2012 Опубликовано 22 августа, 2012 · Жалоба ТАм какой-то регистр есть CCR или типа того, ставите в нем сколько надо и разрешаете прерывание - вот вам и 5мс. Правда непонятно, зачем вам внешние 8МГц, там же внутренний кварц такого порядка. Обычно снаружи вешают 32к, как раз чтобы не заморачиваться с милисекундами Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hash20 0 22 августа, 2012 Опубликовано 22 августа, 2012 · Жалоба ТАм какой-то регистр есть CCR или типа того, ставите в нем сколько надо и разрешаете прерывание - вот вам и 5мс. Правда непонятно, зачем вам внешние 8МГц, там же внутренний кварц такого порядка. Обычно снаружи вешают 32к, как раз чтобы не заморачиваться с милисекундами Только вот со стабильностью частоты жопа начинается... Например я обычно ставлю кварц 7.3728 MHz . Удобно задавать скорость UART. А вот зачем ему 5мс загадка.... там всё можно по другому сделать... я ему в личку отписал с примерами, думаю разберется.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasta 0 23 августа, 2012 Опубликовано 23 августа, 2012 · Жалоба Только вот со стабильностью частоты жопа начинается.... Ну, жопа периодически перекалибровывается, так что не проблема) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
d7d1cd 0 23 августа, 2012 Опубликовано 23 августа, 2012 · Жалоба Я тут подумал какие команды мне надо будет отправлять. Получилось, что максимальная длина пакета - 2 байта. Что если отправку организовать так: 1. Отправляем 7 заранее определенных байт (что-то типа пароля); 2. Отправляем 2 нужных байта (собственно, сам пакет); 3. Отправляем еще 7 заранее определенных байт (вторая часть пароля). Программа МК сравнивает приходящие байты (кроме 8 и 9 байта. Их она сохраняет в ОЗУ) с паролем во флеш. Если все байты пароля совпадают, то начинает "разбираться", какая команда пришла (те самые 2 нужных байта). Думаю, что при таком способе, вероятность ошибочной передачи 2-х байт ничтожно мала. Да и "ждать" ничего не надо... Прокомментируйте, пожалуйста. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 4 24 августа, 2012 Опубликовано 24 августа, 2012 · Жалоба Думаю, что при таком способе, вероятность ошибочной передачи 2-х байт ничтожно мала. Да и "ждать" ничего не надо... Если предположить, что вероятность искажения бита постоянна и не зависит от его местоположения в пакете... то получится что будет только хуже, так как ошибка в 2 байтах всё равно не будет обнаружена, а если ошибка в другом месте, то пакет с верными байтами данных будет отброшен. Чем длинне пакет, тем выше вероятность что в нём будет хотя бы одна ошибка. Если лень считать 16-битную CRC для пакета, то подсчитывайте просто сумму всех байт пакета в 16-битной переменной и добавляйте в хвост пакета эти два байта контрольной суммы, или хотя бы один (младший) байт. По крайней мере обнаружите на приёме одиночные и практически все двойные ошибки, а бОльшего и не надо, при нормальном канале. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
hash20 0 24 августа, 2012 Опубликовано 24 августа, 2012 · Жалоба самый оптимальный вариант [2 старт байта] - [пакет] - [сrc] - [2 стоп байта] d7d1cd я же тебе в личку почти готовый проект скинул, зачем велосипед изобретаеш (да ещё и 3ех колесный) нахрена пароль гонять в каждом пакете, если в серъезных проектах - то такой пароль взломается за несколько десятков засниференных пакетов... если интересует восстановление ошибок в принятом пакете, почитай про код хемминга (вроде как не сложно реализовывается) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 24 августа, 2012 Опубликовано 24 августа, 2012 · Жалоба самый оптимальный вариант [2 старт байта] - [пакет] - [сrc] - [2 стоп байта] Самый-не самый оптимальный, на всяко гораздо лучше чем, то что d7d1cd описал. нахрена пароль гонять в каждом пакете, если в серъезных проектах - то такой пароль взломается за несколько десятков засниференных пакетов... Так его зашифровать можно. зачем велосипед изобретаеш (да ещё и 3ех колесный) Где-то так конечно, но трёхколёсный велосипед устойчивей гораздо, чем наши несамоизобретённые двухколёсные (для d7d1cd конечно). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
d7d1cd 0 24 августа, 2012 Опубликовано 24 августа, 2012 · Жалоба Спасибо, господа, за комментарии. Просто у меня есть несколько непреодолимых сил, которые мне диктуют условия. Некоторые из них: 1. Программирование на ассемблере; 2. Катастрофический недостаток свободной памяти для программы (ведь кроме приема пакета необходимо делать много других действий); На счет контрольной суммы: скорее всего реализую ее проверку. Пароль никто узнать не сможет, так как с помощью него "общаться" буду только я. Да и для каждого прибора пароль будет разный. Спасибо всем за помощь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
d7d1cd 0 27 сентября, 2012 Опубликовано 27 сентября, 2012 · Жалоба Реализовал так: отправляю 8 байт пароля, потом 2 байта информации, потом 2 байта контрольной суммы. Команды всегда одной длины (12 байт). При каждом прерывании происходит поэтапная проверка пришедшей команды в буфере. В общем, все работает как надо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться