Аvrstudio/c#/песочница
26.12.2012, 16:50
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Сообщение от whoim
|
|
вопрос - реально ли есть нужда объявлять переменную volatile, если она объявлена в заголовке файла (не в функциях/процедурах) для того чтобы сделать ее глобальной, неумираемой и использовать из других модулей через extern?
|
Задача квалификатора volatile несколько иная. Объявление переменных в заголовочных файлах как бы нежелательно. Сам программист начинает теряться, где что у него разложено по каким полочкам. volatile говорит компилятору, чтобы он не пытался делать никаких оптимизаций по этой переменной. К областям ее видимости это отношения не имеет.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
26.12.2012, 16:51
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Что такое, вроде ничего, но не видно основного - что символ $ в протоколе NMEA всегда начало !!! сообщения.
Это значит, что получив в любое время этот символ, дальше пойдет сообщение. Перезапустится GPS и будете начало ловить по концу буфера.
|
|
|
|
26.12.2012, 16:51
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Сообщение от whoim
|
|
Оно проще в разы, соответственно прошивка меньше)
|
Насколько меньше?
Сейчас РТОСы на авр в 2-4 кБ укладываются. Это много?
|
|
|
|
26.12.2012, 17:01
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Сообщение от whoim
|
|
_Артём_, подпрограммами я называю и функции и процедуры, просто первые могут возвращать значения. Значит, функция - это подпрограмма умеющая возвращать результат )
|
Гнилое наследие Паскаля! 
Разделение "процедура-функция" в Си отсутствует. И это правильно. Если функция не возвращает значение, а меняет внешнюю по отношению к ней переменную - это ХТО? А если в теле функции зажигаем/гасим СД в ответ на любые внешние изменения (не обязательно в передаваемых параметрах) - это КАК? Функция может вернуть действие, событие - а вы ее за это процедурой? Абидна, да!
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
26.12.2012, 17:09
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Сообщение от whoim
|
Продолжаем песочницу 
Есть typedef struct {} mystruct;
Есть volatile mystruct myvariable;
на extern mystruct myvariable в другом .с файле ругается (хз кто - линкер или компилятор), неизвестный тип
как "расшарить" typedef?
|
|
Код:
|
В h-файле:
#ifndef test_h__
#define test_h__
typedef struct {
unsigned char A;
unsigned char B;
} my_struct_t;
extern my_struct_t my_data;
#endif // test_h__ |
В с-файле:
|
Код:
|
#include "test.h"
my_struct_t my_data; |
В другом с-файле:
|
Код:
|
#include "test.h"
void Func() {
my_data.A=10;
} |
|
|
|
|
Сказали "Спасибо" _Артём_
|
|
|
26.12.2012, 17:14
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Сообщение от Boba_spb
|
|
Что такое, вроде ничего, но не видно основного - что символ $ в протоколе NMEA всегда начало !!! сообщения.
|
Да, можно и $ ловить, но тогда придётся тип строки определять после приёма 0x0D.
В моём примере не хватает приёма суммы и определения типа системы от которой получена строка.
|
|
|
|
26.12.2012, 17:20
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Сообщение от Boba_spb
|
|
$
|
после него еще идет префикс протокола)
и его надо парсить отдельно в предыдущем буфере
Сообщение от _Артём_
|
|
Это много?
|
ну в принципе нет, но мне еще рановато )
прошу помочь по последнему сообщению на предыдущей странице относительно extern typedef struct ))
|
|
|
|
26.12.2012, 17:21
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Сообщение от _Артём_
|
Да, можно и $ ловить, но тогда придётся тип строки определять после приёма 0x0D.
В моём примере не хватает приёма суммы и определения типа системы от которой получена строка.
|
ну вот поэтому я если вижу \r просто переключаю буфер а предыдущий отдаю на парсинг, подпрограмма парсинга работает уже с готовым буфером, там сабстринг поискать можно
|
|
|
|
26.12.2012, 17:37
|
|
|
Гражданин KAZUS.RUN
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Сообщение от whoim
|
|
прошу помочь по последнему сообщению на предыдущей странице относительно extern typedef struct ))
|
Смотрите на прерыдущей странице ( https://kazus.run/forums/showthread....591#post582591)
ЗЫ. Если переменная объявлена как volatile, то продекларирована (declaration) она тоже должна быть volatile.
|
Код:
|
// объявление (лучше располагать в хидере)
extern volatile uint8_t MyVar; // declaration
// объявление - должно быть в с-файле
volatile uint8_t MyVar;// definition |
ЗЫ2. Страничный вид, тут имхо, не очень удобно сделан - древовидный удобнее.
|
|
|
|
Сказали "Спасибо" _Артём_
|
|
|
26.12.2012, 18:02
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 26.11.2011
Адрес: Анапа
Сообщений: 1,618
Сказал спасибо: 284
Сказали Спасибо 129 раз(а) в 111 сообщении(ях)
|
Re: Аvrstudio/c#/песочница
Сообщение от ut1wpr
|
|
Абидна, да!
|
да 
11234
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
Песочница по С
|
RY723 |
Электроника - это просто |
0 |
27.02.2011 14:05 |
Часовой пояс GMT +4, время: 17:48.
|
|