Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
24.01.2008, 12:04
|
|
Прохожий
Регистрация: 28.08.2007
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Как зашить две и более программы на Cи в один МК AVR?
Как в WINAVR организовать роботу нескольких, отдельно работающих, программ водном корпусе МК AVR? Понятно, что нужно создать главную программу. Но как всё это собрать в один проэкт? Помогите новичку. Заранее спасибо.
|
|
|
|
24.01.2008, 12:42
|
|
Вид на жительство
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Keil uVision позволяет организовать ОС. Где-то в журнале (вроде "Схемотехника") была статейка по организации многозадачного режима в 8051.
ИМХО - все это не нужно. Нужно грамотно поставить задачу и составить алгоритм-программу. Все ОСы кушают сильно ресурсы. Да и что означает несколько задач в МК? Несколько процессов? Пожалуйста. Задействуйте максимально прерывания, таймеры, аппаратные ресурсы. Задайте приоритеты, создайте семафоры (флаги) для разграничения доступа, флаги запроса на обработку и готовности (флаги событий). Все. Это будет оптимальное решение под конкретную Вашу задачу. Ведь что значит "многозадачность" для одного МК? Есть таймер, который выделяет интервалы времени процессора на выполнение одной из задач по очереди. При переключении должно выполняться сохранение всех общих ресурсов (регистров, указателей и т.п.). Должно выполняться разграничение области данных и аппаратных ресурсов), короче много часто не нужных вещей.
Удачи.
|
|
|
|
24.01.2008, 13:35
|
|
Прохожий
Регистрация: 28.08.2007
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Побробую более конкретно. Програмы(очень простые)пишу на Си. Новичок. Идёт обучение. Интересует объединение нескольких программ в одну потому что макет один. Компилятор WinAVR. Есть 4 маленьких программи. Хотелось бы нажимая кнопу(или по очереди 4)показывать роботу этих программ.
|
|
|
|
24.01.2008, 13:43
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от tiasur1982
|
Хотелось бы нажимая кнопу(или по очереди 4)показывать роботу этих программ.
|
Это одна программа. Просто меняющая поведение по нажатию кнопки.
"Си для МК" вот
http://www.roboforum.ru/viewtopic.php?f=2&t=1070
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
24.01.2008, 14:11
|
|
Прохожий
Регистрация: 28.08.2007
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Cасибо, но найти конкретику на AVR123 очень тяжело.
|
|
|
|
24.01.2008, 14:14
|
|
Прописка
Регистрация: 11.07.2006
Адрес: Ru, Nsk
Сообщений: 249
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
наверно можно скомпилить несколько программ с разным смещением, и залить их в кристалл. По вектору сброса влепить что то вроде бутлоадера, который будет в завивсимости от кнопки переходить на заданое смещение и вызывать нужную программу...
|
|
|
|
24.01.2008, 14:35
|
|
Прохожий
Регистрация: 28.08.2007
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Спасибо. Хотелось бы получить ответ в виде фрагмента програмного кода. Прогр.А,прогр.В.
Главная прог.
{
Код обращения к А.;
Код обращения к В.;
}
Простите новичка что так конкретно.
Может нужно создать свою библиотеку (файл.h).
|
|
|
|
24.01.2008, 14:55
|
|
Прописка
Регистрация: 11.07.2006
Адрес: Ru, Nsk
Сообщений: 249
Сказал спасибо: 1
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
if (A) (*((void(*)(void))PROG_START_A))();
if (B) (*((void(*)(void))PROG_START_B))();
Где PROG_START_A например 0х200 а PROG_START_B 0x400
По крайней мере в бутлодере от HiTech так сделано. я проверял-работает.
Да, этот код для ПИК-ов, но впринципе должен работать где угодно, т.к. это стандартный С.
|
|
|
|
24.01.2008, 15:28
|
|
Прохожий
Регистрация: 28.08.2007
Сообщений: 6
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Всем спасибо. Буду пробовать. Но по моему в WinAVR оператора PROG_START_ нет.
|
|
|
|
24.01.2008, 15:35
|
|
Вид на жительство
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Пишите программы, только обзываете их не main{} , а prog1{}, prog1{}, .. В "программах" предусматриваете выход по нажатию кнопки. Затем пишите main{} в которой производите поочередный вызов "программ". Перед вызовом нужно дождаться отпускания кнопки. Все.
Удачи.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
ВИТАЯ ПАРА +220В И КАК ЗАШИТЬ ЕЕПРОМ
|
Gladkih |
Микроконтроллеры, АЦП, память и т.д |
26 |
24.12.2008 20:31 |
Разрушение программы в AVR при понижении питания.
|
Andrewg |
Микроконтроллеры, АЦП, память и т.д |
19 |
09.06.2008 14:02 |
Как в AVR Studio для программы на ассемблере указать "к
|
Don_Ambrosio |
Микроконтроллеры, АЦП, память и т.д |
4 |
04.03.2008 14:54 |
как зашить 90s8535 ?
|
arcxxx |
Микроконтроллеры, АЦП, память и т.д |
36 |
30.09.2007 16:43 |
Использовать один EEPROM 24С16А двумя МК.Как состыковать?
|
Zemlyanov |
Микроконтроллеры, АЦП, память и т.д |
12 |
21.09.2007 22:17 |
Часовой пояс GMT +4, время: 12:43.
|
|