Микроконтроллеры 51 серии

Mar 29, 2013 16:36

Товарищи, разрешите обратиться к вам за помощью. Совсем зеленый и даже не знаю как подойти к заданиям, которые нам выдали на практике и сказали разбираться. Ничего подобного в институте не было. Первые задания были простые - записать 10 чисел в ячейки оперативной памяти; сложить 10 чисел и т.д. Но уже на втором этапе засыпался, получил следующие ( Read more... )

Старое, МК, Прерывания, Обработка данных, Ретро, Программирование

Leave a comment

Comments 23

sinclair_sc March 29 2013, 12:42:51 UTC
CRC16 обычно все цельнотянутый используют)

Reply


kincajou March 29 2013, 12:46:48 UTC
ёспадя, что же БЫЛО в институте?..

Reply

and_po March 29 2013, 13:09:26 UTC
+1

Reply

gessor March 29 2013, 14:10:26 UTC
Дело в том, что на предприятии всех раскидали по разным отделениям. В институте из программирования был только Матлаб, но это математическая среда. Остальное всякие общие знания, таких конкретных вещей никогда не было. Максимум на электронике рассказали про аналоговую/цифровую схемотехнику.

Reply

ignik March 30 2013, 00:58:56 UTC
И чо за институт такой чудной? Экономический или юридический?

Reply


tnt23 March 29 2013, 13:06:06 UTC
По первому пункту:

AVR. Учебный курс. Передача данных через UART

http://easyelectronics.ru/avr-uchebnyj-kurs-peredacha-dannyx-cherez-uart.html

Reply

kincajou March 29 2013, 13:23:37 UTC
это не AVR

Reply

tnt23 March 29 2013, 13:24:16 UTC
Тупнул, думал, человеку общие принципы нужны.

Reply

jek_hor March 29 2013, 13:39:43 UTC
А какая разница? Уарты везде плюс-минус одинаковые.

Reply


tzirechnoy March 29 2013, 14:50:07 UTC
1) Открыть даташыт на конкретный микроконтроллер, который нужно запрограммировать.
2) Открыть раздел USART (или как-то так).
2.5) Понять, что нифига не понимаешь, и начать читать с разделов RESET и CLOCK.
3) Выставить регистры ячейки USART на передачу 9600-8-n-1.
4) Записать последовательно 10 байт в регистр передачи, после каждой записи дожыдаясь в цыкле разрешэния продолжать в статусном регистре. (это через polling).
5) Тожэ, что и в 4), только не дожыдаясь разрешэния продолжать, а разрешыв прерывание по окончании передачи байта и написав обработчик прерывания, который запишэт следующий байт.
6) PROFIT.

Reply

gessor March 29 2013, 21:38:16 UTC
Да, пункт 2.5 как раз про меня:)

Reply


kray_zemli March 29 2013, 16:39:20 UTC
про crc16 можно почитать интернет, но смысл там примерно такой:

1. Загружаем в 16-битный регистр (т.е. в два 8-битных) начальное значение суммы (например, ноль)
2. Восемь раз повторяем следующий цикл:
2а. Очищаем флаг переноса
2б. Сдвигаем младшое слово влево через флаг переноса
2в. Потом сдвигаем так же старшее слово.
2г. Если со старшего слова прилетел перенос, то ксорим оба регистра каждый со своим magic value, которые можно стянуть из интернета
3. Ксорим младшее слово одним байтом данных.
4. Если не все байты данных посчитаны, то идти к 2.
5. Используем полученную сумму crc16 по назначению

Reply

kray_zemli March 29 2013, 16:43:16 UTC
Вот из Вики:

unsigned short Crc16(unsigned char *pcBlock, unsigned short len)
{
unsigned short crc = 0xFFFF;
unsigned char i;

while (len--)
{
crc ^= *pcBlock++ << 8;

for (i = 0; i < 8; i++)
crc = crc & 0x8000 ? (crc << 1) ^ 0x1021 : crc << 1;
}

return crc;
}

Reply

gessor March 29 2013, 21:40:34 UTC
Спасибо, буду пробовать, но язык тут явно не ассемблер, хотя... на Вики нашел нечто похожее на асме.

Reply


Leave a comment

Up