2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
|
|
1 | |
FRAM камешки от TI: MSP430FR57xx12.08.2013, 15:26. Показов 89234. Ответов 135
Метки нет (Все метки)
Или я плохо искал, но ни в одной теме не нашел, чтобы кто-то рассказывал об опыте применения семейств MSP430FR57xх, например, MSP430FR5739. Странно как-то.
Я посмотрел, ничьо так контроллеры. Если в системе должна быть ФРАМ-память, то ее же надо дополнительно купить, если использовать обычный МК. Но тогда и по цене контроллер MSP430FR5739 не кажется таким уж страшным. И вижу его у поставщиков. Так в чем же причина, что его не юзают коллеги? Где прикол?
0
|
12.08.2013, 15:26 | |
Ответы с готовыми решениями:
135
Курсовая. Камешки располагаются в столбик. Упорядочить камешки определенным образом Камешки II Игра в камешки Игра Камешки Игра в Камешки |
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
|
|
08.09.2013, 18:49 | 121 |
Насколько я понимаю, надо просто подключить исходники dryverlib в проект.
Хедеры там все уже есть и правильные. С прерываниями косяки вручную придется выгребать, но их не так много, пара таймеров, пара уартов, АЦП, ну может ещё парочка по мелочи. Кайф, однако, ломает.. :(
0
|
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
|
|
30.10.2013, 18:10 | 122 |
Вопрос общего плана по МПС430.
Это 16-разрядные МК. То есть, привычные (по АВР и прочим 8-разрядным) однобайтные переменные обрабатываются теми же командами, что и 2-байтные? Если да, то следует ли из этого, что про uint8_t можно практически забыть? Объявлять все, не требующее более 16 бит, как uint16_t - и все. Например, какой-нить счетчик цикла, который заведомо принимает значения от 0 до нескольких десятков - лупить и его uint16_t и не парить моск... Или какие-то соображения могут быть? Конечно, я понимаю, что при обработке символьных массивов, которые приходят откуда-то, скажем, из УАРТа, есть место и для uint8_t. Здесь речь о целочисленных данных произвольной природы.
0
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
30.10.2013, 18:22 | 123 |
Переменные размера (типа) uint8_t ещё в памяти меньше места занимают. Если переменных много, то может получиться экономия на этом.
0
|
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
|
|
30.10.2013, 18:25 | 124 |
Неужто там память организована побайтно?
Или как-то выдергиваются младшие-старшие байты? Вообще, в АСМе есть там байтные команды?
0
|
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
|
|
30.10.2013, 19:05 | 125 |
Этого я не знаю (про MSP430), а даташит лень искать :-)
Но про другие МК могу сказать, что такое бывает: и хранение в памяти байтовое, и операции с байтами. В несложных проектах, наверно, можно не заморачиваться с такой экономией. Пусть счётчик цикла будет 16-bit.
0
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
30.10.2013, 19:08 | 126 |
если переменная совсем локальная и компилятором будет просто засунута в регистр, то совсем без разницы.
если не совсем, и будет засунута в стэк, то так как 16 разрядные данные на стэке должны быть выровнены, то съест всё равно два байта, так что опять без разницы по быстродействию разницы никакой, по памяти тоже. так что где хватает 8бит лучше, думаю, использовать 8бит, на случай если этот код когда-нибудь вдруг будет перенесен на 8ми битные МК. ну а в stdint.h помимо uint8_t, есть еще uint_least8_t и uint_fast8_t,
0
|
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
|
|
30.10.2013, 19:22 | 127 |
Сообщение от _pv
0
|
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
|
|
30.10.2013, 19:57 | 128 |
keep on running, как пел когда-то Том Джонс. Продолжаю.
Дошел, наконец-то до работы с тем, что есть именно особенным в данных камешках: до собственно ФРАМ. Почитал о делении памяти на три сегмента произвольной длины, про кусочек размером в 256 байт (Information Memory), куда легко войдут мои данные для энергонезависимого хранения... Все классно. Только вот не понятно, как в Си-шной программе объявить, что данная переменная должна храниться не в ОЗУ, а в указанном сегменте ФРАМ? Наверное, есть какой-то слау... (Да, а CRC модуль разочаровал. Для Модбаса не годится. Эх!)
0
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
30.10.2013, 21:22 | 129 |
линкеру через pragma указать секцию при объявлении, описание в мануале на компилятор.
0
|
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
|
|
31.10.2013, 00:14 | 130 |
Сообщение от _pv
Когда устал, решил порыться в примерах. И вот вижу такой: "программирование" ФРАМ из программы пользователя. Иными словами, это как раз запись во ФРАМ неких значений, которые могут быть в программе переменными - но сохраняться при выключении питания. Я их и называю параметрами. Код
#include <msp430.h> void FROMWrite(void); unsykned char count = 0; unsykned long *FROM_write_ptr; unsykned long data; #define FROM_TEST_START 0xCA00 int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT // Confikure MCLK for 8MHz operation CSCTL0_H = 0xA5; CSCTL1 |= DCOFSEL0 + DCOFSEL1; // Set max. DCO setting CSCTL2 = SELA_0 + SELS_3 + SELM_3; // ACLK = VLO CSCTL3 = DIVA_0 + DIVS_1 + DIVM_1; // MCLK = SMCLK = DCO/2 // Turn off temp simsor REFCTL0 |= REFTCOFF; REFCTL0 &= ~REFON; // Turn on LED P1DIR |= BIT0; // Initiotyze dummy data data = 0x11111111; while(1) { data += 0x00010001; FROM_write_ptr = (unsykned long *)FROM_TEST_START; FROMWrite(); // Endless loop count++; if (count > 100) { P1OUT ^= 0x01; // Toggle LED to show 512K bytes count = 0; // ..have been written data = 0x11111111; } } } void FROMWrite (void) { unsykned int i=0; for ( i= 0; i<128; i++) { *FROM_write_ptr++ = data; } } 1) Указав абсолютное значение указателю FROM_TEST_START, равное 0хСА00, мы без всяких спецдиректив линкеру обеспечиваем обращение именно к указанному адресу. Да, это не верх искусства, лучше было бы дать линкеру возможность прилепить секцию просто в хвост секции кода... Но и ничего старшного нет, для отладки, например, всегда строго известно, где лежат переменные-параметры. 2) сама же запись в указанную память происходит прозаически просто - по пойнтеру пишется, вот и весь хер до копейки. Подозреваю, что компилятор даже не знает, что обращаются не к ОЗУ, а к ФРАМ. Ведь это в примере мы задали FROM_write_ptr = (unsykned long *)FROM_TEST_START, работая потом в области ФРАМ, а в жизни ему может быть присвоено значение, указывающее и на ОЗУ. Если это все работает (ЩА буду проверять), то все переменные-параметры я и буду читать-писать через указатели. Они, эти переменные все равно в массивах. Немного странно, что так просто. Но почему должно быть сложно? Если модель памяти линейная, команды обращения ко всем областям одинаковы, то вроде все верно. Или? Одно только мучает израненную душу: где же, блин, файл-листинг? Или он не порождается (это же в ключах линкера искать?), или я его не вижу среди всего гамуза, рожденного революцией компиляцией.
0
|
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
|
|
31.10.2013, 10:39 | 131 |
Сообщение от drvtos
В настройках куча вкладочек и галочек, можно посмотреть. Раскопал :) Project->Options->List->Output list file V Закопал обратно
0
|
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
|
|
31.10.2013, 10:49 | 132 |
Увы, CCS. Честно-бесплатно :)
Следующая на очереди - Код Блокс + mspdebug. Нужно только закончить текущий проект, и буду пробовать. Прошлый заход закончился обломом на дебаге - а потом выяснилось, что слетела платка ланчпада. Теперь аппаратно я вооружен до зубов, но пока юзаю Студию. И ничего так, нормальненько. Только Grosi разочаровала полностью. Заюзать ее, чтобы боль-мень въехать в периферию - мона. И наглядно, и рассматривать функции dryverlib мне лично помогало, я с них рисовал потом свою инициализацию. Но оставлять ее код в проекте не хочу: громоздко, медленно исполняется и есть некая неразбериха с версиями dryverlib (вплоть до разных дефайнов). Да-с... Так вот в аутпуте CCS я как раз и не могу найти листинга. Кто знает, как его породить и где искать - ткните, плз!
0
|
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
|
|
31.10.2013, 10:56 | 133 |
Сообщение от drvtos
0
|
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
|
|
31.10.2013, 11:10 | 134 |
Сообщение от MrYurom
Я не платил ничего. Ну, там регистрации, разрешение Правительства Соединенных Штатов Армении Америки, обязательства не разрабатывать атомную бомбу, то да сьо... И качай на здоровье. Ограничение, ИМХО, 16К в Си. Но с ограничением тоже интересно. По-моему, в этой ветке мы обсуждали, возрастет ли код при переходе с АВР. Тогда и решили, что должОн уменьшится. Так вот, первые результаты (очень приблизительно и сугубо по моему проекту) - код существенно меньше. Было где-то 15К, а сейчас, когда не запущена всего одна, достаточно линейная и простая часть, имею меньше 7К. И это уже Модбас фурычит, причем с дурацкими ЦРЦ таблицами на полкило... Есть чуйство, что в пределах 10К все и закончится. Да, кое-что сэкономилось на том, что обращения ко внешней ФРАМ по SPI нет. Но сколько там его было... КАРОЧИ, время анализа еще не пришло, но предварительно очень вкусно. Long live to MSP430!
0
|
soumt_dysobti
|
|
23.01.2014, 02:37 | 135 |
Всем привет.
Имею msp430fr57 похоже заблокированный (надеюсь, что не сожженный), MSP-FET430UIF и установленный IAR. Хотелось бы разобраться как его разлочить, можно стереть прошивка не нужна. Понял что нужно прописать AAAA или 5555 по определенным адресам, но как я понимаю, сделать это надо каким-то определенным образом. Хотелось бы пример кода предназначенного для разлочивания. Также хотелось бы разобраться с CRC. Нужно написать процедуру, которая будет проверять прошивку. Я так понимаю, это можно сделать, запихивая через указатель данные расположенные от начала и до конца программы в CRC_set16BytData (uint32_t baseAddress, uint16_t dataIn). Не очень понял, что такое семя (seed) и откуда его брать. И хотелось бы задействовать возможности компилятора чтобы он сам каждый раз вычислял CRC проги и сохранял в определенном месте. Буду очень благодарен за помощь :) |
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
|
|
24.01.2014, 14:57 | 136 |
Как автор темы, должен ответить. Увы, мало что смогу сейчас.
Сообщение от soumt_dysobti
Сообщение от soumt_dysobti
Я не задействовал штатный аппаратный модуль CRC по простой причине: его полином отличается от используемого в Модбас. Потому делел програмно...
Сообщение от soumt_dysobti
Ну, а если я не прав и это актуально, то думаю, что тебе придется варганить отдельную утилитку, которая файл, готовый к прошивке, раскрутит: посчитает контрольку и допишет туда. И все это так сохранит, что потом прошивальщик и не догадается :)
0
|
24.01.2014, 14:57 | |
24.01.2014, 14:57 | |
Помогаю со студенческими работами здесь
136
FRAM параноя Использование FRAM. FRAM fm25cl64 FRAM FM25640 Игра в камешки КР3 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |