AT89C52 нужна помощь

Контроллеры, драйверы, датчики, управляющие устройства.
azama89
Новичок
Сообщения: 8
Зарегистрирован: 18 май 2013, 22:19
Репутация: 0
Контактная информация:

AT89C52 нужна помощь

Сообщение azama89 »

Нашел схему на AT89C52 хочется написать программу под нее, сразу говорю я в этом чайник нуб, тк по профессии машиностроитель , и в лучшем случае смогу споять плату из собранных элементов с соответствующей схемой.
Зачем ты тогда сюда лезишь ! спросите вы , и по своему будете правы ну уж очень хочется эту сферу освоить (времени на изучение уже к слову потратил не мало и курсам всяким прошелся , но ни прет и все ) , думается если найдутся добрые люди и помогут с моим 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 нужна помощь

Сообщение michael-yurov »

Там, где была схемка, наверное была и готовая прошивка?
А вообще действительно хороший самодельный драйвер ШД сделать очень непросто. Я делал много лет назад, тоже на 8 битном atmel, с микрошагом, на мощных полевых транзисторах.
Драйвер стабильно работал, но оказалось, что дешевые китайские драйверы за $40 показывают значительно лучшие результаты и при этом являются законченным надежным решением в корпусе, с радиатором, удобными клеммами, удобной настройкой и быстродействующей опторазвязкой. И, хотя они сделаны по очень похожей схеме, у них намного более отточнная прошивка микроконтроллеров, чем любая из существующих самодельных.
azama89
Новичок
Сообщения: 8
Зарегистрирован: 18 май 2013, 22:19
Репутация: 0
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение azama89 »

да прошивки не было не доделал автор что то, на счет китайца не спорю но причину описал выше
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение michael-yurov »

Ну, если с нуля...
Я использовал Algorithm Builder
С одной стороны с ним проще разобраться, и есть уроки для самых начинающих,
а с другой стороны - почти нет готовых решений/библиотек... и сейчас, когда решил перейти на STM32, оказалось, что это очень сложно, т.к. Algorithm Builder оказался "тупиковой ветвью", а с новыми микроконтроллерами мне пришлось еще и в Си разбираться.

Но по порядку.
Придется сделать простейший программатор
Придется определиться с конкретной средой программирования
Чтобы написать быстродействующую прошивку, придется писать программу с учетом каждого такта микропроцессора, и прибегать к различным ухищрениям, для оптимизации программы.
Нужно будет разобраться в процессах изменения тока в обмотках ШД
Ну и читать, писать, пробовать...
Я бы не рискнул бы сейчас этим заняться, зная, что у мне не достаточно опыта в этом вопросе (именно в физике изменения тока в обмотках).
azama89
Новичок
Сообщения: 8
Зарегистрирован: 18 май 2013, 22:19
Репутация: 0
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение azama89 »

ну с двигателями мне попроще я понимаю как происходит управление им как достигается микрошаг зачем планые разгон и торможение вообщем шим н мосты и прочее, спасибо за совет видимо всеже придется учить злополучный си по конкретней, ну и честно говоря в физике самих мк авр мне далеко не все понятно... я понимаю что для моих целей желателен мк с таймером и шимом включительно н мостом и прочей белибердой , но смотря на датащит мне пока немного тяжело отличать мк с этими функциями от иных, вообщем чайник че с меня взять...
azama89
Новичок
Сообщения: 8
Зарегистрирован: 18 май 2013, 22:19
Репутация: 0
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение azama89 »

Изучением мк занялся и для дальнейших проектов(например лазерный тверд. гравер с функцией рельефа поверхности ну это пока фантастика для меня ) вообщем самое обидное идей много по применению а этот конечный шаг сделать не получается...
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение michael-yurov »

На работе на компьютере была картинка Atmega8535, на которой по русски подписаны дополнительные функции выводов.
Поищу.
Ищите какие-нибудь уроки для начинающих изучать.
Описать здесь все слишком сложно.
azama89
Новичок
Сообщения: 8
Зарегистрирован: 18 май 2013, 22:19
Репутация: 0
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение azama89 »

да сложно мне даже сформулировать не просто что именно мне требуется, а эта атмега аналог моей?
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение michael-yurov »

azama89 писал(а):да сложно мне даже сформулировать не просто что именно мне требуется, а эта атмега аналог моей?
Да, если не ошибаюсь, то очень похожа, но ваша - уже сильно устаревшая модель, а 8535 довольно популярная и недорогая.

Вот описание основных выводов, может поможет для начала:
8535.jpg (6351 просмотр) <a class='original' href='./download/file.php?id=14730&mode=view' target=_blank>Загрузить оригинал (300.38 КБ)</a>
8535_mirrored.jpg (6351 просмотр) <a class='original' href='./download/file.php?id=14731&mode=view' target=_blank>Загрузить оригинал (431.38 КБ)</a>
azama89
Новичок
Сообщения: 8
Зарегистрирован: 18 май 2013, 22:19
Репутация: 0
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение azama89 »

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

Re: AT89C52 нужна помощь

Сообщение michael-yurov »

Нет, других аналогичных картинок точно нет, и не было.
Про A6628 ничего не знаю.
Где брать подключаемые библиотеки тоже не знаю,
Сам сейчас разбираюсь с подобными вопросами, но для других микроконтроллеров, и вопросов у меня у самого вагон и маленькая тележка.
В Algorithm Builder никакие файлы подключать не нужно было, Это и хорошо и плохо одновременно.
azama89
Новичок
Сообщения: 8
Зарегистрирован: 18 май 2013, 22:19
Репутация: 0
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение azama89 »

