Пт авг 10, 2012 00:04:44
А затем, чтозачем вешать дополнительно детали если с этим один МК может справиться
. Программа может просто пропустить подобные импульсы.Время срабатывания по идее от 1,5 до 2 микросекунд
А кто сказал что микруху ?Это какую же микруху ИЛИ надо на 20 и более датчиков?
Пт авг 10, 2012 00:11:44
...
A=0; B=0; C=0;
for (i=0; i!=5; i++)
{
A=A|PINA; B=B|PINB; C=C|PINC;
}
...
Пт авг 10, 2012 00:17:59
Аlex писал(а):А кто сказал что микруху ?Это какую же микруху ИЛИ надо на 20 и более датчиков?
Пт авг 10, 2012 00:31:40
Что хоть за датчики такие и где они стоЯт
Программа может просто пропустить подобные импульсы.
а приемник пусть сам разбирается какой бит в каком порту за какой датчик отвечает
Действительно, зачем микруху, для "ИЛИ" можно просто диоды навешать.
Пт авг 10, 2012 00:43:40
Пт авг 10, 2012 00:50:40
DerMeister писал(а):Я не умею программировать на ПК вообще. Да и для МК крайне не очень...
Кто ж софт-то писать будет? Нынче у нас капитализьм...
Пт авг 10, 2012 00:59:25
Пт авг 10, 2012 01:07:18
Дело не в частоте, а в свободном процессорном времени для других операций, кроме опроса входов. Вы пока опрашиваете один вход, на другом может проскочить импульс и программа просто его не отловит. Для этого и существуют события по внешним прерываниям.Дык потому МК и работает на 8МГц чтобы успеть поймать.
Ну дык она же не в 2 раза уплывает Но лучше поставить, дабы избежать потом проблем. Или хотя бы предусмотреть для него место на плате.Частота же должна была уплыть...
Пт авг 10, 2012 01:14:53
Тогда, перед отправкой, нужно будет определить по включенным битам портов соответствующие им символы и отправлять как символ в ASCII коде.
отправка занимает примерно 0,1 мсек
Для этого и существуют события по внешним прерываниям.
Вы хотите и и чтоб было всё "безболезненно"... Так не бывает.
Ну дык она же не в 2 раза уплывает
Пт авг 10, 2012 01:23:38
Боюсь, что с такими короткими импульсами от датчиков - нетТо есть Вы настаиваете, что без внешних ИЛИ и внешних прерываний с этой бедой не справиться?
С ИЛИ порты не экономятся, а реализуется один источник прерывания для всех датчиков. В любом случае, по мимо схемы с ИЛИ, Вам нужно будет заводить сигналы от каждого датчика на порты, если Вы хотите знать какой датчик сработал. Ито, если программа успеет выйти на обработчик до того, как импульс закончится.Только с экономией портов за счет ИЛИ.
Пт авг 10, 2012 04:16:04
Пт авг 10, 2012 05:13:17
То есть Вы настаиваете, что без внешних ИЛИ и внешних прерываний с этой бедой не справиться?
Пт авг 10, 2012 09:28:31
Пт авг 10, 2012 09:36:08
Всё зависит от...DerMeister писал(а):То есть Вы настаиваете, что без внешних ИЛИ и внешних прерываний с этой бедой не справиться?
Пт авг 10, 2012 09:42:25
Пт авг 10, 2012 09:59:28
include <avr/io.h>
uint8_t pb, pc, pd;
void collect(uint16_t max_cycles)
{
// Проинициализировали систему выделения перепадов чтением портов
// Раз уж ждём 1-чек на сработке, то до сработок там нули,
// так что заодно и проинициализировали нулями интересующие нас биты.
// А что в не-интересующих, так и не важно
uint8_t tb = PORTB, tc = PORTC, td = PORTD;
PCIFR = 0x03; // сбросили флаги
while (PCIFR == 0) ;
do {
tb |= PORTB;
tc |= PORTC;
td |= PORTD;
} while (--max_cycles);
// Маски интересующих битов всё равно хранятся в PCMSK,
// пусть эта функция и берёт их оттуда.
pb = tb & PCMSK0;
pc = tc & PCMSK1;
pd = td & PCMSK2;
}
collect:
in r20,37-32
in r19,40-32
in r18,43-32
ldi r21,lo8(3)
out 59-32,r21
.L2:
in r21,59-32 ; while (PCIFR == 0) ;
tst r21
breq .L2
.L4: ; do {
in r21,37-32 ; 1
or r20,r21 ; 1
in r21,40-32 ; 1
or r19,r21 ; 1
in r21,43-32 ; 1
or r18,r21 ; 1
sbiw r24,1 ; 2
brne .L4 ; 2 вместе 10 тактов, сам цикл вписывается в 12
; } while (--max_cycles);
lds r24,107
and r24,r20
sts pb,r24
lds r24,108
and r24,r19
sts pc,r24
lds r24,109
and r24,r18
sts pd,r24
ret
Пт авг 10, 2012 10:01:14
BCluster писал(а):Импульсы слишком коротки, можно легко пропустить. Схемы с ИЛИ, а также применение МК с кучей входов способных дернуть прерывание тож сомнительно. Ибо в любом случае надо будет опрашивать порт.
Может удлинить импульсы? Скажем до 1мс, и их уже ловить? Но это внешняя обвязка уже
Пт авг 10, 2012 11:32:13
Пт авг 10, 2012 16:09:54
Сб авг 11, 2012 12:06:21