AT89C52 нужна помощь
-
azama89
- Новичок
- Сообщения: 8
- Зарегистрирован: 18 май 2013, 22:19
- Репутация: 0
- Контактная информация:
AT89C52 нужна помощь
Нашел схему на AT89C52 хочется написать программу под нее, сразу говорю я в этом чайник нуб, тк по профессии машиностроитель , и в лучшем случае смогу споять плату из собранных элементов с соответствующей схемой.
Зачем ты тогда сюда лезишь ! спросите вы , и по своему будете правы ну уж очень хочется эту сферу освоить (времени на изучение уже к слову потратил не мало и курсам всяким прошелся , но ни прет и все ) , думается если найдутся добрые люди и помогут с моим 1 подобным проектом далее по аналогии станет легче, и буду обходится без помощи...
Опять же зачем?
ну часто по работе решаем простые задачи и заказываем контроллеры тк не знаем как их делать из авр или пиков скажем(почему не берем специальные схемки? да причина все та же скажем покупка 297 и 298 это по сути покупка мини контроллера с тем же самым долгим ожиданием доставки )
А вот решение проблем из подручных средств это самое оно.
Я имею немного понятия о битах регистрах фьюзах , немножко о языке си но в целом для приведенного ниже проекта этих знаний мало...
Вообщем как бы получить хоть мин разъяснения о том как эта процедура проводится с нуля... прошу не судить строго,
Заранее благодарен !
Зачем ты тогда сюда лезишь ! спросите вы , и по своему будете правы ну уж очень хочется эту сферу освоить (времени на изучение уже к слову потратил не мало и курсам всяким прошелся , но ни прет и все ) , думается если найдутся добрые люди и помогут с моим 1 подобным проектом далее по аналогии станет легче, и буду обходится без помощи...
Опять же зачем?
ну часто по работе решаем простые задачи и заказываем контроллеры тк не знаем как их делать из авр или пиков скажем(почему не берем специальные схемки? да причина все та же скажем покупка 297 и 298 это по сути покупка мини контроллера с тем же самым долгим ожиданием доставки )
А вот решение проблем из подручных средств это самое оно.
Я имею немного понятия о битах регистрах фьюзах , немножко о языке си но в целом для приведенного ниже проекта этих знаний мало...
Вообщем как бы получить хоть мин разъяснения о том как эта процедура проводится с нуля... прошу не судить строго,
Заранее благодарен !
- Вложения
-
- step_at89c52_bipolar.pdf
- (11.79 КБ) 1010 скачиваний
-
- step_at89c52_kontroler.pdf
- (31.71 КБ) 1081 скачивание
-
- step_at89c52_unipolar.pdf
- (9.92 КБ) 787 скачиваний
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: AT89C52 нужна помощь
Там, где была схемка, наверное была и готовая прошивка?
А вообще действительно хороший самодельный драйвер ШД сделать очень непросто. Я делал много лет назад, тоже на 8 битном atmel, с микрошагом, на мощных полевых транзисторах.
Драйвер стабильно работал, но оказалось, что дешевые китайские драйверы за $40 показывают значительно лучшие результаты и при этом являются законченным надежным решением в корпусе, с радиатором, удобными клеммами, удобной настройкой и быстродействующей опторазвязкой. И, хотя они сделаны по очень похожей схеме, у них намного более отточнная прошивка микроконтроллеров, чем любая из существующих самодельных.
А вообще действительно хороший самодельный драйвер ШД сделать очень непросто. Я делал много лет назад, тоже на 8 битном atmel, с микрошагом, на мощных полевых транзисторах.
Драйвер стабильно работал, но оказалось, что дешевые китайские драйверы за $40 показывают значительно лучшие результаты и при этом являются законченным надежным решением в корпусе, с радиатором, удобными клеммами, удобной настройкой и быстродействующей опторазвязкой. И, хотя они сделаны по очень похожей схеме, у них намного более отточнная прошивка микроконтроллеров, чем любая из существующих самодельных.
-
azama89
- Новичок
- Сообщения: 8
- Зарегистрирован: 18 май 2013, 22:19
- Репутация: 0
- Контактная информация:
Re: AT89C52 нужна помощь
да прошивки не было не доделал автор что то, на счет китайца не спорю но причину описал выше
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: AT89C52 нужна помощь
Ну, если с нуля...
Я использовал Algorithm Builder
С одной стороны с ним проще разобраться, и есть уроки для самых начинающих,
а с другой стороны - почти нет готовых решений/библиотек... и сейчас, когда решил перейти на STM32, оказалось, что это очень сложно, т.к. Algorithm Builder оказался "тупиковой ветвью", а с новыми микроконтроллерами мне пришлось еще и в Си разбираться.
Но по порядку.
Придется сделать простейший программатор
Придется определиться с конкретной средой программирования
Чтобы написать быстродействующую прошивку, придется писать программу с учетом каждого такта микропроцессора, и прибегать к различным ухищрениям, для оптимизации программы.
Нужно будет разобраться в процессах изменения тока в обмотках ШД
Ну и читать, писать, пробовать...
Я бы не рискнул бы сейчас этим заняться, зная, что у мне не достаточно опыта в этом вопросе (именно в физике изменения тока в обмотках).
Я использовал Algorithm Builder
С одной стороны с ним проще разобраться, и есть уроки для самых начинающих,
а с другой стороны - почти нет готовых решений/библиотек... и сейчас, когда решил перейти на STM32, оказалось, что это очень сложно, т.к. Algorithm Builder оказался "тупиковой ветвью", а с новыми микроконтроллерами мне пришлось еще и в Си разбираться.
Но по порядку.
Придется сделать простейший программатор
Придется определиться с конкретной средой программирования
Чтобы написать быстродействующую прошивку, придется писать программу с учетом каждого такта микропроцессора, и прибегать к различным ухищрениям, для оптимизации программы.
Нужно будет разобраться в процессах изменения тока в обмотках ШД
Ну и читать, писать, пробовать...
Я бы не рискнул бы сейчас этим заняться, зная, что у мне не достаточно опыта в этом вопросе (именно в физике изменения тока в обмотках).
-
azama89
- Новичок
- Сообщения: 8
- Зарегистрирован: 18 май 2013, 22:19
- Репутация: 0
- Контактная информация:
Re: AT89C52 нужна помощь
ну с двигателями мне попроще я понимаю как происходит управление им как достигается микрошаг зачем планые разгон и торможение вообщем шим н мосты и прочее, спасибо за совет видимо всеже придется учить злополучный си по конкретней, ну и честно говоря в физике самих мк авр мне далеко не все понятно... я понимаю что для моих целей желателен мк с таймером и шимом включительно н мостом и прочей белибердой , но смотря на датащит мне пока немного тяжело отличать мк с этими функциями от иных, вообщем чайник че с меня взять...
-
azama89
- Новичок
- Сообщения: 8
- Зарегистрирован: 18 май 2013, 22:19
- Репутация: 0
- Контактная информация:
Re: AT89C52 нужна помощь
Изучением мк занялся и для дальнейших проектов(например лазерный тверд. гравер с функцией рельефа поверхности ну это пока фантастика для меня ) вообщем самое обидное идей много по применению а этот конечный шаг сделать не получается...
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: AT89C52 нужна помощь
На работе на компьютере была картинка Atmega8535, на которой по русски подписаны дополнительные функции выводов.
Поищу.
Ищите какие-нибудь уроки для начинающих изучать.
Описать здесь все слишком сложно.
Поищу.
Ищите какие-нибудь уроки для начинающих изучать.
Описать здесь все слишком сложно.
-
azama89
- Новичок
- Сообщения: 8
- Зарегистрирован: 18 май 2013, 22:19
- Репутация: 0
- Контактная информация:
Re: AT89C52 нужна помощь
да сложно мне даже сформулировать не просто что именно мне требуется, а эта атмега аналог моей?
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: AT89C52 нужна помощь
Да, если не ошибаюсь, то очень похожа, но ваша - уже сильно устаревшая модель, а 8535 довольно популярная и недорогая.azama89 писал(а):да сложно мне даже сформулировать не просто что именно мне требуется, а эта атмега аналог моей?
Вот описание основных выводов, может поможет для начала:
-
azama89
- Новичок
- Сообщения: 8
- Зарегистрирован: 18 май 2013, 22:19
- Репутация: 0
- Контактная информация:
Re: AT89C52 нужна помощь
спасибо большое
начал учить основы электротехники и языка си одновременно тк думаю без них никак в дальнейшем...
у меня к вам 3 вопроса 1 не знаете ли что нибудь о микросхеме а6628 от алегро
и 2 есть ли у вас подобные рисунки на другие мк (те на русском)
ну и последний достал наверное уже но где можно взять исходник те файл который мы подключаем операцией #include на мой мк я что то скачал но не уверен что это оно
начал учить основы электротехники и языка си одновременно тк думаю без них никак в дальнейшем...
у меня к вам 3 вопроса 1 не знаете ли что нибудь о микросхеме а6628 от алегро
и 2 есть ли у вас подобные рисунки на другие мк (те на русском)
ну и последний достал наверное уже но где можно взять исходник те файл который мы подключаем операцией #include на мой мк я что то скачал но не уверен что это оно
- Вложения
-
- at89c52.h
- (2.97 КБ) 1352 скачивания
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: AT89C52 нужна помощь
Нет, других аналогичных картинок точно нет, и не было.
Про A6628 ничего не знаю.
Где брать подключаемые библиотеки тоже не знаю,
Сам сейчас разбираюсь с подобными вопросами, но для других микроконтроллеров, и вопросов у меня у самого вагон и маленькая тележка.
В Algorithm Builder никакие файлы подключать не нужно было, Это и хорошо и плохо одновременно.
Про A6628 ничего не знаю.
Где брать подключаемые библиотеки тоже не знаю,
Сам сейчас разбираюсь с подобными вопросами, но для других микроконтроллеров, и вопросов у меня у самого вагон и маленькая тележка.
В Algorithm Builder никакие файлы подключать не нужно было, Это и хорошо и плохо одновременно.
-
azama89
- Новичок
- Сообщения: 8
- Зарегистрирован: 18 май 2013, 22:19
- Репутация: 0
- Контактная информация:
Re: AT89C52 нужна помощь
ясно ну в инете нашел что по этому мк есть исходник в e KEIL и действительно сегодня посмотрел оно там есть но на ассемблере блин теперь и его учить что ли?! а насчет программатора есть схемка
-
powerman1982
- Новичок
- Сообщения: 6
- Зарегистрирован: 30 май 2013, 07:44
- Репутация: 1
- Контактная информация:
Re: AT89C52 нужна помощь
Сам начал делать станок. Тоже использую 51x совместимый контроллер. Вот несколько советов и граблей на которые наступал. 1. Использовал контроллер от какого то кассового аппарата+внешняя ПЗУ УФ. Не нашел чем стирать. Плюс занято куча выводов, которые могут пригодиться. Поставил флеш-внешнюю память. Правда для программирования использую готовый заводской програматор.Купил контроллер с внутренней памятью флеш. 2. Делал самодельный драйвер биполярного ШД собственной разработки+программа для контроллера формирования последовательности импульсов для управления ШД. Драйвер был без ШИМ. Все работало, но момент естесственно никакой. Хотел собрать драйвер с ШИМ. В итоге купил готовый на микрухе TBxxxx(номер точно не помню). Цена вопроса 1000 руб. А вот прогу написал для МК. Он тока выдает управляющие импульсы на готовый драйвер. Могу поделиться если интересно. Писал в KEIL на языке C. На ассемблере даже не думайте. Потеряете время.
-
azama89
- Новичок
- Сообщения: 8
- Зарегистрирован: 18 май 2013, 22:19
- Репутация: 0
- Контактная информация:
Re: AT89C52 нужна помощь
кидайте на си
- Rafiq
- Мастер
- Сообщения: 1053
- Зарегистрирован: 28 сен 2012, 18:11
- Репутация: 6
- Откуда: Tatarstan Respublikası, Yar Çallı şəhəre
- Контактная информация:
Re: AT89C52 нужна помощь
На самом деле, 8051 совместимые контроллеры выпускаются только из-за наследия тяжелого прошлого - ну как современные процы все еще поддерживают систему команд 8086. В новых разработках их лучше не применять. Недорогой и хороший "радиолюбительский" вариант - AVR, а это как раз Меги и Тини.
Полностью согласен с powerman1982 и michael_yurov - С это наше все!
Если трудно сделать первый шаг - обычно в освоении контроллеров, быстрый старт - это собрать часы. Очень быстрый старт - мигалку светодиодами. Даже на светодиодной мигалке можно освоить работу с прерываниями, а это самое главное.
Вот готовая программа на C, которую я написал для тестирования китайского контроллера (точнее, драйвера ШД):
http://www.cnc-club.ru/forum/viewtopic. ... 187#p39139
Правда, прога наипростейшая, прерывания не юзает, но для той задачи это и не надо было.
Но работа с отдельными битами портов есть.
Полностью согласен с powerman1982 и michael_yurov - С это наше все!
Если трудно сделать первый шаг - обычно в освоении контроллеров, быстрый старт - это собрать часы. Очень быстрый старт - мигалку светодиодами. Даже на светодиодной мигалке можно освоить работу с прерываниями, а это самое главное.
Вот готовая программа на C, которую я написал для тестирования китайского контроллера (точнее, драйвера ШД):
http://www.cnc-club.ru/forum/viewtopic. ... 187#p39139
Правда, прога наипростейшая, прерывания не юзает, но для той задачи это и не надо было.
Но работа с отдельными битами портов есть.
-
powerman1982
- Новичок
- Сообщения: 6
- Зарегистрирован: 30 май 2013, 07:44
- Репутация: 1
- Контактная информация:
Re: AT89C52 нужна помощь
Вот реальная программа получает команды с компа и управляет контроллером ШД по протоколу Step/dir
Код: Выделить всё
# include <Reg52.h>
# define MAX_MSG_LENGHT 8
# define MSG_MOV 1
# define AXIS char
# define X_AXIS 1
# define Y_AXIS 2
# define Z_AXIS 3
# define DIRECTION_FORWARD 0
# define DIRECTION_BACK 1
# define SPEED_UP_STEPS 1800 //steps
# define SPEED_DOWN_STEPS 1800 //steps
# define MAX_PERIOD 2500 // мкс - period in half-step mode ~ 1 об/сек
# define MIN_PERIOD 250 // мкс - period in half-step mode ~ 10 об/сек
sbit stepx = P1^0;
sbit dirx = P1^1;
void Init();
void MsgProc();
void Move(char*);
void Delay(int);
void main()
{
Init();
while(1)
MsgProc();
}
void Init()
{
//Serial port init
SCON = 0x50;//Mode 1
TH1 = 0xFD;//9600 bode(11.059 MHz)
TMOD |= 0x20;//Reload mode timer 1
TR1 = 1;//Timer 1 start
}
void MsgProc()
{
char msg_buf[MAX_MSG_LENGHT];
char i;
while(!RI);
msg_buf[0]=SBUF;
RI=0;
for(i=1;i<((msg_buf[0]&0x1c)>>2);i++)
{
while(!RI);
msg_buf[i]=SBUF;
RI=0;
}
switch((msg_buf[0]&0xE0)>>5)
{
case MSG_MOV:
Move(msg_buf);
break;
}
}
void Move(char* msg_buf)//only x axis
{
//byte0 |c|c|c|s|s|s|x|x| (c - code(001). s- command size(100))
//byte1 |s|s|s|s|s|s|s|s| (Steps HSB)
//byte2 |s|s|s|s|s|s|s|s| (Steps LSB)
//byte3 |a|a|d|x|x|x|x|x| (a- axis. 01 - x, 11 - y, 10 - z. d - direction. 0 - forward, 1 - back)
data unsigned int steps;
data int i,speedup_endpoint,speeddown_startpoint,period_after_speedup;
data int step_to_step_delay;
steps=msg_buf[1];
steps=steps<<8;
steps=steps|(unsigned char)msg_buf[2];
if((msg_buf[3]&0x20)>>5==DIRECTION_FORWARD)
dirx=0;
else
dirx=1;
//Вычислим интервалы разгона-торможения
if(steps<SPEED_UP_STEPS+SPEED_DOWN_STEPS)
speedup_endpoint=speeddown_startpoint=steps/2;
else
{
speedup_endpoint=SPEED_UP_STEPS;
speeddown_startpoint=steps-SPEED_DOWN_STEPS;
}
///////////////////////////////////////
step_to_step_delay=MAX_PERIOD;//мах delay начинаем с минимальных оборотов
for(i=0; i<steps;i++)
{
stepx=1;
Delay(10);//10 тиков таймера~10мкс
stepx=0;
if(i<speedup_endpoint)
step_to_step_delay=period_after_speedup=MAX_PERIOD-((MAX_PERIOD-MIN_PERIOD)/SPEED_UP_STEPS*i);
if(i>=speeddown_startpoint)
step_to_step_delay=period_after_speedup+((MAX_PERIOD-MIN_PERIOD)/SPEED_DOWN_STEPS*(i-speeddown_startpoint));
Delay(step_to_step_delay);
}
}
/*Delay in timer tiks*/
void Delay(int delay)
{
delay=0xfffe-delay;
TH0=(char)(delay>>8);
TL0=(char)delay;
TF0=0;
TMOD |= 0x1;
TR0=1;
while(!TF0);
TR0=0;
}
-
Serge5672
- Новичок
- Сообщения: 2
- Зарегистрирован: 02 дек 2015, 00:32
- Репутация: 0
- Настоящее имя: Сергей
- Контактная информация:
Re: AT89C52 нужна помощь
"На самом деле, 8051 совместимые контроллеры выпускаются только из-за наследия тяжелого прошлого" - по сути бред. все дело в подходе. атмеги по сути шустрее контроллеров 51, 52 серий не в десятки (как можно подумать), а буквально в два-три раза, если учесть убогость ассемблера RISС архитектуры (даже простейшие операции типа сравнения и перехода приходится выполнять несколькими командами). согласен, что для сишника они предпочтительней т.к. не требуется заморачиваться над многими актуальными моментами. если есть желание использовать мк именно 51/52 серии могу дать пару советов: рекомендую использовать at89s8252 (он немного дороже по цене, но имеет определенные преимущества по сравнению с базовыми моделями). желательно иметь доступ к промышленному (т.е. не самодельному программатору). самодельные программаторы с последовательным доступом - однозначно в корзину. собрал порядка пяти подобных девайсов, ни один не заработал(. в оконцовке наткнулся на схему программатора, с параллельным и последовательным доступом, и только после того, как стер микроконтроллер на этом пр-ре в параллельном режиме, смог программировать мк на этом-же пр-ре как в параллельном, так и последовательном режиме. ссылку на программатор дать не могу(. недавно безуспешно пытался его заново найти в сети. помню, что в нем использовал около четырех микросхем ир22 (ир23), программа с исходниками на паскале, в ней основной код выполнен на встроенном в паскаль ассемблере.
-
Serge5672
- Новичок
- Сообщения: 2
- Зарегистрирован: 02 дек 2015, 00:32
- Репутация: 0
- Настоящее имя: Сергей
- Контактная информация:
Re: AT89C52 нужна помощь
такты микроконтроллера для задержек высчитывать мягко говоря не обязательно. есть аппаратные таймеры, которые позволяют точно отмерять любые задержки вплоть до десятков микросекунд.
-
AVK74
- Почётный участник

- Сообщения: 1854
- Зарегистрирован: 02 июл 2013, 09:03
- Репутация: 335
- Откуда: Уфа
- Контактная информация:
Re: AT89C52 нужна помощь
Делать новый проект на 51ой серии это феерично.
К нему еще прийдется делать параллельный программатор (или покупать его тыщь за пять-десять). Внутрисхемного соответственно не будет. Это жопа как неудобно. Любой человек, сделавший хоть пару проектов это вам подтвердит.
Да пофиг во сколько раз атмега шустрее, (ну уж точно раз в шесть) она стоит в несколько раз дешевле. И она намного, намного лучше чем 51я серия. Это вообще просто объективный факт.
И если вы не смогли собрать ICP программатор, это ведь не значит что он плохой. Это значит, что у вас недостаточно квалификации для этого. Развивайтесь, изучайте новое и все получится.
К нему еще прийдется делать параллельный программатор (или покупать его тыщь за пять-десять). Внутрисхемного соответственно не будет. Это жопа как неудобно. Любой человек, сделавший хоть пару проектов это вам подтвердит.
Да пофиг во сколько раз атмега шустрее, (ну уж точно раз в шесть) она стоит в несколько раз дешевле. И она намного, намного лучше чем 51я серия. Это вообще просто объективный факт.
И если вы не смогли собрать ICP программатор, это ведь не значит что он плохой. Это значит, что у вас недостаточно квалификации для этого. Развивайтесь, изучайте новое и все получится.
- N1X
- Мастер
- Сообщения: 3653
- Зарегистрирован: 16 фев 2015, 21:19
- Репутация: 1646
- Настоящее имя: Владимир
- Откуда: Беларусь, Гомель
- Контактная информация:
Re: AT89C52 нужна помощь
Ф топку ATMeg'у, есть STM8 )))