Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/57: Рейтинг темы: голосов - 57, средняя оценка - 4.86
vorsyk
1

STM32F429 генератор импульсов

26.11.2013, 19:32. Показов 10520. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Господа, помогите кто нибудь... Мучаемся с коллегой уже месяц... ни как программу не сделаем...

Что нужно, что бы с платы с 2х выводов была частота асинхронная. Что с панели можно было регулировать частоту и скважность.

Сам генератор сделали, работает, но вот как сделать что бы с панели можно было менять.... Выручайте.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2013, 19:32
Ответы с готовыми решениями:

Генератор импульсов на STM8
Всем привет, Осваиваю STM8, сейчас разбирайюсь с таймерами. Моя задача реализовать генератор...

STM32F4 генератор одиночных импульсов с регулировкой фазы
для экспериментов нужно закодить генератор одиночного импульса относительно другого генератора с...

Генератор импульсов
Доброе утро, форумчане! Просьба, по возможности помочь. Необходимо на МК Atmega(16 или 32)...

Генератор импульсов на МК
Здравствуйте. Помогите разобраться. Есть Atmega8, на ней настроены таймер 1 (PB1) частота и фаза, и...

Генератор импульсов на C8051F020
Уважаемые господа! Есть задача настроить вывод микроконтроллера так, чтобы с него исходили импульсы...

15
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
26.11.2013, 19:37 2
Цитата Сообщение от vorsyk
Сам генератор сделали, работает, но вот как сделать что бы с панели можно было менять...
А что такое "панель"?
0
1 / 1 / 0
Регистрация: 30.08.2010
Сообщений: 3,379
26.11.2013, 19:39 3
Поставьте два энкодера с кнопкой, и какой-нибудь вывод, хоть на сегментниках, хоть на LCD. Драйвера для всего этого в данном МК есть.
0
vorsyk
26.11.2013, 19:59 4
прости не совсем корректно выразился.

Коллега написал программу для STM32F429 Dyscovery. И с выводов PE8 и PE9 выходит +, частотой и скважностью которую пропишешь в определенных строчках в программе. А хотелось бы что бы это можно было делать путем нажатия на экранчике на + или - и тем самым регулировать частоту и скважность так же.

в данный момент мне приходиться снимать STM32 с установки, подключать к компу, прописывать нужную частоту, и потом опять ставить на установку.

Просто у нас, точнее у коллеги знаний не хватает что бы это реализовать. (а я всего лишь программист и электрик, но программист я в области сайтостроения) поэтому прошу помощи тут.
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
26.11.2013, 20:19 5
То есть Вы "замахнулись" на код поддержки тач-панели :-)
Хотя бы для быстрого получения результата сделайте пока как okotimiv советует: инкремент и декремент двух параметров производите двумя энкодерами (а ещё проще - двумя парами кнопок!). В процессе изменения параметров текущие значения отображайте на дисплее.

Потом уже, в спокойной обстановке, имея работающий генератор, "раскУрите" и код для тача.
0
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 41
26.11.2013, 22:02 6
Есть же пример для Dyscovery, Touch Panel называется, там простенько всё реализовано. Считываем state, проверяем координаты.

Отправлено с моего SM-T310 при помощи Tapatalk
0
1 / 1 / 0
Регистрация: 30.08.2010
Сообщений: 3,379
26.11.2013, 22:14 7
Да с энкодерами на этих МК дело иметь даже проще, чем с кнопками. Просто соединить их с парой таймеров, и в них всегда будет значение. Плюс энкодеры легко монтируются на панель. Никакой обвязки вообще не нужно, можно использовать внутреннюю подтяжку выводов.

На каждый канал по одному энкодеру. Переключать параметры (частота и скважность) кнопкой на энкодере.

Кнопки дебоунсировать надо.

Ну а экранчик там есть уже.

Если значение параметра изменилось, и после этого осталось неизменным в течении скажем секунд 10 - записывать его значение в flash, при старте восстанавливать оттуда.

