Отговори на тема  [ 5 мнения ] 
Моля за малко помощ с елементарна програмка... 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Сеп 12, 2006 3:20 am
Мнения: 46
Местоположение: Бургас,Варна
Мнение Моля за малко помощ с елементарна програмка...
добре, не мога да разбера, аз ли съм толкова прост или... не исках да пускам тема тук, защото знам, че на такива глупави и елементарни въпроси много се нервите, но няма начин вече ... направих 100000 проби с различни промени, прегледах незнам колко десетки примерни програми, изчетох целия хелп на PICC ... само книги за PIC C не съм чел, но и до там ще стигна ...

НО ... това нещо ме побърка ...

Искам да напиша елементарна програмка с цикъла for, която да премества едно серво от начално в крайно положение ... ок... първо направих с 2 цикъла, от начално до крайно и обратно... качих я в контролера - нищо ... сервото мърда с по една стъпка на 2 секунди... после мъчих само да го преместя от началото до края - по същия начин ... накрая написах програма 200 реда с по 10-тина реда импулси с различни широчини, само и само да разбера дали аз бъркам нещо със сервото или не ... еми сервото работеше ... явно проблемът е в цикъла for ...

така... днес изтеглих Proteus и продължих с опитите ...


накрая след много опити получих, че в моя код 1ms=100us ?!?!?!?! да... или поне така излиза според моите сметки - когато разделя s на 1000 получавам на осцилоскопа в Proteus импулси от по 0,1 до 0,2 ms, което по принцип не е логично ... както и да е ... ето Ви последния source код, с който получих поне преместване от -90 почти до 0 градуса на сервото и това се повтаря много пъти... накрая отива на +90 градуса и си остава там ... (не можах да разбера в крайна сметка и как да накарам програмата да се повтори)...
И само ще Ви помоля да няма изказвания тип:
няма значение кой написа:
честно казано ..... незнам дали и на автомивка ще се справяш.........

ще съм много благодарен ...

Код:
#include <16f84a.h>
#use delay (clock=4000000)
void main()
{
int n=1,s=0;
for(;n<=100;n++)
{
s=1000+n*10;
output_high(PIN_A0);
delay_ms(s/100);
output_low(PIN_A0);
delay_ms(20);
}
}




Благодаря предварително... Не знаете толкова елементарно нещо колко главоболия ми създаде... само тая вечер от около 2 часа го мъча... а това е третия път, в който се занимавам с тея сервота...


Вто Ное 18, 2008 3:29 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение 
Ето ти нещо работещо и .. спи спокойно!
void main()
{
unsigned long n=1,s=0;

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
set_tris_a (0xF7);
for(;n<=100;n++) {
s=10000+n*100;
output_high(PIN_A0);
delay_us(s);
output_low(PIN_A0);
delay_ms(20);
}

}


Вто Ное 18, 2008 4:52 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Сеп 12, 2006 3:20 am
Мнения: 46
Местоположение: Бургас,Варна
Мнение 
Или компилаторът нещо си прави гавра с мен и не прекомпилира програмата (което ме съмнява), или и тази програма нещо не работи както трябва, или имам грешка в схемата...

ще пусна после схемата, за да ми кажете къде е грешката (ако не я открия до тогава де), че сега нямам време (лекции)...


Вто Ное 18, 2008 11:46 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Вто Сеп 12, 2006 3:20 am
Мнения: 46
Местоположение: Бургас,Варна
Мнение 
ооо да :) Сложих твоята програма и пак не стана... изнервих се, копирах целия код и затворих всички проекти в PIC C Compiler-a ... направих нов проект, нов source file и paste-нах всичко - сработи идеално :) Даже се оправи и другото - 1ms=1000us вече :D

Благодаря за помощта :) Сега вече мога да правя по-сложния проект, вече с реалното серво :)

_________________
..::Club Fiat Bulgaria member::..
Fiat Punto Mk.II 1.2 8v 60hp '01
Fiat Cinquecento 899cc 8v 40 hp


Сря Ное 19, 2008 12:52 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
За да накараш нещо да заработи, трябва първо да разбереш *защо* не работи.
Което в случая предполага доста труд, предполагам, но *това* е начинът, по
който го правят всички, които могат да го правят.
Със сляпо бутане тук и там понякога също става, разбира се,
то и някои лотарийни билети печелят.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Чет Ное 20, 2008 2:13 am
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 5 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни