Дата на обновяване:07.02.2014

   ПЧЕЛАР / ЕЛЕКТРОНЧИК - пробвай-сам.bg

     Страница за пчеларство, пчеларски и ел.  разработки, представени като статии

Комютърът на пчелина | Нестандартни кошери | Пчеларски сайтове | Пчеларски инвентар | Размисли и идеи за пчеларството Физиотерапия, Апитерапия, Фитотерапия | Книги, Списания, РС, Интернет |  Пчеларски технологии |  Видове мед  | Пчеларски хумор

Сезонни и месечни задължения на пчеларя | Пчеларски статии на руски език | Малки Oбяви свързани с пчеларството

Информация, която е полезна за начинаещия пчелар | Използване на автомобила ... не само за предвижване - видеоклипове

 

 

 
Информация  от  ОБЛАСТЕН  ПЧЕЛАРСКИ  СЪЮЗ  - ПЛЕВЕН

 

 

Полезна и забавна информация за начинаещи с ел., радио и електронен характер, част от която с приложение и в пчеларството

- Електронни схеми, радиосхеми и устройства удобни за повторение от начинаещи;

- Снимки на фигурки изработени от електрически, разноцветни кабели. Други ел. снимки;

- Детски любителски набори - радиоконструктори за сглобяване на радиоприемници наричани играчки;

- Детекторни радиоприемници, техни модели;

- Сувенирни радиоприемници - играчки, някои от тях предназначени за ученици;

- Модулни набори - радиоконструктори от типа "Електронни кубчета" или "Мозайка" с които се работи без поялник и се захранват с батерии;

Информация за електрически и електронни компоненти и устройства, някои от които приложими и в пчеларството

- Токозахранващи устройства. Стабилизатори, преобразуватели, удвоители на напрежение;

- Импулсни стабилизатори на напрежение. Инвертори на напрежение;

- Устройства за дозареждане и компенсиране на саморазряда на акумулаторни батерии;

- Релета за време. Процедурни часовници. Схеми с ИСх 555;

- Цветомузикални устройства. Светлинни ефекти;

- Схеми за регулиране и поддържане на температура;

- Измерване на топлинния режим на радиоелектронна апаратура. Електронни термометри;

- Мрежови трансформатори. Опростени методики за изчисляването им. Електрожен;

- Зарядни устройства за Ni-Cd акумулатори;

- Устройства за имитиране гласовете на животни и птици. Мелодични звънци;

- Уреди, пробници, индикатори, генератори, тестери, измервателни приставки за любителската лаборатория;

- Металотърсачи, включително такива за откриване на метални предмети и кабели;

- Схеми на устройства, приложими за и около автомобила;

- Схеми на устройства с приложение на оптрони;

- Измерване на относителна влажност. Прецизен влагорегулатор. Поддържане на влажността на въздуха;

- Регулатори и сигнализатори за ниво на течност;

- Регулатори на мощност и на обороти;

- Опростено изчисляване на повърхността на радиатори за полупроводникови елементи;

- Схеми за управление на стъпков двигател, включително четирифазен. Енкодер/Валкодер, някои от които реализирани със стъпков двигател;

- Мощни, широколентови, операционни усилватели. Логаритмичен и антилогаритмичен усилвател;

- Електронни реле - регулатори. Реле - регулатор за лек автомобил. Стенд за проверка на реле - регулатори;

- Променливотоков регулатор. Стабилизатор за променлив ток. Ферорезонансен стабилизатор;

- Електронни схеми и устройства приложими в медицината;

- Няколко светодиодни индикатора. Икономичен светодиод. Светодиодна стрелка;

Практически приложими ел. устройства с учебна цел, реализирани с PIC16F84A, PIC16F88, PIC16F628 ... Arduino и др.

Подобряване със свои ръце възпроизвеждането на звука в дома, офиса, автомобила - subwoofer и други варианти

Радиоелектронни сайтове | Електронни библиотеки

 

 Разработки     Главна (съдържание на статиите)                         
Собствено Търсене

 

 



 

Подключение внешней SRAM 512 Кбайт к Arduino Mega. Часть 3 - ПО, базовые решения (Включване на външна SRAM 512 Кбайт към Arduino Mega. Часть 3 - ПО, базови решения)

 


Часть 1 – Теория
Часть 2 – Схема и подключение


Примечание. Выборки исходного кода, размещенные в тексте описания, использовать в своих проектах не рекомендуется. В конце описания имеется ссылка на архив с исходными кодами.
В заключительной части статьи мы рассмотрим основные моменты в программном обеспечении микроконтроллера при работе с внешней памятью объемом 512 КБайт применительно к среде Arduino. Все материалы доступны для скачивания в разделе загрузок в конце статьи.
Для работы с внешней памятью в интегрированной среде разработки была составлена библиотека функций XMEM (xmem library), которые реализуют основные функции при работе с памятью. При разработке данной библиотеки ставилась цель позволить с помощью существующих функций для работы с памятью (malloc, free, new и delete) организовать работу с внешней памятью.
Следует отметить, что функции содержатся в диапазоне имен с именем xmem, поэтому следует использовать префикс при вызове функций, например, xmem::begin(…). Все функции определены в файле xmem.h, поэтому необходимо включить его в свой проект.


