Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: HELP не хватает мощности проца
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
MicronSys
есть прибор рабочий мелко серийный
Попросили добавить клавиатуру ( работает по SPI 250 кгц)
так как SPI уже занят другим обвесом пришлось писать софт SPI

в нем есть задержка 25 команд NOP ( в цикле конечно) и так 16 раз подрад (грузить надо 16 бит )
клава опрашивается по прерыванию от таймера 40 раз в сек
при этом начали пропадать байты USART (19200 8 1)
не успевает проц 7 Мег.

в основном теле ( main()) клава отказывается работать
переодически шумят леды

Народ прошу помогите у кого есть нароботки по софт SPI
=GM=
Цитата(MicronSys @ Mar 25 2008, 14:46) *
в основном теле ( main()) клава отказывается работать, периодически шумят леды. Народ, прошу, помогите у кого есть наработки по софт SPI

Нельзя ли SS поюзать? Сразу все поблемы бы решили и делать ничего не надо.

Но если нельзя, давайте на ваш код взглянем для начала, как там леды шумят(:-).
Aesthete Animus
Цитата(MicronSys @ Mar 25 2008, 17:46) *
есть прибор рабочий мелко серийный
Попросили добавить клавиатуру ( работает по SPI 250 кгц)
так как SPI уже занят другим обвесом пришлось писать софт SPI

в нем есть задержка 25 команд NOP ( в цикле конечно) и так 16 раз подрад (грузить надо 16 бит )
клава опрашивается по прерыванию от таймера 40 раз в сек
при этом начали пропадать байты USART (19200 8 1)
не успевает проц 7 Мег.

в основном теле ( main()) клава отказывается работать
переодически шумят леды

Народ прошу помогите у кого есть нароботки по софт SPI

Что значит, SPI чем-то занят? А чипселек на что?

Может я конечно чего-то не знаю в Вашей железке и Вам обязательно генерить софтовый SPI. В такой случае, было бы разумно генерить SPI не задержками, а при помощи прерываний таймера.
galjoen
Цитата(MicronSys @ Mar 25 2008, 17:46) *
в нем есть задержка 25 команд NOP ( в цикле конечно) и так 16 раз подрад (грузить надо 16 бит )

Так в эти 25 тактов и надо вместо NOP отпрос USART по флагам вставить и чтение из него в буфер. 25 тактов этож много очень. Да ещё 16 раз подряд. Я тут ну никаких проблем не вижу.
MicronSys
Сам написал сам и отвечаю

Как говорится голово два уха
Совсем забыл что пока прирывание не отработанно другое не выполняется
а у маня как раз их и два было
одно от таймера а второе от USART

кому интересно решил данную праблу так:

uint8_t isTime = false;
. . .
SIGNAL(SIG_OVERFLOW2)
{
. . .
isTime = true;
}
. . .

void Main (void)
{
while(1)
{
if(isTime) { Work_Key();}
}
}


Да кстате кому интересно клава это называется Satel CA-6
bloodden
Цитата(MicronSys @ Mar 25 2008, 17:05) *
Да кстате кому интересно клава это называется Satel CA-6


ОЧЕНЬ интересно. Можете выслать мне инфу по этой клаве?
Заранее спасибо.
MicronSys
Цитата(bloodden @ Mar 25 2008, 19:11) *
ОЧЕНЬ интересно. Можете выслать мне инфу по этой клаве?
Заранее спасибо.


Я думаю многим кто делает сигнализации будет интнресно
учытывая стоимость данного иделия
После обеда выложу все свой наработки по данной тема ЗДЕСЬ sad.gif
GDI
прерывания, вообщето, можно и вложенными сделать, если при входе в прерывание опять разрешить прерывания.
bloodden
Цитата(GDI @ Mar 27 2008, 10:30) *
прерывания, вообщето, можно и вложенными сделать, если при входе в прерывание опять разрешить прерывания.

И очень аккуратно потом следить за ними.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.