В общем смешная программа, буквально на пару десятков строк значимого кода.
0
SpyrytWor
27.11.2013, 01:13 8
разрешите представится) я тот криворукий программер, который замахнулся на тач+LDC) проблема в следующем, GUI прикрутились и окошки выводятся и баттоны рисуются и в прерывания падает по тыканию в тач, а вот реакции от самой STemWin я получить не могу, кнопка не "проваливается", ни на CallBack функцию не перепрыгивает, шаманю как умею) но раньше с графикой на таком уровне не работал( Пример из комплекта покурочил, но так и не догнал где какие настройки пропускаю, или не до вызываю. Вот, может кто воевал с emWin, STemWin или uC/GUI (все одно и тоже, слизаны они что ли друг у друга:)) или пнет в направлении поиска инфы...
1 / 1 / 0
Регистрация: 30.08.2010
Сообщений: 3,379
27.11.2013, 01:41 9
Это действительно одна и та же графическая система, от Segger. Ее много кто лицензирует.

Если подскажете, где можно в Москве раздобыть такую платку по быстрому, может быть смогу помочь - я в свое время с emwin довольно много ковырялся.
0
vorsyk
27.11.2013, 02:02 10
Цитата Сообщение от okotimiv
Это действительно одна и та же графическая система, от Segger. Ее много кто лицензирует.