ясно ну в инете нашел что по этому мк есть исходник в e KEIL и действительно сегодня посмотрел оно там есть но на ассемблере блин теперь и его учить что ли?! а насчет программатора есть схемка
powerman1982
Новичок
Сообщения: 6
Зарегистрирован: 30 май 2013, 07:44
Репутация: 1
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение powerman1982 »

Сам начал делать станок. Тоже использую 51x совместимый контроллер. Вот несколько советов и граблей на которые наступал. 1. Использовал контроллер от какого то кассового аппарата+внешняя ПЗУ УФ. Не нашел чем стирать. Плюс занято куча выводов, которые могут пригодиться. Поставил флеш-внешнюю память. Правда для программирования использую готовый заводской програматор.Купил контроллер с внутренней памятью флеш. 2. Делал самодельный драйвер биполярного ШД собственной разработки+программа для контроллера формирования последовательности импульсов для управления ШД. Драйвер был без ШИМ. Все работало, но момент естесственно никакой. Хотел собрать драйвер с ШИМ. В итоге купил готовый на микрухе TBxxxx(номер точно не помню). Цена вопроса 1000 руб. А вот прогу написал для МК. Он тока выдает управляющие импульсы на готовый драйвер. Могу поделиться если интересно. Писал в KEIL на языке C. На ассемблере даже не думайте. Потеряете время.
azama89
Новичок
Сообщения: 8
Зарегистрирован: 18 май 2013, 22:19
Репутация: 0
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение azama89 »

кидайте на си
Аватара пользователя
Rafiq
Мастер
Сообщения: 1053
Зарегистрирован: 28 сен 2012, 18:11
Репутация: 6
Откуда: Tatarstan Respublikası, Yar Çallı şəhəre
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение Rafiq »

На самом деле, 8051 совместимые контроллеры выпускаются только из-за наследия тяжелого прошлого - ну как современные процы все еще поддерживают систему команд 8086. В новых разработках их лучше не применять. Недорогой и хороший "радиолюбительский" вариант - AVR, а это как раз Меги и Тини.

Полностью согласен с powerman1982 и michael_yurov - С это наше все!

Если трудно сделать первый шаг - обычно в освоении контроллеров, быстрый старт - это собрать часы. Очень быстрый старт - мигалку светодиодами. Даже на светодиодной мигалке можно освоить работу с прерываниями, а это самое главное.

Вот готовая программа на C, которую я написал для тестирования китайского контроллера (точнее, драйвера ШД):
http://www.cnc-club.ru/forum/viewtopic. ... 187#p39139
Правда, прога наипростейшая, прерывания не юзает, но для той задачи это и не надо было.
Но работа с отдельными битами портов есть.
powerman1982
Новичок
Сообщения: 6
Зарегистрирован: 30 май 2013, 07:44
Репутация: 1
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение powerman1982 »

Вот реальная программа получает команды с компа и управляет контроллером ШД по протоколу 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 нужна помощь

Сообщение Serge5672 »

"На самом деле, 8051 совместимые контроллеры выпускаются только из-за наследия тяжелого прошлого" - по сути бред. все дело в подходе. атмеги по сути шустрее контроллеров 51, 52 серий не в десятки (как можно подумать), а буквально в два-три раза, если учесть убогость ассемблера RISС архитектуры (даже простейшие операции типа сравнения и перехода приходится выполнять несколькими командами). согласен, что для сишника они предпочтительней т.к. не требуется заморачиваться над многими актуальными моментами. если есть желание использовать мк именно 51/52 серии могу дать пару советов: рекомендую использовать at89s8252 (он немного дороже по цене, но имеет определенные преимущества по сравнению с базовыми моделями). желательно иметь доступ к промышленному (т.е. не самодельному программатору). самодельные программаторы с последовательным доступом - однозначно в корзину. собрал порядка пяти подобных девайсов, ни один не заработал(. в оконцовке наткнулся на схему программатора, с параллельным и последовательным доступом, и только после того, как стер микроконтроллер на этом пр-ре в параллельном режиме, смог программировать мк на этом-же пр-ре как в параллельном, так и последовательном режиме. ссылку на программатор дать не могу(. недавно безуспешно пытался его заново найти в сети. помню, что в нем использовал около четырех микросхем ир22 (ир23), программа с исходниками на паскале, в ней основной код выполнен на встроенном в паскаль ассемблере.
Serge5672
Новичок
Сообщения: 2
Зарегистрирован: 02 дек 2015, 00:32
Репутация: 0
Настоящее имя: Сергей
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение Serge5672 »

такты микроконтроллера для задержек высчитывать мягко говоря не обязательно. есть аппаратные таймеры, которые позволяют точно отмерять любые задержки вплоть до десятков микросекунд.
AVK74
Почётный участник
Почётный участник
Сообщения: 1854
Зарегистрирован: 02 июл 2013, 09:03
Репутация: 335
Откуда: Уфа
Контактная информация:

Re: AT89C52 нужна помощь

Сообщение AVK74 »

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

Re: AT89C52 нужна помощь

Сообщение N1X »

Ф топку ATMeg'у, есть STM8 )))
Ответить

Вернуться в «Электроника»