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

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

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

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

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

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


 
Опции темы

Организация памяти.

Непрочитано 01.12.2016, 13:27  
makakus
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.10.2007
Сообщений: 2,758
Сказал спасибо: 1,100
Сказали Спасибо 1,033 раз(а) в 568 сообщении(ях)
makakus на пути к лучшему
По умолчанию Re: Организация памяти.

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

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


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

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

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


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


ЗЫ: на с++ и пишу но это уже совсем другая история.
worldmasters вне форума  
Непрочитано 01.12.2016, 15:50  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО/МО
Сообщений: 12,290
Сказал спасибо: 11,862
Сказали Спасибо 4,160 раз(а) в 3,178 сообщении(ях)
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  
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  
sat_art
Вид на жительство
 
Регистрация: 27.11.2007
Сообщений: 434
Сказал спасибо: 20
Сказали Спасибо 40 раз(а) в 30 сообщении(ях)
sat_art на пути к лучшему
По умолчанию Re: Организация памяти.

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

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

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

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

while (1) { }

и включить оптимизацию выше -О1.
На ассемблере такую ошибку не сделаешь, она просто не существует.
NewWriter вне форума  
Непрочитано 22.04.2017, 22:04  
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, время: 06:54.


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