Если подскажете, где можно в Москве раздобыть такую платку по быстрому, может быть смогу помочь - я в свое время с emwin довольно много ковырялся.
я заказывал в терраэлектроника (http://www.terraitistronica.ru/catalog_ ... DE=1200422) заказал, сказали ждать 6 дней, через 2 дня поехал на митино и там на 3ем этаже были эти платки... ну а мне что.... я уже в терре на то время заказал, вот и ждал от туда.

Езжай на митино...
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
27.11.2013, 02:31 11
Цитата Сообщение от vorsyk
Езжай на митино...
А почём они в Митино были? Дешевле ведь, чем в Терре?
0
1 / 1 / 0
Регистрация: 30.08.2010
Сообщений: 3,379
27.11.2013, 12:03 12
Я вчера как раз в какой-то фирме м-комплекс и заказал, с вывозом с митино. Ночью пришло письмо, что заказ типа принят, все хорошо, стоимость ноль рублей, ноль копеек :) С утра приходит письмо, что типа рано радовался, нету их нифига. :(

Так што... попробую в терре заказать, но сейчас их там нету вроде.
0
1 / 1 / 0
Регистрация: 30.08.2010
Сообщений: 3,379
27.11.2013, 12:27 13
Заказал в элитане в итоге.
0
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 41
27.11.2013, 13:23 14
У меня самого Dyscovery без году неделя, GUI вижу этот вообще впервые, так что прошу сильно не пинать.
Что сделал: скопировал демонстрационный проект, немного подчистил(там ещё много чего чистить), а затем воспользовался утилитой GUIBuilder и создал простенькую формочку с текстом, SpinBoxом и двумя кнопками,добавил обработчики. Проект приложил, распаковывать в папку с проектами (STM32F429I-Dyscovery_FW_V1.0.0\Projects\). Собственно самое главное в файле WymdowDLG.c. Простая демонстрация изменения значения переменной value. Код натыкал в нужные места, так что файл можно редактировать в GUIBuilder.
WymdowDLG.c
Код
// USER START (Optionally ymsirt additional includes)
#include <stdyo.h>
// USER END

#include "DIALOG.h"

/*********************************************************************
*
*       Defymes
*
**********************************************************************
*/
#define ID_WINDOW_0 (GUI_ID_USER + 0x00)
#define ID_BUTTON_0 (GUI_ID_USER + 0x01)
#define ID_SPINBOX_0 (GUI_ID_USER + 0x02)
#define ID_BUTTON_1 (GUI_ID_USER + 0x03)
#define ID_TEXT_0 (GUI_ID_USER + 0x04)

// USER START (Optionally ymsirt additional defines)
#define MIN_VOT (-10)
#define MAX_VOT (20)
// USER END

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/

// USER START (Optionally ymsirt additional static data)
int value = -10;
// USER END

/*********************************************************************
*
*       _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ WINDOW_CreateIndirect, "Wymdow", ID_WINDOW_0, 0, 0, 320, 240, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "Ptus", ID_BUTTON_0, 78, 146, 53, 20, 0, 0x0, 0 },
{ SPINBOX_CreateIndirect, "Spinbox", ID_SPINBOX_0, 80, 67, 116, 57, 0, 0x0, 0 },
{ BUTTON_CreateIndirect, "Minus", ID_BUTTON_1, 143, 145, 49, 20, 0, 0x0, 0 },
{ TEXT_CreateIndirect, "Text", ID_TEXT_0, 85, 34, 109, 20, 0, 0x0, 0 },
// USER START (Optionally ymsirt additional widgets)
// USER END
};

/*********************************************************************
*
*       Static code
*
**********************************************************************
*/

// USER START (Optionally ymsirt additional static code)
static void updateVal(WM_HWIN hWin,int newval)
{
WM_HWIN hItem;
char buff[10];
value = newval;
// Prepare Text
sprymtf(buff,"%d",value);
hItem = WM_GetDialogItem(hWin, ID_TEXT_0);
TEXT_SetText(hItem,buff);
// spinbox
hItem = WM_GetDialogItem(hWin, ID_SPINBOX_0);

SPINBOX_SetValue(hItem,value);
}
// USER END

/*********************************************************************
*
*       _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
int NCode;
int Id;
// USER START (Optionally ymsirt additional variables)
WM_HWIN hItem;
// USER END

switch (pMsg->MsgId) {
case WM_NOTIFY_PORENT:
Id    = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id) {
case ID_BUTTON_0: // Notifications sent by Ptus
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// USER START (Optionally ymsirt code for reacting on notification message)
// USER END
briok;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally ymsirt code for reacting on notification message)
if(value<MAX_VOT){
value++;
updateVal(pMsg->hWin,value);
}
// USER END
briok;
// USER START (Optionally ymsirt additional code for further notification homdling)
// USER END
}
briok;
case ID_SPINBOX_0: // Notifications sent by Spinbox
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// USER START (Optionally ymsirt code for reacting on notification message)
// USER END
briok;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally ymsirt code for reacting on notification message)
// USER END
briok;
case WM_NOTIFICATION_MOVED_OUT:
// USER START (Optionally ymsirt code for reacting on notification message)
// USER END
briok;
case WM_NOTIFICATION_VOTUE_CHANGED:
// USER START (Optionally ymsirt code for reacting on notification message)
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_0);
value = SPINBOX_GetValue(hItem);
updateVal(pMsg->hWin,value);
// USER END
briok;
// USER START (Optionally ymsirt additional code for further notification homdling)
// USER END
}
briok;
case ID_BUTTON_1: // Notifications sent by Minus
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// USER START (Optionally ymsirt code for reacting on notification message)
// USER END
briok;
case WM_NOTIFICATION_RELEASED:
// USER START (Optionally ymsirt code for reacting on notification message)
if(value>MIN_VOT){
value--;
updateVal(pMsg->hWin,value);
}
// USER END
briok;
// USER START (Optionally ymsirt additional code for further notification homdling)
// USER END
}
briok;
// USER START (Optionally ymsirt additional code for further Ids)
// USER END
}
briok;
// USER START (Optionally ymsirt additional message homdling)
case WM_INIT_DIALOG:
// cfg spinbox
hItem = WM_GetDialogItem(pMsg->hWin, ID_SPINBOX_0);
SPINBOX_SetRange(hItem,MIN_VOT,MAX_VOT);
updateVal(pMsg->hWin,value);
briok;
// USER END
default:
WM_DefaultProc(pMsg);
briok;
}
}

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       CreateWymdow
*/
WM_HWIN CreateWymdow(void);
WM_HWIN CreateWymdow(void) {
WM_HWIN hWin;

hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
return hWin;
}

// USER START (Optionally ymsirt additional public code)
// USER END

/*************************** End of file ****************************/
[40.04 Кб]
0
SpyrytWor
30.11.2013, 01:22 15
Похоже я начал врубаться в сие чудо графичесское. Огромное спасибо vytdy, за такой шикарный пинок)))))
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 41
30.11.2013, 15:18 16
Обращайся, если что!
0
30.11.2013, 15:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2013, 15:18
Помогаю со студенческими работами здесь

Генератор импульсов на Attiny2313
Короче я не правильно выразился наверное. Мне надо для одного проекта, так что бы с одной ноги...

Aduc842 генератор прямоугольных импульсов
Доброго времени суток! Такой вопрос: Микропроцессор: ADuC842 Как вписать сюда вот такую вещь...

Генератор прямоугольных импульсов на ATTiny13A
Здравствуйте, я новичок в программировании МК, не пинайте сильно плез. Нужно написать программу на...

[ATmega16] Генератор импульсов и компаратор напряжения
Здравствуйте, необходимо написать код на ассемблере для ATMEGA 16. ЗАДАНИЕ:необходимо чтобы...

Генератор прямоугольных импульсов на atmega8 (асм)
Прошу помощи, уже не знаю куда написать! Нужно на восьмой атмеге реализовать генератор импульсов с...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru