Микроконтроллеры | Поясните по Си |
|
---|---|---|
Wladimir_TS: Как сдвинуть на 1 бит вправо или влево таковой массив ? (максимально быстро само собой) Отказаться от такой постановки задачи и использовать более эффективный алгоритм. |
|
|
Tadas: Tadas ◊ AVR Studio 4.13 штатный.
А значение ячейки как тогда ? p=my_array[13] - это значение ячейки, а p&=my_array[13] - адрес ячейки ?
А перенос бита как организовать ? |
|
|
boo2: boo2 Таков алгоритм - надо сдвинуть на 1 бит массив данный в 32768 бит в виде 4096 байтов в ОЗУ микроконтроллера. Вправо или влево. Потом произвести некие матоперации над некими его частями, потом снова сдвинуть и так N раз за минимальное время. И на СИ (на ассемблере все работает - но ТЗ стоит - сделать на СИ). Бит выдвигаемый из очередного байта должен вдвигаться в следующий, выдвигаемый из последнего помещаться на место первого бита первого байта. Аналог команд ассемблера ROL, ROR только не для 8 бит в 1 регистре а для 32768 бит |
|
|
Wladimir_TS: А значение ячейки как тогда ? p=my_array[13] - это значение ячейки, а p&=my_array[13] - адрес ячейки ? p=&my_array[13]; // р присваиваем значение адреса ячейки 13 Wladimir_TS: А перенос бита как организовать ? Хе, так и надо было говорить о массиве битов, а не переменных. |
|
|
Wladimir_TS: Таков алгоритм Есть подозрение, что очень хреновый это алгоритм, наверняка нужно было делать что-то типа кольцевого битового буфера (на базе указателей голова-хвост) -- работало бы в тысячу раз быстрей. Ну а если по тупому - для начала в гугль, как уже посоветовал Tadas. |
|
|
|
||
Спасибо ! Еще вопрос - просто по книгам пока не очень удается разобраться, а надо как-то смотреть переменные. Через JTAG оказывается сие малореально - походу программа под JTAG не работоспособна, только автономно, а данные выводить надо и много. Остается UART и программа терминал в компьютере. Задача следующая (на СИ надо) преобразовать 16 разрядное число в десятичный формат, передать его через UART. Без использования прерывания по окончанию передачи - только с анализом бита TXC в UCSRA С передачей я разберусь - а вот с преобразованием как-то сложнее. Хотя-б как разделить 1 16 битовое число (переменную, объявленную, как unsigned int) на 2 - 8 разрядные. Что значит "warning: suggest parentheses around assignment used as truth value" на строку "if (icr_position=7) {;" ? |
|
|
Если ничего не делать, то sprintf Вам поможет. |
|
|
Спасибо - но применение этой функции жрет почти 1 кБ памяти, и её перестаёт хватать. сейчас занято 99,9% памяти программ... Вчера вечером переписал (без UART пока) на ассемблере - занимает 308 слов... |
|
|
Так я бы и писал на асме, а в отчёте... "Для подложек для тонкоплёночных гибридных интегральных микросхем используют ситалл, брокерит, поликор и карельскую берёзу, потому что этот курсач читать никто не будет" (С) |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |