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

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Като начало, за да спестиш клокове, ще трябва да го пуснеш на хардуерен SPI. Второ, по-добре ще е да си подготвиш някъде какво ще подаваш във всеки един "квант" от време, така че само да четеш от таблицата и да го пращаш навън. Не мога да си представя как това ще е повече от 20 команди.
- захвърляш един-два регистъра в стека;
- четеш указателя към таблицата;
- четеш байта;
- записваш го в SPI предавателния буфер;
- докато се точи бит по бит по SPI, инкрементираш указателя;
- ха строб надолу, ха строб нагоре - фиксираш изходите;
- спасяваш оноя един-два регистъра от стека;
- УРАААА

Нещо такова.


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

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Абе не е чак толкова просто. :)
1. Има вход. Т.е. събитие, което инициира импулсчетата
2. Има огледална променлива, която съответства на състоянието на изхода на 595
3. Всяко импулсче започва някакво време след събитието, и завършва някакво време след него. Т.е. алгоритъма вътре в прекъсването е такъв:
Код:
            проверка на състоянието
             /           \
време ли е за активиране?        време ли е за деактивиране?
             \           /
установяване на съответния бит в огледалната променлива
                   |
                   |
       изход към 595 по SPI

4. Горното се извършва 8 пъти. :) Със забележката че изхода към 595 е след като минат всички проверки, а не след всяка - схемата е за нагледност.


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

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Hm. Не може да не може.


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

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


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

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
ako тези времена за активиране / деактивиране са фиксирани, какъв е проблемът? Идва събитието - нулираш указателя и пускаш простотийката, която ти написах по-рано. След време всичко ще се извърти и ще стигне до края на таблицата, където ще го спреш.


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

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


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

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Аз си го представям така:
начало : "00000000"
след напр. 170 us : "00010000"
... "00010110"
...
...
... "11010111"
...
...
...
край "00000000" // след напр. 12340 us

Най-бламската реализация е таблица с 1234 елемента.


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

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Имам само 1К памет. :guillotine: А и сетването на битовете не е чак такъв проблем. Сравнението на таймера със съответните стойности яде по-голямата част от времето.


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

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
E, не! По-"мек" начин е да си фиксираш 16 стойности на таймера - по една за вкл и по една за изкл. и таблицата ти е с 16 стойности. Пак си имаш указател, за да проверяваш само с една, а не с 16-те стойности. И на всеки съвпъдък записваш съответното число в 595 и инкрементираш поинтера. Като стигне 17 : УРААА


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

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


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

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Ша са разберем. На бира, аз черпя. Ша са разберем. :( :evil: :evil:


Чет Дек 02, 2004 3:23 pm
Профил ICQ
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Съб Сеп 25, 2004 4:33 pm
Мнения: 273
Местоположение: София
Мнение 
Цитат:
.... и така .. това е смисъла...


Ок мерси много Тони.

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

_________________
Adios
Mozfet


Чет Дек 02, 2004 4:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Няма за какво , не мисля че съм написал нещо мн. гениално, не е и мое изобретение ...:)

Реконструкторе ... какво си правиш бре ... как успяваш да заемеш 80% са един таймер ..... нещо ми се струва не много наред в твоя алгоритъм ..... ама много .... поне така ми изглежда .. струва ми се че не оползотворяваш рационално възможностите на процесора .. с две думи . пишеш за контролер както се пише за РС .... а не бива така :)


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

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


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

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Хайде да не си мерим писалките. Мога да ти кажа само, че специално за embedded софтуер нямаш шанс срещу мен. За Windows - евентуално боза данни, за останалото май пак нямаш.
Та на въпроса. Наистина, както ти каза Tonu, има нещо гнило в начина, по който си организираш нещата. Когато са ти малко ресурсите начините общо взето са свеждат до това :
1. Не изчислявай по време на изпълнение това, което може да се изчисли по време на дизайна.
2. Избягвай сложните сметки в ISR.
3. Не ползвай общи ресурси.
Мисля си, че има какво да се оправи при тебе.


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

Кой е на линия

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


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

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