Отговори на тема  [ 69 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5  Следваща
Импулсчета (бившо RC филтри) 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Dimitar написа:
Аз пак да питам - тая Мега няма ли кепчър/компаер-и и PWM-и. Май има :? .Защо си ги хакнал тия неща на преместващи регистри - крака ли няма? Май наистина ще е най-добре отделен форум да се направи, където да се изясни концепцията, схеми и т.н., за да може да се действа комплексно. Тук има достатъчно хора, дето дори да си нямат понятие от ДВГ-та, могат да дадат доста добри идеи по различните части от контролера ако всичко е на масата. Проекта си е достатъчно сериозен, за да ги поднасяш нещата така на парче.
Не се заяждам 8) , ама 1MHz-я професор на "дядо Нисан" как ли ги прави тия работи, дето на теб ти заемат 80% от многото мегахерци :? .


Аз пак питам - а какво е PWM и за какво служи? :)
Иначе ЕКУ-то на дедо Нисан освен процесора има и много други неща. Ама наистина много. :) Така че натоварването на процесора е сведено до минимум. Пък при мен е обратно - освен процесор нямам нищо друго. Пък и Нисана се съмнявам да работи с точност 1/100 ms.


Пет Дек 03, 2004 10:44 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 12, 2004 3:38 pm
Мнения: 9103
Местоположение: Chicago, IL
Мнение 
PWM е Pulse Width Modulation - демек процесора си генерира едни импулсчета без да си дава много зор. Ти май имаш 2 такива изхода, а версията TQFP (SMD корпуса) май имаче 8, ама несъм много сигурен сега. Та така нещата се случват някак си автоматично, но тия преместващи регистри май ще спънат работата. Не се засягай - но ти не използваш и 30% от възможностите на тоя процесор, а и с само със C++ май няма да минеш. Хайде да почнем отначало - какво ще кажеш?


Пет Дек 03, 2004 10:52 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
хм, PWM е едно за всеки таймер.


Пет Дек 03, 2004 11:08 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Здравей, скъпи ми Реконструкторе!

Както то обещах, ще ти помогна с ЦРУ ( ценни ръководни указания ) как да си подкараш Устройството. Снощи като си легах, дълго се въртях в леглото и си мислех за твоя софтуер. И колкото повече си те мислех, толкова по-хардуерен характер придобиваха мислите ми. Хайде сега да видим дали моите твърд-уерни умения ще те направят толкова щастлив, та да черпиш?

За да бъде успешна моята мисия, аз като начало се опитах да си представя какво мислиш и си представяш ти. Да умееш да вникнеш в желанията и фантазиите на партньора - това е задължително условие за успешно и харминично протичане на съвместната развойна дейност.

И какво си представих аз: ти имаш примерно два масива, ей такива:

unsigned int on_delay[8], on_duration[8];

Вероятно твоят ForeGround ги поддържа актуални, отчитайки обороти, натоварване, температури и какво ли още не, това не е толкова важно. Така представени нещата ( от софтуерна гледна точка ) са много нагледни, но трудни за ползване. Какво вероятно правиш ти : имаш един брояч на прекъсвания и при всети тик на часовника го увеличаваш с едно, проверяваш дали на съвпада с някой от първите 8, ако съвпадне - вдигаш съответния бит. После проверяваш дали не съвпада с някой от първи+втори ( 24 или 32 битово сумиране + сравнение ! ) и сваляш съответния бит. Зареждането на регистъра за мен са технически подробности.
От дълбините на моето хардуерно съзнание обаче като червена нишка се усука прозрението ! Та ти си софтуерист ! Затова не си представил нещата по най-удобния начин, а по най-очевадния ! Как трябва да се представят нещата.

Според мен, твоят ForeGround трябва да подготви следните масиви :

unsigned int next_delay[16];
char next_state[16];

K'во е туй, да му *** ****** ? Ако се позамислиш, ше видиш, че след всеки event ти имаш 16 интервенции в изходите. Разстоянието между две съседни интервенции е < 65536. След всяка интервенция имаш ново състояние в изхода. Подготовката на горните 2 масива ( дори като функция на "твоите" масиви ) се извършва еднократно при промяна на параметрите от основния процес, не в прекъсване. Няма да ти пиша текста за това, щото ша земеш да се засегнеш, и без това много ти понаписах. Обърни внимание, че next_delay не бива да е =0, но това не е проблем да се излъже.

Имаш следните работни променливи :

char curr_step; // 0 - 15 или 0xFF, - коя точка от процеса чакаме да дойде
unsigned int curr_delay; // N - 0 - време, което остава, за да дойде

