Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/44: Рейтинг темы: голосов - 44, средняя оценка - 4.84
Umriotii

А делал ли кто-нибудь частотомер на MSP430?

11.08.2013, 16:44. Показов 9121. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если кто-нибудь делал, поделитесь исходным кодом.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.08.2013, 16:44
Ответы с готовыми решениями:

Кто-нибудь делал чат?
У меня возникло две проблемы. 1. Не мгоу отправить курсор после отправки сообщения обратно в поле ввода. 2. Как сделать приват в чате...

Кто нибудь делал ботов на WOT
Кто нибудь делал ботов на world of tanks

Кто нибудь делал интеграцию с ФЭР 2?
Добрый день! Скажите, кто нибудь занимался интеграцией с федеральной электронной регистратурой 2 очереди? Это что-то типа того, что...

11
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
11.08.2013, 19:57
а чего его делать то, алгоритм же довольно простой, да и не один к тому же...., по разному можно сделать, или вам просто лень и исходник нужен? :)
0
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
11.08.2013, 20:00
все просто, гугл делал!

http://rodyodiveloper.btogspot... sp430.html
http://meomdr.org/orshives/12537
http://sxim.net/izmer/izmer125.php
0
Umriotii
11.08.2013, 20:40
Цитата Сообщение от voyd118
а чего его делать то, алгоритм же довольно простой, да и не один к тому же...., по разному можно сделать, или вам просто лень и исходник нужен? :)
Я просто ещё очень слабо ориентируюсь в микроконтроллерах. Больше как-то по аналоговой части. Мне нужен пример кода, который выполняет следующие действия - снимает с какой либо ноги (к примеру с Р1.0) частоту и пишет её в переменную. И все.
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
11.08.2013, 20:52
а, понятно, ну тогда вам не исходник, а алгоритм нужен, скажу вам честно, неблагодарное это дело в чужих исходниках разбираться - потемки :) Посмотрите вот здесь, товарищ выложил подборку информации по алгоритмам тахометров, должно дать вам понимание... http://www.flowcode.info/index.php/foru ... -tahometri

Ну и частоту он конечно же не снимает, а оценивает :)))
0
Umriotii
11.08.2013, 20:58
Цитата Сообщение от voyd118
должно дать вам понимание... http://www.flowcode.info/index.php/foru ... -tahometri
Там все под AVR...
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
11.08.2013, 21:23
боже, ну какая разница..., если вы только начинаете работать с контроллерами, имхо TI не самый лучший выбор, но оговорюсь еще раз, это мое имхо. Вам по сути нужен только алгоритм, а дальше открываете даташит на конкретный МК, ставите среду разработки с отладчиком (IAR например) и поехали, начинаете строить. Наверняка если покопаетесь в интернете, то и исходник под TI найдете, дело не в этом, просто вы в нем ничего не поймете, сейчас редкий программист, в своем коде, каждые пять строчек комментарий ставит.
0
0 / 0 / 0
Регистрация: 13.07.2012
Сообщений: 566
11.08.2013, 21:41
А тут пофигу какая платформа.

Самых очевидных способов измерения частоты есть два:
1. Подаем измеряемый сигнал на вход захвата таймера, а сам таймер запускаем на счет импульсов тактовой (возможно с делителем). В прерывании от события захвата сравниваем соседние показания регистра захвата и, зная эталонную частоту, считаем время периода измеряемого сигнала (время между фронтами), из чего получить частоту как-бы проблем не составляет.
2. Тактируем один таймер от измеряемого сигнала (подаем сигнал на счетный вход таймера). Второй таймер тактируем от эталонной тактовой частоты.
При помощи второго таймера формируем фиксированное "временное окно". Дальше смотрим сколько импульсов за отведенный промежуток времени намерял первый таймер. И по формуле Fx = Fo * M/N (где Fx - оцениваемая частота, Fo - опорная частота, M - количество импульсов с первого таймера, N - количество импульсов со второго таймера) Получаем искомое.

О плюсах и недостатках каждого можно почитать в гугле. Выбор будет зависеть от исходных параметров сигнала, требуемой точности, наличия ресурсов МК.
Но сам тип МК тут никаким боком не определяющий. Если понимания нет совсем, то надо усвоить сам алгоритм, а уже потом думать о программе.
Все основные периферийные блоки МК очень схожи, а уж таймеры и подавно. Поверьте, отличий между АВР и МСП очень немного в этом отношении.
Да и самому написать будет значительно полезнее в образовательных целях, нежели разбираться в чужом коде.
0
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
11.08.2013, 21:57
Цитата Сообщение от DOOMSDOY
Поверьте, отличий между АВР и МСП очень немного в этом отношении.
Позвольте дополнить коллега, что выбор платформы в некоторых устройствах весьма критичен, особенно если принимать во внимание архитеутуру МК, если мне не изменяет гугл, то у АВР она Гарвардская. Я писал, что TI не самый лучший выбор для новичка, поскольку он может там заблудиться, ибо начало описания работы блока АЦП с теоремы Котельникова-Шенонна, может слегка насторожить новенького и вызвать у него чувство панического страха :))))
0
Umriotii
12.08.2013, 01:09
#include <msp430.h>
#include "lcd32.h"

