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

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

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

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

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

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

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Ответ
Опции темы
Непрочитано 17.06.2009, 11:19   #131
kos_ua
Прописка
 
Регистрация: 07.07.2005
Сообщений: 111
Сказал спасибо: 2
Сказали Спасибо 12 раз(а) в 7 сообщении(ях)
kos_ua на пути к лучшему
По умолчанию

Сообщение от Mixer79
не чем порадовать пока не могу. Вчера попытался запустить схему в протеусе.
Нарисовал схему в PonyPLC, собрал схему в протеусе. Основной проблемой стало получение hex файла
Ну, вот не срослось у меня с WINAVR. Постоянно до этого пользовался CodeVision. А там и синтаксис другой, да и контроллер я взял ATMega32 (есть под рукой), чтоб потом можно было на реальном железе запустить. Короче, времени не хватило. Сегодня продолжу.
Конечно из сишного файла надо получить нех фаил.
Я поставил SDCC компилятор.
В документации к SDCC написано следующее:
The current version targets Intel MCS51 based Microprocessors(8031, 8032, 8051, 8052, etc.), Dallas DS80C390 variants, Freescale (formerly Motorola) HC08 and Zilog Z80 based MCUs.
****It can be retargeted for other microprocessors, support for Microchip PIC, Atmel AVR is under development****.

Чтобы перенастроить прогу на АВР надо изменить ее в следующих местах:
1.
//*******Инициализация регистров********
TMOD = 0x01; // Внутренние таймера 16 разрядные
TR0=1; // Включит таймер 0
ET0=1; // Разрешить прерывание от таймера 0
EA=1; // Резрешить все прерывания

2.
//--------Прерывание по таймеру T0--------
void TIMER1_INT(void) interrupt 1
{
MByte++;
}
3.
#include ‹at89x52.h›

4.
void IO_Input(void)
{
iI[0]=P0;
iI[1]=P1;
}


void IO_Output(void)
{
P2=iQ[0];
P3=iQ[1];
}

Вот пожалуй и все)).
Надо будет эти моменты в программе автоматизировать.

и далее что касается адаптации данного продукта по АВР или ПИК.

Дайте мне плз. компилятор под эти кристалы который умеет запускаться из командной строки.

Например для SDCC коммандная строка выглядит следующим образом:
SDCC --model-large --use-stdout›D:UsersPLCDemo1error.txt -o D:UsersPLCDemo1 D:UsersPLCDemo1Demo2.c

в этом случае я смогу адаптировать прогу под другие семейства микроконтроллеров.

Как я выше писал разницу между семействами я вынесу в отдельные файлы где можно будет их редактировать, а в проге выбирать нужное семейство.

Далее....загрузка кристала:
по семейство 8051 есть загрузчик который работает через длл или коммандную строку....т.е. я его использую для загрузки нех файла в кристал непосредственно из PonyPLC.

И последнее...что-то мне перестало нравиться название PonyPLC....может что-то поинтересней придумаем?)
Реклама:

Последний раз редактировалось mike-y-k; 14.04.2022 в 23:01. Причина: 6.6
kos_ua вне форума   Ответить с цитированием
Непрочитано 17.06.2009, 14:28   #132
Mixer79
Частый гость
 
Регистрация: 22.08.2007
Сообщений: 43
Сказал спасибо: 3
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Mixer79 на пути к лучшему
По умолчанию

посмотри вот здесь http://avrbegin.front.ru/for_read/WINAVR.htm
Mixer79 вне форума   Ответить с цитированием
Непрочитано 18.06.2009, 13:39   #133
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от kos_ua
и далее что касается адаптации данного продукта по АВР или ПИК. Дайте мне плз. компилятор под эти кристалы который умеет запускаться из командной строки.
HiTech PICC 9.60PL3 компилятор для PIC16 семейства. Есть ДЕМО версия и студенческая. В Демо версии отключается оптимизатор, в студенческой по моему просто ограничение на 45 дней, а потом отключается оптимизатор. Есть и возможность его полечить. Компилятор можно выслать или выложить.. и есть ссылки на КАЗУС. Немного рання версия поставляется со средой MPLAB и уже сидит в инсталляторе.

