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

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

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

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

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

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


Закрытая тема
Опции темы
Непрочитано 01.12.2016, 13:27   #21
makakus
Почётный гражданин KAZUS.RU
 
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Организация памяти.

Сообщение от NewWriter Посмотреть сообщение
Ха. Я этот вариант уже дважды предложил.
Какая разница, копировать все равно придётся.
Так я и согласился , для этого случая. Только прерывания надо запрещать на момент переписывания.
Реклама:
makakus вне форума  
Непрочитано 01.12.2016, 13:38   #22
worldmasters
Гражданин KAZUS.RU
 
Регистрация: 21.02.2007
Сообщений: 553
Сказал спасибо: 38
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
worldmasters на пути к лучшему
По умолчанию Re: Организация памяти.

Сообщение от makakus Посмотреть сообщение
была бы невероятная не было бы ошибок.
Этого просто невозможно. Программ без ошибок не бывает. Куда важнее свести к минимуму возможность ее возникновения.


Сообщение от makakus Посмотреть сообщение
Проще всего так: запрет прерывания от датчика - копирование данных одного датчика во временный буфер - разрешение прерывания - передача - следующий датчик.
Сделал блокировку буфера на запись пока идет передача по спи. А голове сказал реже опрашивать ...
Наверное можно считать вопрос решенным. Спасибо за участие. ))
worldmasters вне форума  
Непрочитано 01.12.2016, 13:53   #23
makakus
Почётный гражданин KAZUS.RU
 
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Организация памяти.

Сообщение от worldmasters Посмотреть сообщение
Этого просто невозможно. Программ без ошибок не бывает.
Вы на С++ пишете, что ли?
На ассемблере программы без ошибок.
makakus вне форума  
Непрочитано 01.12.2016, 14:10   #24
worldmasters
Гражданин KAZUS.RU
 
Регистрация: 21.02.2007
Сообщений: 553
Сказал спасибо: 38
Сказали Спасибо 17 раз(а) в 16 сообщении(ях)
worldmasters на пути к лучшему
По умолчанию Re: Организация памяти.

Сообщение от makakus Посмотреть сообщение
Вы на С++ пишете, что ли?
На ассемблере программы без ошибок.
Спорить не буду. Я понимаю что вы гуру в бесконечной степени овладевший всеми навыками разработки ПО и вы ошибок не вообще не производите. А также можете контролировать всех всевозможные ситуации которые могли бы привести к ошибкам.


За ответы спасибо. Остальные дебаты офтоп.


ЗЫ: на с++ и пишу но это уже совсем другая история.
worldmasters вне форума  
Непрочитано 01.12.2016, 15:50   #25
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,247
Сказал спасибо: 11,166
Сказали Спасибо 3,855 раз(а) в 2,926 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Организация памяти.

worldmasters, собственно там совсем ничего сложного.
1 бит для признака выборки адреса стека с инвертированной логикой для обработки датчиков и вывода в spi. При поступлении запроса на вывод по spi командой xor меняем этот бит.
При обработке датчика командой and проверяем этот бит и по результату грузим начало буфера. Смещения из структуры.
Первые два байта в буфере (добавляются к его длине) - для битовых флагов актуальности.
Каждый обработчик для датчика при обработке делает or нужного бита.
При выводе в spi вычисление адреса нужного буфера ведётся зеркальным алгоритмом. По завершении вывода по spi битовые флаги обнуляются.
Если информация об актуальности данных не нужна, часть с флагами актуальности можно опустить.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Сказали "Спасибо" mike-y-k
worldmasters (02.12.2016)
Непрочитано 22.04.2017, 01:34   #26
kiv69
Прописка
 
Регистрация: 26.02.2010
Адрес: Брест
Сообщений: 241
Сказал спасибо: 10
Сказали Спасибо 41 раз(а) в 31 сообщении(ях)
kiv69 на пути к лучшему
По умолчанию Re: Организация памяти.

Сообщение от makakus Посмотреть сообщение
Вы на С++ пишете, что ли?
На ассемблере программы без ошибок.
Да ну. Невозможно предусмотреть всё. Фактически программист лишает программу только тех ошибок, которые вылезли у него на глазах.
__________________
Program Memory Words Used: 4048
Program Memory Words Free: 48
kiv69 вне форума  
Непрочитано 22.04.2017, 11:46   #27
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 429
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Организация памяти.

worldmasters, Два буфера. Указатель менять только если выполняются два условия, 1. нет обмена с головой (какой то бит, который выставляется в прерывании по спи)
2. прочитан самый медленный датчик (бит выставляется после чтения этого датчика и сбрасывается после смены указателя)
На момент смены указателя запрещать прерывания до проверки этих двух флагов. И разрешить после смены. Само собой смену указателя делать только в основном цикле программы.
Это если я правильно понял, что при считывании самого медленного датчика с более быстрых данные уже получены актуальные.
sat_art вне форума  
Непрочитано 22.04.2017, 15:02   #28
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Организация памяти.

sat_art, сдаётся мне, что ТС уже решил эту проблему, может даже ещё в прошлом году...

Сообщение от makakus Посмотреть сообщение
Вы на С++ пишете, что ли?
На ассемблере программы без ошибок.
Ага, на ассемблере получаются не баги, а фичи
Это же не оптимизирующий компилятор, который может поменять порядок выполнения.
Хотя некоторые хитрые процессоры всё равно могут поменять порядок, но уже при исполнении, а не при компиляции. И придётся вставлять всякие барьеры и на ассемблере, чтобы не получилось слишком много незапланированных фич. Не говоря уже о той же проблеме обеспечения атомарного доступа. И просто логических ошибок в программе (в алгоритме) на ассемблере никто не отменял.
А вообще интересно, какие ошибки можно сделать на C/C++ которых нельзя сделать на ассемблере?...
H4LF вне форума  
Непрочитано 22.04.2017, 20:32   #29
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Организация памяти.

Сообщение от H4LF Посмотреть сообщение
какие ошибки можно сделать на C/C++ которых нельзя сделать на ассемблере?...
На Си:

while (1) { }

и включить оптимизацию выше -О1.
На ассемблере такую ошибку не сделаешь, она просто не существует.
NewWriter вне форума  
Непрочитано 22.04.2017, 22:04   #30
H4LF
Вид на жительство
 
Аватар для H4LF
 
Регистрация: 10.06.2007
Сообщений: 429
Сказал спасибо: 34
Сказали Спасибо 51 раз(а) в 47 сообщении(ях)
H4LF на пути к лучшему
По умолчанию Re: Организация памяти.

Сообщение от NewWriter Посмотреть сообщение
На Си:
while (1) { }
и включить оптимизацию выше -О1.
На ассемблере такую ошибку не сделаешь, она просто не существует.
А в чём, собственно, ошибка? Я не замечаю разницу между -O0 и -O2
В обоих случаях получается:
Код:
08000588	b.n	0x8000588
Да, на ассемблере не существует ошибок, связанных с оптимизатором компилятора, потому что компилятора нет. Но таким оптимизатором приходится работать самому программисту - и вот там - целое поле граблей(вместе с возможностями, конечно же, но ими ещё нужно суметь хоть как-то воспользоваться, не потратив больше 9000 часов времени и не наступив на гейзенграбли). Это если писать хоть сколько нибудь большую программу целиком на ассемблере.
Ну и многие современные микроконтроллеры оптимизированы для C и писать под них на ассемблере как-то не очень удобно.
H4LF вне форума  
Закрытая тема

Закладки


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
МСС18: корректировка файла линкера - выделение памяти urry Микроконтроллеры, АЦП, память и т.д 0 08.12.2009 10:32
А что если...прицепить к МК планку DDR памяти? vchik Микроконтроллеры, АЦП, память и т.д 9 03.06.2008 08:47
Как уменьшить размер памяти под стек? greafuger Микроконтроллеры, АЦП, память и т.д 1 03.04.2008 08:23


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot