|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 7:27 am
|
Страница 1 от 1
|
[ 10 мнения ] |
|
| Автор |
Съобщение |
|
v.n.angelov
Ранг: Минаващ
Регистриран на: Чет Юни 14, 2012 12:48 pm Мнения: 29
|
 Помощ за програма
Опитвам се да подкарам схема за управление на униполярен стъпков двигател с два режима на работа, режим позиция и режим скорост. Съответно съм взаимствал от една програма и крайният резултат е напълно мое дело. Нов съм в програмирането и съм далеч от мисълта, че програмата ми е добре оформена и написана. Да си дойдем на думата, програмата и схемата работят на симулация на протеус така както искам, но уви, след като направих печатната платка и монтирах елементите както си му е реда, при съживяването на схемата, мисля че в програмата има бъг, не тръгва така както на симулации. Управлявам стъпковия двигател чрез матрична клавиатура, при избора на режим, програмата би трябвало да изчака натискане на един от два посочени бутона, но тя си избира сама някой от 2та бутана. Плед това програма пита за посоката на въртене, това работи коректно, изчакваме да въведа исканата ми посока. На края, в зависимост от режима, програма иска да въведа или брой стъпки или скорост на завъртане. На симулациите работи на практика започва да въвежда сама цифри. Бих бил благодарен, ако на някой не му коства много усилие, да погледне програмата дали е написана като хората. Използвам mikroC pro for PIC, едно от съмненията ми че програма на практика не върви е компилатора, понеже използвам готови функции.
|
| Чет Авг 30, 2012 6:47 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Помощ за програма
Хммм е днес не съм в настроение да чета точно такива програми, записи в тоя вид може и да са кратки и може би по спретното да изглеждат, но пък са ми досадни за четене, имам в предвид запис на един ред като if(....(if....))....));
|
| Чет Авг 30, 2012 9:30 pm |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
 Re: Помощ за програма
Проблема ти е, че смущенията от жиците (пистите) на клавиатурата, се възприемат като натиснат клавиш. Пробвай да четеш клавиатурата два пъти през опеделено време и ако резултата е различен, значи е смущение.
|
| Пет Авг 31, 2012 8:20 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Помощ за програма
Абе от смущения чак такива неща да прави ... не знам, като гледам е сложил резистори към маса, не ги знам колко са, но ако и така иде смущение то ще е доста сериозно. Ако клавиатурата е с лентов кабел и няма разделителни маси, е възможно капацитивно да прехвърля самите сканиращи импулси. Като гледам къде е вързана може би ги опработва в прекъсване, затова ако случая наистина е такъв най-простото е да забрани прекъсването и да го разрешава извесно време след като е вдигнал съответния пин в 1, така ще се избегне ако е капацитивно. Ако са реални смущения, първо виж от къде идват, а след това си направи времева проверка. Не знам с каква честота сканираш тая клавиатура, но сравнително лесно може да реазлизираш някакъв времеви филтър от 50-100 мс то като имаш клавиатура винаги е желателно да го имаш. Като го пишеш имай в предвид че да изчакаш 50 мс и пак да провериш не е достатъчно, ако е смущение може пак да те излъже, добре е да проверяваш дали не се е променил за тия 50 мс, иначе ще върши работа но само за да разкараш трептенето на контакта на бутона. Най-ефикасно ще стане относо с прекъсване, само че ще си мениш фронта, нормално получаваш по преден, след като получиш го сменяш на заден, вдигаш някакъв флаг приемрно, нулираш един таймер и излизаш. Тук вече има два варианта, първи чакаш заден фрон, ако дойде и таймера е над определена стойност казваш че е натиснат бутон, така сигнала ти идва при отпускането а не самото натискане. Втори вариант някъде в тялото проверяваш тоя таймер, ако е по голям от нужното и флага ти е вдигнат казваш че имаш натиснат бутон, от там нататък може да свалиш флага, или пък само да затриеш таймера, като второто ще ти дава натиснат бутон през опредлеено време ако е натиснат и не е отпуснат, зависи как искаш да ти работи. Ако беше и един нормален контролер с прекъсване за всеки от тия входове ... но с малко хитрост става. Тук говоря за port_b change прекъсването.
Факта обаче че има място където не го прави този пробелм е по претеснителен, проблема със смущенията не е избирателен
едит : .. горе съм писал да мениш форнта на прекъсването .. то ако ти е на on change няма нужда, всяка промяна ти генерира прекъсване .. поне доколкото си спомням.
|
| Пет Авг 31, 2012 8:48 am |
|
 |
|
didofen
Ранг: Популярен
Регистриран на: Вто Юни 27, 2006 11:13 am Мнения: 381 Местоположение: Варна
|
 Re: Помощ за програма
да, при прекъсване от портб е на всяка промяна, само за пб0 е по избирателен фронт
|
| Пет Авг 31, 2012 9:29 am |
|
 |
|
Gogo
Ранг: Форумен бог
Регистриран на: Чет Фев 24, 2005 11:41 pm Мнения: 1049 Местоположение: Pz
|
 Re: Помощ за програма
Ами аз не си ги измислям тези неща - патил съм точно от това. Освен това, човека казва, че кара степер с този контролер - там "пукотевиците" са си наистина сериозни.
|
| Пет Авг 31, 2012 1:18 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Помощ за програма
Виж сега, смущенията са първият заподозрян, това което обаче ме притеснява е че в определена част от програмата не се случва, те такива смущения няма, или някак магически изчезват.
|
| Пет Авг 31, 2012 8:56 pm |
|
 |
|
stivan
Ранг: Минаващ
Регистриран на: Чет Дек 15, 2005 3:49 pm Мнения: 8 Местоположение: Пловдив
|
 Re: Помощ за програма
v.n.angelov, имаш ли филтриращи кондензатори до процесора, дисплея и драйвера (100nF)?
_________________ Винаги трябва да има известна доза мундарлък!!
|
| Вто Сеп 04, 2012 11:15 am |
|
 |
|
v.n.angelov
Ранг: Минаващ
Регистриран на: Чет Юни 14, 2012 12:48 pm Мнения: 29
|
 Re: Помощ за програма
Нямам!
|
| Вто Сеп 04, 2012 2:33 pm |
|
 |
|
stivan
Ранг: Минаващ
Регистриран на: Чет Дек 15, 2005 3:49 pm Мнения: 8 Местоположение: Пловдив
|
 Re: Помощ за програма
А трябва! От там ти идват всички мъки... 
_________________ Винаги трябва да има известна доза мундарлък!!
|
| Сря Сеп 05, 2012 11:47 am |
|
|
|
Страница 1 от 1
|
[ 10 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|