Event-ът прави следното :

curr_step = 0;
curr_delay = next_delay[0];


Процедурата за обработка прекъсването от таймера :

if (curr_step == 0xFF) return;
curr_delay--;
if (curr_delay == 0) {
spi_output(next_state[curr-step]); // пускаш да се предава състоянието
next_step++;
if (next_step != 16) {
curr_delay = next_delay[curr_step];
spi_latch(); // latch на '595
} else {
curr_step = 0xFF;
}
}

процедурите spi_output и spi_latch си ги пиши ти!
Както виждаш, в основния си режим ще имаш едно 8 - битово сравнение, 16 битов декремент ( с автоматична проверка за = 0)
В по-тежкия случай имаш едно индексно четене, 8 - битов инкремент, 8 - битово сравнение, малко регистрова еквилибристика и това е. Какви 160 цикъла ?!


Пет Дек 03, 2004 12:17 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Перфектно, бате, наистина много добре. =D> Отлична идея е да се разглежда процеса на стъпки, като на всяка стъпка отговаря определено състояние. Остава да измисля(ме) как да се пълни масива на състоянията. :) Само ще уточня, че стъпките може да са по-малко от 16, тъй като на един delay може да има повече от 1 промяна на състоянието.
Пък след ~2 седмици взимам заплата, и ще си правя подарък за нова година (осцилоскоп), та ще те завлеча с мене да гледаме някви, да не взема нещо да се прееба. Пък после, яко - :partyman: :drinkers:


Пет Дек 03, 2004 1:02 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Това, че стъпките са < 16 не е проблем. Това, че имаш проблеми как да попълниш масива, и то не е проблем. Ама сега се каня да се настройвам да започвам работа и ще ти напиша какво мисля по въпроса по-късно, вероятно не днес. А що касае черпенето - не го приемай като задължение, не държа особено. :wink:
И повее никакви забележки от рода "От хардуеристи не искам .." :twisted:


Пет Дек 03, 2004 1:09 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Е, ся, няма да нарушаваме древния обичай. :)
Сега си мисля, че с декрементиране и после проверка за 0 не е най-удачно, по-добре брояч и проверка с него. Щото при пълненето на масива ще се наложи сортиране и изваждане едно от друго.


Пет Дек 03, 2004 1:13 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Съб Сеп 25, 2004 4:33 pm
Мнения: 273
Местоположение: София
Мнение 
Реконструкторе после да кажеш какъв осцилоскоп си взел и дали е добър. Пък може и назаем да го дадеш за няколко месеца
:D

_________________
Adios
Mozfet


Пет Дек 03, 2004 1:16 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Не е така, ама е дълго за обяснени. И утре е ден, а точно днес синът прави 15 години и довечера няма да съм във форма. ама хич!


Пет Дек 03, 2004 1:17 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
bateAz написа:
Не е така, ама е дълго за обяснени. И утре е ден, а точно днес синът прави 15 години и довечера няма да съм във форма. ама хич!


Да му е честит юбилея! :mrgreen: Жив и здрав да е, наздраве! :)
Пък утре ще подновим евентуално дискусията. :)


Пет Дек 03, 2004 1:21 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Mozfet написа:
Реконструкторе после да кажеш какъв осцилоскоп си взел и дали е добър. Пък може и назаем да го дадеш за няколко месеца
:D


Ми аз как да позная дали е добър? :) Осцилоскоп съм виждал само от далеч, не съм работил никога с такова. :)


Пет Дек 03, 2004 1:22 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Сега всъщност си мисля, че няма как да се мине без сортиране... :?


Пет Дек 03, 2004 1:47 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30684
Местоположение: София
Мнение 
А ако питаш мен .. вместо да се занимавап с SPI и др. подобни глупости, я сложи едно CPLD, направи си вътре таймерите и хардуерно сравняване, зареждай си го през процесора и да ти е мирна главата, винаги ще работи а и може да си разшириш периферията. Чао за сега че тярвба да тръгвам


Пет Дек 03, 2004 3:15 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30684
Местоположение: София
Мнение 
Така ... а я сега кажи .. какви са тея сигнали ... събития де ... паленето на всеки цилиндър и другото .. впръскването може би ? Интересно ми е какво точно правиш ....


Съб Дек 04, 2004 12:01 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Ами трябва да изпиша доста страници, за да ти обясня как работи всичко. :) На този сайт всичко е обяснено простичко и подробно.


Съб Дек 04, 2004 10:48 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 69 мнения ]  Отиди на страница Предишна  1, 2, 3, 4, 5  Следваща

Кой е на линия

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


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

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