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

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

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

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

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

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


 
Опции темы

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

Непрочитано 26.12.2012, 14:03  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Сообщение от whoim Посмотреть сообщение
Я extern переменную вижу из прерывания таймера, но НЕ вижу из main()
почему?
Что значит не вижу? Отладчик или компилятор не видит?
Реклама:
Boba_spb вне форума  
Непрочитано 26.12.2012, 14:05  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Сообщение от whoim Посмотреть сообщение
Boba_spb, да должно.. посмотрим

Тут проблема опять нарисовалась)
Я extern переменную вижу из прерывания таймера, но НЕ вижу из main()
почему?
Видно ли определение переменной, как extern в модуле main?
Определение extern должно быть видно во всех модулях, где применяется эта переменная.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 26.12.2012, 14:08  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

Boba_spb, если переместить блок с проверкой переменной (if(flag==1) в функцию (главного модуля) то все работает. Изменение переменной где то далеко отлавливается.

Если переместить в этом же файле в main while(1) то он не ругается, но и не срабатывает - видимо, автоматом создает новую переменную.

Переменная объявлена "где то там" как volatile uint8_t flag и подключена к главному .c файлу как extern uint8_t flag;

Вопрос перетек плавно в немного другую плоскость. Как бы мне замутить свое прерывание?

Я ставлю некий "флаг" что мгновенно вызывает срабатывание моего вектора. Таймер на минимально возможное значение? Неохота..

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

Сообщение от ut1wpr Посмотреть сообщение
Видно ли определение переменной, как extern в модуле main?
Определение extern должно быть видно во всех модулях, где применяется эта переменная.
ну естественно, я прописываю extern uint8_t flag; прямо в main перед проверкой. Изначально она была прописана так же в extern.h который подключаю первым делом.
whoim вне форума  
Непрочитано 26.12.2012, 14:41  
whoim
Почётный гражданин KAZUS.RUN
 
Аватар для whoim
 
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
whoim на пути к лучшему
По умолчанию Re: Аvrstudio/c#/песочница

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

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

Первый успех
Код:
ISR(USARTC1_RXC_vect)
{
	_gnss_line[_gnss_index][_gnss_pos] = GNSS_read_byte(); //read byte from uart
	//RS485_send_byte(_gnss_line[_gnss_index][_gnss_pos]);

	if(_gnss_line[_gnss_index][_gnss_pos] == '\r') //if end of line
	{
		_gnss_line[_gnss_index][_gnss_pos] = 0x00; //EOF
		_gnss_pos = 0;
		if(_gnss_index == 0) _gnss_index = 1; else _gnss_index = 0;
		gnss_flags |= PIN6_bm; //set flag to start parcing
	}
	else
	{
		if(_gnss_line[_gnss_index][_gnss_pos] != '\n') //\n нам не нужен
			_gnss_pos++;
	}
}
Как видите, тут для буфера строк, пришедших через USART используется
_gnss_line[2][80] двухмерный массив. По признаку окончания строки я меняю индекс и ставлю флаг "есть чо делать", который отлавливается в быстром таймере и сбрасывается, запуская обработку.

Признак окончания строки - \r. Следующий за ним \n надо проигнорить, что пока у меня делается через жопо )

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

На RTOS Вас сподвигнуть ?
Боюсь напугаетесь.

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

Сообщение от whoim Посмотреть сообщение
вопрос - реально ли есть нужда объявлять переменную volatile, если она объявлена в заголовке файла (не в функциях/процедурах) для того чтобы сделать ее глобальной, неумираемой и использовать из других модулей через extern?
Важно не то как объявлена переменная, а где и как она используется. И объявлена она должна быть соответственно.

Если переменная используется в прерываниях и основной программе, то
используется volatile.

Код:
extern volatile uint8_t Var; // в h-файле

Код:
volatile uint8_t Var; // в с-файле

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

Сообщение от Boba_spb Посмотреть сообщение
Боюсь напугаетесь.
зубов боятся.. RTOS от DiHalt первым делом либой закинул в проект, но пока не подключал и не тыкал..

Вариант смотрю, спасибо!
whoim вне форума  
 
Опции темы

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

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

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

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


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


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