Осваиваем микроконтроллер MSP430
|
|
| Пт, 28.12.2012, 17:49 | Сообщение # 11
|
frenele
Постов: 30
ОК |
Цитата (skateman) в авр это тож есть
такого в авр и пик нету. Там таймеры всегда считают до FF или FFFF смотря какой таймер 8 или 16 разрядные. Пока не задействуешь другой режим работы. А у MSP430 этот режим по умолчанию.
Вчера подумал о фьюзах на MSP430, а их там и нет.))
Добавлено (28.12.2012, 18:49) --------------------------------------------- Рекомендую изучить с начало основной блок тактирования, потому что от него много шишек можно набить. Он не сложный. Просто каждый модуль который используется в вашем проекте надо подключить программно к нужному клоку, а то работать не будет. И будишь сидеть думать почему не работает.
Порты ввода/вывода имеют альтернативные функции. Их надо конфигурировать.
допустим нам нужен ацп, тогда надо порт подключить в ацп.
Или подать шим от таймера. Тоже в настройках портов надо подключить соответствующий пин.
void init_PORTS() {
//Выход сигнала шим P1DIR |= BIT6; // пин P1.6 на вывод P1SEL |= BIT6; // альтернативная функция ШИМ
//Кнопка на пин (другой конец к общему проводу) P1IE |= BIT3; // на пин Р1.3 разрешаем прерывание P1IES |= BIT3; // реакция по спаду P1REN |= BIT3; // подтягивающий резистор к +3,3 v P1OUT = 0; // Установка порта в "0" }
|
|
| Пт, 28.12.2012, 18:15 | Сообщение # 12
|
skateman
Постов: 2201
Друзья |
Цитата (frenele) Там таймеры всегда считают до FF или FFFF смотря какой таймер 8 или 16 разрядные а как же режим СТС? это ведь генерация прерывания при совпадении TCNT и OCR с обнулением TCNT.Добавлено (28.12.2012, 19:15) --------------------------------------------- а можно и без прерывания обойтись, если заюзать 14 режим FastPWM для 16-ти битного таймера
|
|
| Пт, 28.12.2012, 20:37 | Сообщение # 13
|
frenele
Постов: 30
ОК |
Цитата (skateman) а как же режим СТС
Oй забыл когда писал.) Ну да у авр есть такой режим. Склероз программиста. Просто получается у MSP430 таймеры сразу работают в этом режиме.
Ладно выкладываю только что опробована инициализация АЦП
void init_ADC10() { ADC10CTL0 &= ~ENC; //устанавливается для начала иницилизации ADC10CTL1 |= CONSEQ_2 + INCH_4; // циклическое преобразование, подключение на пин P1.4(альтернативная функция) ADC10CTL1 |= SHS_1; // преобразование инициируется по переполнению таймера ТА0 ADC10CTL0 |= ADC10ON; // Включение модуля ADC10 ADC10CTL0 |= ADC10IE; // разрешение прерывания ADC10 ADC10CTL0 |= ENC;// снимается после иницилизации }
Ну и обработчик( не забудте разрешить глобальные прерывания)
#pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR (void) { ADC10CTL0 &= ~ADC10IFG; //Сброс флага прерывания TRData = ADC10MEM; //читаем значение преобразования
}Добавлено (28.12.2012, 21:37) --------------------------------------------- У модуля ацп есть блок который может перемещать результат в любое место оперативки. И даже можно массив записать без участия цпу и дма, что очень это интересно.
|
|
| Пт, 28.12.2012, 20:41 | Сообщение # 14
|
skateman
Постов: 2201
Друзья |
Цитата (frenele) без участия цпу и дма давно интересовало что такое DMA, в описалове про STM встречалось, но расшифровки не видел
|
|
| Вс, 27.01.2013, 11:36 | Сообщение # 15
|
frenele
Постов: 30
ОК |
Цитата (skateman) давно интересовало что такое DMA, в описалове про STM встречалось, но расшифровки не видел
Цитирую с википедии: "Прямой доступ к памяти (англ. Direct Memory Access, DMA) — режим обмена данными между устройствами или же между устройством и основной памятью (RAM) без участия Центрального Процессора (ЦП)." Ну к примеру нам надо контролировать уровень напряжения на какой нибудь точки, но хотелось что бы микроконтроллер не загружался этой задачей. А выполнял другую задачу не мешая контролированию контрольной точки. Да пустим АЦП считывает уровень напряжения, а блок DMA передаёт из АЦП в последовательный интерфейс RS232 это относительное значение уровня напряжение. Блок DMA имеет каналы и их количество ограниченно. Их может быть и несколько и всего один. То бишь один канал можно задействовать на одну функцию передачу данных.Добавлено (27.01.2013, 12:36) --------------------------------------------- Теперь как скачать и установить среду разработки IAR Embedded Workbench. Итак заходим на страницу: http://supp.iar.com/Download/SW/?item=EW430-EVAL и скачиваем файл. После установки надо пройти регистрацию. Запустите IAR License Manager Ярлык выглядит чёрный ключик на сером кружочке выберете вкладку License и далее Get Evaluation License откроется окно License Wizartd И нажмите на кнопку Register Откроется интернет страница с регистрацией На ней поставе переключатель на Code size limited IAR Embedded Workbench for MSP430, 4K KickStart Edition, v. 5.51 и далее заполните регистрацию. По почте придёт код который и введёте для активации. Вот и всё.
|
|
| Вс, 18.05.2014, 16:45 | Сообщение # 16
|
Zeligena
Постов: 1
ОК |
frenele, здравствуйте. А как можно на этом микроконтроллере реализовать измерение периода сигнала?
|
|
| Вт, 24.02.2015, 20:06 | Сообщение # 17
|
kotyamba
Постов: 3
ОК |
Больше новой инфы о msp430 не будет?
|
|
| Вс, 29.11.2015, 17:41 | Сообщение # 18
|
frenele
Постов: 30
ОК |
К сожалению у меня нету пока времени для изучения MSP430. Много всяких дел и много основной работы. Но если у меня время будет выложу еще чего нибудь. Но приходиться изучать отечественные микроконтроллеры и ПЛИС.
|
|