Вот что генерирует MPLAB (среда разработки под PIC) при компиляции HiTech PICC 9.60PL3 компилятором:

Executing: "D:Program FilesMicrochipPICC960inpicc.exe" --pass1 "V:ControlersNuts Starmain.c" -q --chip=16F873A -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Executing: "D:Program FilesMicrochipPICC960inpicc.exe" -onut_star.cof -mnut_star.map --summary=default --output=default main.p1 --chip=16F873A -P --runtime=default --opt=default -D__DEBUG=1 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"

-onut_star.cof по идее генерация COF файла (для отладчика)
-mnut_star.map по идее генерация MAP файла (карта распределение памяти)
--chip=16F873A тип кристалла
--asmlist по идее включение генерации листинга ассемблера
--warnformat=Warning [%n] %f; %l.%c %s генерация предупреждений
--errformat=Error [%n] %f; %l.%c %s генерация сообщений об ошибках
остальные ключи:
--P
--runtime=default
--opt=default
-D__DEBUG=1
--summary=default
--output=default
Я недавно только начал с Си работать, думаю более опытные товарищи смогут пояснить все ключи.. или будем разбиратся с даташитами по HtiTech, какие ключи чем управляют. Я пока туда не забирался.. не было надобности..

Для AVR посмотрю что как генерит IAR или ипочитаю в даташите. Думаю там так же можно из КОМ строки управлять.

Сообщение от kos_ua
Как я выше писал разницу между семействами я вынесу в отдельные файлы где можно будет их редактировать, а в проге выбирать нужное семейство.
Там будет не только разница в назначении портов. Может быть будет разница и в логике работы. У разных семейств могут по разному отрганизованы подтяжки к +U... это нужно учитывать, а лучше не использовать.
Лучше это обсуждать что бы исключить зависимость от семейств.

Сообщение от kos_ua
Далее....загрузка кристала:
по семейство 8051 есть загрузчик который работает через длл или коммандную строку....т.е. я его использую для загрузки нех файла в кристал непосредственно из PonyPLC.
Это BOOTLOADER? то есть в кристалле уже сидит какой то код и грузит в програмную память программу?
для PIC есть в среде MPLAB BOTLOADER. Или использовать программатор.
picavr вне форума   Ответить с цитированием
Непрочитано 18.06.2009, 13:54   #134
kos_ua
Прописка
 
Регистрация: 07.07.2005
Сообщений: 111
Сказал спасибо: 2
Сказали Спасибо 12 раз(а) в 7 сообщении(ях)
kos_ua на пути к лучшему
По умолчанию

Нет обычный загрузчик...ISP
kos_ua вне форума   Ответить с цитированием
Непрочитано 18.06.2009, 14:14   #135
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от kos_ua
Чтобы перенастроить прогу на АВР надо изменить ее в следующих местах:
Надо будет эти моменты в программе автоматизировать.
По моему нужно сделать немного иначе:
В вашей программе вызывать функцию инициализации таймеров, портов... а в файле конкретного контролера делать эту инициализацию... ПРИМЕР:

в вашей программе:
#define Fclc 8000000 //указать частоту контролера
() INIT_TIMER0(100);//инициализация таймера0 с периодом 100 микросекунд

() INIT_TIMER1(10000);//инициализация таймера1 с периодом 10000 микросекунд

вектор вызова прерывания:
VECTOR_INT_TMR0;//заменяется на синтаксис для нужного компилятора в файле определений контролера

вектор вызова прерывания:
VECTOR_INT_TMR1;//заменяется на синтаксис для нужного компилятора в файле определений контролера

разрешение прерываний общих
GIE();//функция в которой разрешаются общие прпывания

разрешение прерываний таймера
SET_INT_OVF_TMR0();//функция в которой разрешаются прерывания таймера 1

разрешение прерываний таймера
SET_INT_OVF_TMR1();//функция в которой разрешаются прерывания таймера 1


А в фале для AVR:
#define VECTOR_INT_TMR0 #pragma vector=INT0_vect //замена вектора прерывания таймера1 для IAR AVR

#define VECTOR_INT_TMR1 #pragma vector=INT1_vect //замена вектора прерывания таймера1 для IAR AVR

(void)GIE(void);{//разрешение общих прерываний
GIE=1
}

void SET_INT_OVF_TMR0 (void){//разрешение прерывания переполнения таймера1
#define tmr1intovf (1‹‹TOV0) //прерывание по переполнению
TIMSK = TIMSK | (tmr0intovf);}

void SET_INT_OVF_TMR1 (void){//разрешение прерывания переполнения таймера1
#define tmr1intovf (1‹‹TOV1) //прерывание по переполнению
TIMSK = TIMSK | (tmr1intovf);}

(void) INIT_TIMER0(int period);//здесь функция расчёта и загрузки предделителя и таймера 0 значениями для получения периода в зависмости от Fclc
и значения period..
(void) INIT_TIMER1(int period);//здесь функция расчёта и загрузки предделителя и таймера 1 значениями для получения периода в зависмости от Fclc
и значения period..

для IAR AVR это у меня уже написано. И так расписать для каждого семейства контроллеров.


Сообщение от kos_ua
Нет обычный загрузчик...ISP
под PIC и под AVR есть простенькие программаторы и для USB.
picavr вне форума   Ответить с цитированием
Непрочитано 18.06.2009, 14:24   #136
kos_ua
Прописка
 
Регистрация: 07.07.2005
Сообщений: 111
Сказал спасибо: 2
Сказали Спасибо 12 раз(а) в 7 сообщении(ях)
kos_ua на пути к лучшему
По умолчанию

Да конечно....тока рутинная эта работа....не так быстро)....
Вчера сел вечерком к носу прикинул и наваял осцилограф....думаю будет полезен(а может и нет)...и пару функций добавил.

Идея с осцилографом пришла на фоне того что подхожу к написанию функций ПИД регулятора....интересно было бы посмотреть на работу последнего на графике)))
Как-ниубдь выложу новую версию софта)
kos_ua вне форума   Ответить с цитированием
Непрочитано 18.06.2009, 15:03   #137
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию

Сообщение от kos_ua
Да конечно....тока рутинная эта работа....не так быстро)....
Но работу по созданию файлов определений для МК PIC
и AVR можем сделать и мы, для 51 серии я например не смогу, я с ними не работал. Если кто то может это сделать, пусть сделает. Просто нужно договорится об одних и тех же именах и форматах вызова функций.

У меня уже для IAR AVR написано подобное, написано для своих нужд, что бы удобнее было писать свои программы, так что я переработаю свои исходники под требуемое... Потом для WINAVR нужно будет немного это переделать, кто знает WINAVR сделает я думаю...

Для PIC так же смогу это сделать, уже собирался писать то же смое, просто под AVR начал раньше Си применять.
picavr вне форума   Ответить с цитированием
Непрочитано 18.06.2009, 15:16   #138
kos_ua
Прописка
 
Регистрация: 07.07.2005
Сообщений: 111
Сказал спасибо: 2
Сказали Спасибо 12 раз(а) в 7 сообщении(ях)
kos_ua на пути к лучшему
По умолчанию

Сообщение от picavr
Сообщение от kos_ua
Да конечно....тока рутинная эта работа....не так быстро)....
Но работу по созданию файлов определений для МК PIC
и AVR можем сделать и мы, для 51 серии я например не смогу, я с ними не работал. Если кто то может это сделать, пусть сделает. Просто нужно договорится об одних и тех же именах и форматах вызова функций.

У меня уже для IAR AVR написано подобное, написано для своих нужд, что бы удобнее было писать свои программы, так что я переработаю свои исходники под требуемое... Потом для WINAVR нужно будет немного это переделать, кто знает WINAVR сделает я думаю...

Для PIC так же смогу это сделать, уже собирался писать то же смое, просто под AVR начал раньше Си применять.
ОК...договорились..
Кстати вчера еще провел эксперимент....нарисовал 1 таймер с обвязкой(дискретный вход для запуска, integer для задания времени и выход дискретный)....все это скопировал 150 раз....получилось весело.

а теперь резалт:
размер кода 15кБ
размер в области памяти 2.5 кб
Компилятор SDCC скомпилил это все без ошибок.
Keil 8.05 тоже скомпилил это все без ошибок.

Дебагер Keil 8.05 отработал правильно. Время выполнения одного прохода программы составило 30мс на кварце 22Мгц(кристал 8051).
А вот Proteus с подложенным hex файлом такую фигню начал нести)))...
В реальное железо не заливал....

Вот так....
Буду дальше изучать и ловить баги...

Вот продолжения софта.
Добавил пару новых функций и осцилограф(пока что простой без наворотов)

Прикрепленный файл: 8970379.rar

Последний раз редактировалось mike-y-k; 14.04.2022 в 23:02. Причина: 6.6
kos_ua вне форума   Ответить с цитированием
Непрочитано 18.06.2009, 17:41   #139
Mixer79
Частый гость
 
Регистрация: 22.08.2007
Сообщений: 43
Сказал спасибо: 3
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
Mixer79 на пути к лучшему
По умолчанию

Да,результаты как всегда поражают.
С осцилографом не все так очевидно без описания, но разобрался
Не понятно почему логическую 1, показывает как -1?
И окно осцилографа лучше сделать внутренним. Теряется при открытии PonyPLC на все окно. Для перехода между окном осцилографа и редактора, приходится нажимать на кнопку меню.
Или сделать его отдельной вкладкой при вызове, рядом с Task'ами.
Mixer79 вне форума   Ответить с цитированием
Непрочитано 18.06.2009, 18:34   #140
kos_ua
Прописка
 
Регистрация: 07.07.2005
Сообщений: 111
Сказал спасибо: 2
Сказали Спасибо 12 раз(а) в 7 сообщении(ях)
kos_ua на пути к лучшему
По умолчанию

Сообщение от Mixer79
Да,результаты как всегда поражают.
С осцилографом не все так очевидно без описания, но разобрался
Не понятно почему логическую 1, показывает как -1?
И окно осцилографа лучше сделать внутренним. Теряется при открытии PonyPLC на все окно. Для перехода между окном осцилографа и редактора, приходится нажимать на кнопку меню.
Или сделать его отдельной вкладкой при вызове, рядом с Task'ами.
-1 видел....сцуко делфи так интерпретирует логический сигнал.....все единицы.....а последний бит как известно это знак числа....фигня поборим)
kos_ua вне форума   Ответить с цитированием
Ответ

Закладки


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Языки программирования IEC-6113-3(FBD, LD, IL и т.) VladG Информация по радиокомпонентам 0 18.08.2009 08:57
Ищу ПЛК (промышленный контроллер) c RS-232 и RS-485... LazarenkoAS2 Делимся опытом 44 19.10.2008 20:27
Графический ЖК индикатор на базе LC7981 Bear-ku Микроконтроллеры, АЦП, память и т.д 1 24.07.2008 08:29
Создаем лабораторный БП с цифровым управлением masterpc Источники питания и свет 60 02.04.2007 06:24
осциллограф на базе ПК SlavaS Измерительное оборудование 61 09.06.2005 20:04


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


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