Dmitriy40Мне всё это интересно!
К сожалению я пока пытаюсь на С, но если такие колоссальные различия - то конечно перейду на assembler.
Но тут есть принципиальный вопрос. По поводу 13 тиков:
Я вообще и сам хотел сделать так как Вы описываете, через таймер, и даже набросал прогу.
Но внимательно вчитавшись в "мануал" обнаружил - 13 тиков, это преобразование в одиночном режиме, а в режиме Free Runing - там всего 1,5 тика (ну если точно - первое 13,5 тиков, наверное настройка идёт), и каждые 2 тика посылается новое прерывание.
Вот я и хочу в этом режиме работать. Тогда и таймер не нужен. АЦП само им становится. Делитель нужно, разумеется, выставить на максимум, а это 128. И каждые 256 тактов контроллера будет новое прерывание. Тут выигрыш в максимальной частоте дискретизации. Так она у меня будет около 62 kHz, в одиночном режиме частота будет в 6-7 раз меньше.
Что вы думаете по этому поводу?
-- 21.05.2018, 18:43 -- И Intel и Atmel AVR хранят байты с младшего.
Этого я не знал, спасибо!
В пятых, я не вижу смысла в каждом прерывании сначала накапливать сумму, а потом ещё и умножать её на число. В каждом-то зачем?! Разве не достаточно будет домножить на число лишь уже всю накопленную сумму, в главной программе?
Да нет, неизвестно когда она накопится, нужно постоянно контролировать этот результат. Я вообще планировал выполнять эту операцию по таймеру, разумеется намного реже, чем Sample Rate у АЦП, но тут есть проблема - нельзя прекращать подсчёт этой суммы. Если даже в основной программе эта операция будет длительная, то есть подозрение, что она просто вообще никогда не выполнится.
В шестых, ну зачем Вам тут указатель? Только для преобразования типа переменной? Так объявите union с long и двумя int в структуре, получите удобный способ обращаться и к 32 и по отдельности к 16 битам.
Согласен, так будет удобнее.
В седьмых, глобальные переменные - обычно зло. Ни S ни ss Вам снаружи явно не нужны, так объявите их в прерывании, они может даже в регистрах поселятся, всё будет быстрее. И логичнее.
Ага, а как же я потом буду работать с этой суммой если она не глобальная?