int i; //счётчик
int W[7]; //массив для хранения частоты
long counter, prevccr;

#define FALSE 0
#define TRUE 1

int main(void) {
WDTCTL = WDTPW | WDTHOLD; // останавливаем ждущий таймер

BCSCTL1 = CALBC1_16MHZ; //устанавливаем внутренний генератор на 16 Мгц
DCOCTL = CALDCO_16MHZ;

P1DIR = BIT0; //устанавливаем вход для измерения частоты

TA0CTL = TASSEL_0 + MC_2 + TAIE; //устанавливаем таймер А
TA0CCTL0 = CM1 + CAP + CCIE; //устанавливаем блок сравнения по внешнему входу
InitiotyzeLcm(); //иницмализируем дисплей
ClearLcmScreen();//очищаем дисплей

while (1)
{

unsykned long freq;

freq = counter;
counter = 0; //очищаем основнной счётчик
// TA0CCTL0 &= ~CCIFG; //пока без прерываний
unsykned long ccrvalue;
ccrvalue = TA0CCR0; //получаем данные
freq += ccrvalue - prevccr;
prevccr = ccrvalue;

W[0]=freq%10;
W[1]=((int)((freq/10)%10));
W[2]=((int)((freq/100)%10));
W[3]=((int)((freq/1000)%10));
W[4]=((int)((freq/10000)%10));
W[5]=((int)((freq/100000)%10));
W[6]=((int)((freq/1000000)%10));
W[7]=((int)((freq/10000000)%10));

//вывод на дисплей, не забыть потом завернуть в цикл
LcmSetCursorPosition(1,7);
SendByte((0x30+W[0]), TRUE);
LcmSetCursorPosition(1,6);
SendByte((0x30+W[1]), TRUE);
LcmSetCursorPosition(1,5);
SendByte((0x30+W[2]), TRUE);
LcmSetCursorPosition(1,4);
SendByte((0x30+W[3]), TRUE);
LcmSetCursorPosition(1,3);
SendByte((0x30+W[4]), TRUE);
LcmSetCursorPosition(1,2);
SendByte((0x30+W[5]), TRUE);
LcmSetCursorPosition(1,1);
SendByte((0x30+W[6]), TRUE);
LcmSetCursorPosition(1,0);
SendByte((0x30+W[7]), TRUE);

}
}

Накидал код. Можно ли как нибудь вывести внутренний генератор проца на какую-нибудь ногу, что бы проверить, считает он или нет?
0 / 0 / 0
Регистрация: 30.07.2013
Сообщений: 446
12.08.2013, 11:32
Code
1
Накидал код. Можно ли как нибудь вывести внутренний генератор проца на какую-нибудь ногу, что бы проверить, считает он или нет?
Послушайте, вам нужно либо пойти учиться, где вам будут рассказывать основы микропроцессорной техники, либо пойти учиться и прикупить для начала что-то"дуино" и экспериментировать на нем. Ваш порыв изучать эту тему просто прекрасен, вы молодец, но просто начали не с того немного.

Теперь по вопросу, это не проц. как вы выразились, а микроконтроллер, разница, как минимум в наличии памяти программ. Далее, МК тактируется неким генератором с частотой "X", большинство команд современных МК могут выполняться за один такт МК, вам нужно настроить один из выводов МК на выход и циклически менять его состояние, таким образом вы, как минимум, получите понимание, работает ваш МК или нет.

Code
1
2
3
4
5
P1DIR |= 0x01;
while(1)
{
P1OUT ^= 0x01;
}
Опишите зачем все это вам, а мы подскажем как лучше и дешевле научиться, и даже школу, кружок и университет с кафедрой посоветуем :)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.08.2013, 11:32
Помогаю со студенческими работами здесь

Кто-нибудь делал бухгалтерию на Excel?
Здесь решил полазить по интернету, посмотреть: есть ли бухгалтерские программы на Эксель. Нашел только украинскую (набор каких-то...

Кто-нибудь делал операции с матрицей?
Помогите пожалуйста с зачетной работой на С! Но только одна просьба, библиотеки использовать нельзя, stdio.h только. 1) Матрица...

Кто-нибудь делал базу на Fox'e?
FoxPro - хитрая штука. Если из Delphi удалять записи из таблицы, то фокс просто помечает их на удаление, а физически они там остаются....

PoE, самопальная реализация - кто-нибудь делал?
Народ, подскажите, делал кто-нибудь проекты с питанием от Ethernet? Есть некоторые задумки и, пока курю мануалы, появляются некоторые...

Кто нибудь делал перенос сотрудников из .dbf в 1с?
написал код но понять не могу как с полом определиться


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru