vorsyk
|
|
1 | |
STM32F429 генератор импульсов26.11.2013, 19:32. Показов 10520. Ответов 15
Метки нет (Все метки)
Господа, помогите кто нибудь... Мучаемся с коллегой уже месяц... ни как программу не сделаем...
Что нужно, что бы с платы с 2х выводов была частота асинхронная. Что с панели можно было регулировать частоту и скважность. Сам генератор сделали, работает, но вот как сделать что бы с панели можно было менять.... Выручайте. |
26.11.2013, 19:32 | |
Ответы с готовыми решениями:
15
Генератор импульсов на STM8 STM32F4 генератор одиночных импульсов с регулировкой фазы Генератор импульсов Генератор импульсов на МК Генератор импульсов на C8051F020 |
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
Езжай на митино... |
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 ****************************/
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 | |
30.11.2013, 15:18 | |
Помогаю со студенческими работами здесь
16
Генератор импульсов на Attiny2313 Aduc842 генератор прямоугольных импульсов Генератор прямоугольных импульсов на ATTiny13A [ATmega16] Генератор импульсов и компаратор напряжения Генератор прямоугольных импульсов на atmega8 (асм) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |