Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

Аvrstudio/c#/песочница

Непрочитано 26.12.2012, 15:51  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Boba_spb,
Цитата:
if( конец пакета RMC)
{
Prog[0]=ParsRMC;
}
if( конец пакета GGA)
Я не могу просто так в обработчике приема определить что за пакет, придется нагружать его пусть простым но парсингом

Но это ладно. Пытаюсь понять смысл вертушки.

У нас создается 8 процедур "ничегонеделанья" и исполняются в цикле. Ну а по приходу конца строки мы "некоторым" (каким надо) переназначаем ничегонеделанье на прописанное в нужной процедуре..

Еси я правильно понял - очень интересно, не подозревал что так можно
Реклама:
whoim вне форума  
Непрочитано 26.12.2012, 15:52  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

void (*Prog[CNT_PROC])(); - получается, массив указателей на процедуры (подпрограммы - привыкаю говорить правильно)

сейчас "разбор полетов" и парсинг всего что надо идет в одной процедуре..
Цитата:
if( (memcmp(_gnss_line[_index], "$GPRMC", 6) == 0 || memcmp(_gnss_line[_index], "$GNRMC", 6) == 0 ) && gnss_verify(_index) )
например. Какой будет выигрыш? Откажемся от таймера? Он все равно понадобится в будущем.
Сейчас у меня в main() полностью пусто, так нравится..

Вместо флага заведем указатель - тоже особо смысла не имеет. Но сам подход конечно хорош, что он еще может дать? какие плюсы?

Последний раз редактировалось whoim; 26.12.2012 в 15:55.
whoim вне форума  
Непрочитано 26.12.2012, 16:01  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Сообщение от whoim Посмотреть сообщение
void (*Prog[CNT_PROC])(); - получается, массив указателей на процедуры (подпрограммы - привыкаю говорить правильно)
указателей на функции
_Артём_ вне форума  
Непрочитано 26.12.2012, 16:05  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

_Артём_, подпрограммами я называю и функции и процедуры, просто первые могут возвращать значения. Значит, функция - это подпрограмма умеющая возвращать результат )
whoim вне форума  
Непрочитано 26.12.2012, 16:06  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Сообщение от whoim Посмотреть сообщение
RTOS от DiHalt
Зачем такая экзотика? Не лучше ли взять что-либо более стандартное (FreeFtos, ucOs2, chibios, scmrtos ect)?
_Артём_ вне форума  
Непрочитано 26.12.2012, 16:30  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Если чуток "вертушку" подправить, то и приоритет выполнения появится. Т.е. индекс Prog[i] будет определять приорит.

Ну, а если этого не хватит, то лучше RTOS пользовать.

Как только прибавите функций - станет труднее без параллельных процессов.
Boba_spb вне форума  
Непрочитано 26.12.2012, 16:31  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Сообщение от whoim Посмотреть сообщение
if( (memcmp(_gnss_line[_index], "$GPRMC", 6) == 0 || memcmp(_gnss_line[_index], "$GNRMC", 6) == 0 ) && gnss_verify(_index) )
Как-то не очень это - использовать memcmp в прерывании.
Обычно что-то такое делаю:
Код:
struct RmcRxData_t {
	unsigned char State;
	unsigned char Buf[128];
	unsigned char Length;
	unsigned char Received;
} RmcRxData;

const unsigned char RmcHead[]="RMC";
unsigned char RmcReceived(unsigned char new_byte)
{
	switch (RmcRxData.State) {
	case 0:
		if (new_byte==RmcHead[RmcRxData.State]) {
			RmcRxData.State++;
			RmcRxData.Length=RmcRxData.State;
		}
		else
			RmcRxData.State=0;
		break;
	case 3:
		RmcRxData.Buf[RmcRxData.Length++];
		if (new_byte==0x0D) {
			RmcRxData.Received=1;
			RmcRxData.State++;
		}
		else {
			if (RmcRxData.Length›=sizeof(RmcRxData.Buf))
				RmcRxData.State=0;
		}
		break;
	case 4:
		break;
	}

}
_Артём_ вне форума  
Сказали "Спасибо" _Артём_
whoim (26.12.2012)
Непрочитано 26.12.2012, 16:39  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Сообщение от _Артём_ Посмотреть сообщение
Зачем такая экзотика? Не лучше ли взять что-либо более стандартное (FreeFtos, ucOs2, chibios, scmrtos ect)?
Оно проще в разы, соответственно прошивка меньше)
whoim вне форума  
Непрочитано 26.12.2012, 16:40  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Сообщение от Boba_spb Посмотреть сообщение
Как только прибавите функций - станет труднее без параллельных процессов.
да, скоро прийду к этому..
whoim вне форума  
Непрочитано 26.12.2012, 16:44  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Продолжаем песочницу

Есть typedef struct {} mystruct;
Есть volatile mystruct myvariable;

на extern mystruct myvariable в другом .с файле ругается (хз кто - линкер или компилятор), неизвестный тип
как "расшарить" typedef?
whoim вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Песочница по С RY723 Электроника - это просто 0 27.02.2011 14:05


Часовой пояс GMT +4, время: 00:01.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.