Инсталляция библиотеки в среде Arduino
1. Загрузить zip-файл из раздела загрузок.
2. Загруженный файл распаковать в установочную директорию Arduino, поддиректория Libraries, с созданием в ней новой папки с именем xmem. Например, C:Program Files ->(x86)arduino-0021-> libraries.
3. Запустить среду Arduino и в настройках Tools -> Import Library -> xmem добавьте библиотеку в свой проект.


Функции библиотеки XMEM


Функция void begin(bool heapInXmem_);
Эта функция должна быть вызвана перед тем, как использовать внешнюю память. Она
настраивает регистры микроконтроллера AVR для доступа к внешней памяти и выбирает 0 банк памяти как текущий. Если выбрать значение параметра heapInXmem как истина (true) – рекомендованное значение – то область памяти Heap (динамическая память), используемая функциями malloc, free, new и delete, будет размещена во внешней памяти.
xmem::begin(true);


Функция void setMemoryBank(uint8_t bank_, bool switchHeap_=true);
Эта функция используется для переключения банков памяти. Значение переменной bank_ должно лежать в диапазоне 0 – 7. Если значение параметра switchHeap_ истинна (по умолчанию), то текущее состояние динамической памяти сохраняется до переключения банка памяти, пока не станет активным новый банк памяти. Управление динамической памятью (Heap) подразумевает, что вы можете свободно переключаться между банками, таким образом достигается оптимальное использование внешней памяти.
xmem::begin(true);
// используем память банка 0
xmem::setMemoryBank(1,true);
// используем память банка 1


Функция SelfTestResults selfTest():
Это диагностическая функция, которая может использоваться для проверки корректного функционирования аппаратной части. Она записывает битовый шаблон в каждый байт каждого банка памяти и затем считывает их, это говорит о том, что данную функцию не следует использовать при работе основной программы приложения.
Функция возвращает структуру, которая содержит результат теста. Структура определена следующим образом:
struct SelfTestResults {
bool succeeded;
volatile uint8_t *failedAddress;
uint8_t failedBank;
};

Если тест завершился успешно, без ошибок, значение переменной succeeded будет истина. Если были обнаружены ошибки, то адрес ошибки будет храниться в переменной failedAddress, номер банка - в переменной failedBank.
xmem::SelfTestResults results;
xmem::begin(true);
results=xmem::selfTest();
if(!results.succeeded)
fail();


Базовые решения
Далее мы рассмотрим базовые решения с применением библиотеки xmem, а также методы конфигурирования внешней памяти.


Область Heap по умолчанию, область глобальных данных по умолчанию, непосредственное управление внешней памятью


В этом случае динамическая область памяти и область глобальных данных размещаются во внутренней памяти микроконтроллера, и пользователь непосредственно использует всю внешнюю память, определяя указатели на нее.
#include < xmem.h >
void setup() {
// инициализация памяти
xmem::begin(false);
}
void loop() {
// определяем некоторые указатели в памяти
int *intptr=reinterpret_cast(0x2200);
char *charptr=reinterpret_cast(0x2200);

// храним целочисленные переменные в банке памяти 0
xmem::setMemoryBank(0,false);
intptr[0]=1;
intptr[10000]=2;
intptr[20000]=3;

// храним символьные переменные в банке памяти 1
xmem::setMemoryBank(1,false);
charptr[0]='a';
charptr[10000]='b';
charptr[20000]='c';

delay(1000);
}


Область глобальных данных по умолчанию, Heap во внешней памяти


В этом решении мы перенесли область динамической памяти во внешнюю память. Кроме того, обслуживаются несколько состояний динамической памяти при переключении банков внешней памяти, таким образом, мы имеем 8 независимых областей динамической памяти по 56 КБайт, которые можно эффективно использовать в приложении. Это позволит использовать требовательные к оперативной памяти библиотеки и подпрограммы.
#include < xmem.h >
byte *buffers[8];
void setup() {
uint8_t i;
xmem::begin(true);
// устанавливаем 8 буферов по 50K, один на каждый банк памяти
for(i=0;i<8;i++) {
xmem::setMemoryBank(i,true);
buffers[i]=(byte *)malloc(50000);
}
}

void loop() {
uint16_t i,j;
// заполняем каждый предопределенный банк некоторыми данными
for(i=0;i<8;i++) {
xmem::setMemoryBank(i,true);
for(j=0;j<50000;j++)
buffers[i][j]=0xaa+i;
}
delay(1000);
}


Загрузки:
Библиотека xmem для Arduino, исходные коды базовых решений – скачать


На английском языке: Add 512K of external SRAM to Arduino Mega. Part 3 - Software
Перевод: Vadim по заказу РадиоЛоцман
Add 512K of external SRAM to Arduino Mega. Part 3 - Software
The final part of this series of blog posts will present some open source software that you can use to exploit the new memory space. You can download the library source code from my downloads page.
The xmem library
I’ve put together a collection of functions into a library that you can use to manage access to the extended memory. The aim of the library is to enable the existing memory allocation functions such as malloc, free, new and delete to work with the extended memory.
The xmem functions are contained in a namespace called xmem so you need to prefix your calls to these functions with xmem::, for example xmem::begin(…). The functions are declared in xmem.h, so you must include that header file like this:
#include < xmem.h >
Installation instructions for the Arduino IDE
1. Download the library zip file from my downloads page.
2. Browse to the libraries subdirectory of your Arduino installation. For example, for me that would be C:Program Files (x86)arduino-0021libraries.
3. Unzip the download into that directory. It should create a new folder called xmem with two files in it.
4. Start up the Arduino IDE and use the Tools -> Import Library -> xmem option to add the library to your project
void begin(bool heapInXmem_);
This function must be called before you do anything with the extended memory. It sets up the AVR registers for external memory access and selects bank zero as the current bank.
If you set the heapInXmem_ parameter to true (recommended) then the heap used by malloc et. al. will be located in external memory should you use it.
void setMemoryBank(uint8_t bank_,bool switchHeap_=true);
Use this function to switch to another memory bank. bank_ must be a number between zero and seven. If switchHeap_ is true (the default) then the current state of the heap is saved before the bank is switched and the saved state of the new bank is made active. This heap management means that you can freely switch between banks calling malloc et. al. to make optimum use of the external memory.

xmem::begin(true);
// use the memory ib bank zero
xmem::setMemoryBank(1,true);
// use the memory ib bank one
SelfTestResults selfTest();
This is a diagnostic function that can be used to check that the hardware is functioning correctly. It will write a bit pattern to every byte in every bank and will then read back those bytes to ensure that all is OK. Because it overwrites the entire external memory space you do not want to call it during normal program operation.
This function returns a structure that contains the results of the self test. The structure is defined as follows.
struct SelfTestResults {
bool succeeded;
volatile uint8_t *failedAddress;
uint8_t failedBank;
};
If the self-test succeeded then succeeded is set to true. If it fails it is set to false and the failed memory location is stored in failedAddress together with the failed bank number in failedBank.
xmem::SelfTestResults results;
xmem::begin(true);
results=xmem::selfTest();
if(!results.succeeded)
fail();
Some common scenarios
In this section I’ll outline some common scenarios and how you can configure the external memory to achieve them.
Default heap, default global data, external memory directly controlled
In this scenario the malloc heap and global data remain in internal memory and you take direct control over the external memory by declaring pointers into it.
Memory layout for direct access
Your code could declare pointers into the external memory and use them directly. This is the simplest scenario.
#include < xmem.h >
void setup() {
// initialise the memory
xmem::begin(false);
}
void loop() {
// declare some pointers into external memory
int *intptr=reinterpret_cast(0x2200);
char *charptr=reinterpret_cast(0x2200);

// store integers in bank 0
xmem::setMemoryBank(0,false);
intptr[0]=1;
intptr[10000]=2;
intptr[20000]=3;

// store characters in bank 1
xmem::setMemoryBank(1,false);
charptr[0]='a';
charptr[10000]='b';
charptr[20000]='c';

delay(1000);
}
Default global data, heaps in external memory
In this scenario we move the malloc heap into external memory. Furthermore we maintain separate heap states when switching banks so you effectively have eight independent 56Kb heaps that you can play with.
Memory layout for external heaps
This is a powerful scenario that opens up the possibility of using memory-hungry libraries such as the STL that I ported to the Arduino. Using c-style malloc and free to store data in the external memory.
#include < xmem.h >
byte *buffers[8];
void setup() {
uint8_t i;
xmem::begin(true);
// setuo 8 50K buffers, one per bank
for(i=0;i<8;i++) {
xmem::setMemoryBank(i,true);
buffers[i]=(byte *)malloc(50000);
}
}

void loop() {
uint16_t i,j;
// fill each allocated bank with some data
for(i=0;i<8;i++) {
xmem::setMemoryBank(i,true);
for(j=0;j<50000;j++)
buffers[i][j]=0xaa+i;
}
delay(1000);
}
 


 

 

 

Материалите подготви за сайта:

Иван Парашкевов

e-mail: ivanparst@dir.bg

 

         главна страница                   горе

 

 
 
СТАТИСТИКА
    

Copyright2007  Design by