"Перенести" код на другой МК

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
korob
Друг Кота
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

"Перенести" код на другой МК

Сообщение korob »

Здравствуйте! Требуется помощь в небольшой правке, и переносе кода на другой МК. :oops:
Имеется код под ATtiny2313 (ШИМ генератор синуса).

Код: Выделить всё

.CSEG 
 .INCLUDE "2313def.inc" 
 .org 0 
 		rjmp reset 
 .DEF Step=r30 
 .DEF Data=r0 
 .DEF SSREG=r23 
 .EQU Set_Tabl=16 
 .EQU Offset=Set_Tabl<<1 
 .EQU END_Tabl=Offset+196 
 .org OC1addr 
  	rjmp TIM1_COMP 
 .org OVF1addr 
  	rjmp TIM1_OvF 
 .CSEG 
 .org 16 
 SinTab: 
 .db 5,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64 
 .db 67,71,75,79,83,86,90,94,98,101,105,109,112,116,119,123 
 .db 126,130,133,136,140,143,146,150,153,156,159,162,165,168,171,174 
 .db 177,180,183,185,188,191,193,196,198,201,203,206,208,210,212,214 
 .db 217,219,221,223,224,226,228,230,231,233,234,236,237,239,240,241 
 .db 242,243,244,245,246,247,248,249,249,250,250,251,251,252,252,252 
 .db 252,252,253,252,252,252,252,252,251,251,250,250,249,249,248,247 
 .db 246,245,244,243,242,241,240,239,237,236,234,233,231,230,228,226 
 .db 224,223,221,219,217,214,212,210,208,206,203,201,198,196,193,191 
 .db 188,185,183,180,177,174,171,168,165,162,159,156,153,150,146,143 
 .db 140,136,133,130,126,123,119,116,112,109,105,101,98,94,90,86 
 .db 83,79,75,71,67,64,60,56,52,48,44,40,36,32,28,24 
 .db 20,16,12,8,5,255,255,255,255,255,255,255,255,255,255,255 
 TIM1_COMP: 
 	in	SSREG, SREG 
 	lpm 
 	out	OCR1AL, Data 
 	out	SREG, SSREG 
 	reti 
 TIM1_OvF: 
 	in	SSREG, SREG 
 	inc	Step 
 	out	SREG, SSREG 
 	reti 
 reset: 
 	clr	r31 
 	ldi	Step, Offset 
          ldi	r20, 0xdf 
          out	SPL, r20 
          ldi	r20, 0xfc 
          out	DDRB, r20 
          ldi	r20, 0xf0 
          out	PORTB, r20 
          ldi	r20, 0x72 
          out	DDRD, r20 
          ldi	r20, 0x3f 
          out	PORTD, r20 
          ldi	r20, 0x00 
          out	MCUCR, r20 
          ldi	r20, 0x00 
          out	GIFR, r20 
          ldi	r20, 0x00 
          out	OCR1AL, r20 
          ldi	r20, 16 
          out	OCR1AL, r20 
          ldi	r20,0xC0 
          out	TIMSK, r20 
          ldi	r20, 0xB1 
          out	TCCR1A, r20 
          ldi	r20, 0x04 
          out	PORTB, r20  
          WDR 
          ldi	r20, 0x00 
          out	WDTCR, r20 
          ldi	r20, 0x01 
          out	TCCR1B, r20 
          cbi	PORTD, 6 
          cbi	PORTB, 3 
          sei	 
 m1: 
          cpi	Step, END_Tabl 
          breq	m2 
          rjmp	m1 
 m2: 
          cli 
          wdr 
          ldi	Step, Offset 
          sbic	PORTB, 7 
          rjmp	m3 
          sbis	PORTB, 7 
          rjmp	m4 
 m3:  
          cbi	PORTB, 7 
          sei 
          rjmp 	m1 
 m4: 
          sbi	PORTB, 7 
          sei 
          rjmp	m1
Программа "генерирует" на PB3 ШИМ последовательность импульсов частой следования 20кГц., огибающая которых представляет полуволну синуса частотой 50Гц. (инвертор в общем :) ), а на PB7 меандр частотой 50Гц. (для переключения полярности полуволн, по сути плеч моста).
Требуется перенести программу на МК ATtiny13 :oops: , и попутно избавится от сигнала переключения плеч/полярности, а вместо него вывести второй канал ШИМ (ну или выводить один канал ШИМ с двух выводов по очереди :roll: ). Т.е. одну полуволну гоним с одного канала, а вторую с другого (первый в это время молчит), и т.д. Для чего всё это? Что бы максимально упростить схему. :oops:
Примерная схема: :roll:
Изображение
Критика принимается. :) :roll:
Скан программы из журнала с комментариями: :roll:
Изображение
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: "Перенести" код на другой МК

Сообщение Z_h_e »

Какую Вы помощь то просите? Что Вы попробовали, что почитали, что не поняли и что не получилось?

З.Ы. Код не читабельный. Одни магические цифры сплошным текстом.
З.З.Ы. В тини13 нет таймера1.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
korob
Друг Кота
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Re: "Перенести" код на другой МК

Сообщение korob »

Z_h_e писал(а):Что Вы попробовали, что почитали, что не поняли и что не получилось?
Честно? Ничего не пробовал :oops: , так как ничего в этом не понимаю (для меня это что китайское традиционное письмо :? ). :oops:
Z_h_e писал(а):Одни магические цифры сплошным текстом.
Ниже спецом разместил с комментариями. :roll: Или всё равно не информативно?
Z_h_e писал(а):В тини13 нет таймера1.
Получается что никак? Или есть другой способ?
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: "Перенести" код на другой МК

Сообщение Z_h_e »

Почему никак, думаю можно. Просто это не изменить программу, а сделать новую.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
korob
Друг Кота
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Re: "Перенести" код на другой МК

Сообщение korob »

Хорошо, хрен с этим ATtiny13. :tea: "Хотели как лучше, а получилось как всегда".©
Тогда можно просто избавиться от сигнала переключения полуволн (меандр 50Гц.)? А то в исходной схеме потом нехилая схемка на логике один хрен разделяет на 4 ключа с вводом мёртвого времени. Здесь же применён драйвер с общим сигналом управления для верхнего и нижнего ключа с вводом мёртвого времени (заменяющий всю схему на логике из исходной схемы).
Изображение
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: "Перенести" код на другой МК

Сообщение Z_h_e »

Вы начертите временные диаграммы, что должно выходить с обоих каналов тиньки13. Понятно что импульсы разной ширины, но думать какой точно и сколько их и в какую фазу вряд ли кому просто так захочется. Программа то не сложная, если будет точная временная диаграмма, может кто и сваяет. Я иногда так делаю (закидываю полностью рабочий код в форум), когда скучно, а мне сейчас очень не скучно :).
Ну в крайнем случае, закинете кому-нибудь на коньяк из виноградников Челябинской области ;).
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: "Перенести" код на другой МК

Сообщение akl »

Посмотрел в студии исходник. Не стал бы рисковать подключать силовую часть. Делал аналогичную программу генерации синуса 60,(0)Гц (512 точек/период) для FLIP часов и управлением IR4426(IR4427, IR4428 тоже можно подключать)
Аватара пользователя
korob
Друг Кота
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Re: "Перенести" код на другой МК

Сообщение korob »

akl писал(а):Посмотрел в студии исходник. Не стал бы рисковать подключать силовую часть.
Дело в том, что на этом задающем генераторе сделано овер 10 девайсов (не конкретно по этой схеме, а взята лишь задающая часть), и все работают беспроблемно. :wink: Тут вопрос в упрощении аппаратной части (в которой как раз я могу что-то сделать), и соответственно в правке программной (где я откровенно слаб :cry: ) :).
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: "Перенести" код на другой МК

Сообщение pyzhman »

У этой статьи есть автор. Напишите ему.
Docendo discimus
Аватара пользователя
korob
Друг Кота
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Re: "Перенести" код на другой МК

Сообщение korob »

Прошло более 10 лет, и как часто это бывает - автор не отвечает. :cry: Собственно если я бы был в силах что либо сделать - не обращался бы за помощью. :) :tea: :roll:
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Аватара пользователя
Oxford
Опытный кот
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск
Контактная информация:

Re: "Перенести" код на другой МК

Сообщение Oxford »

Здесь бы подключить к решению STM32, убрать логику и рулить напрямую драйверами.
А почему выбран ATtiny13?

http://we.easyelectronics.ru/STM32/2-x- ... 030f4.html
http://catethysis.ru/stm32-tim-dma-pwm-sin/
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Аватара пользователя
korob
Друг Кота
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Re: "Перенести" код на другой МК

Сообщение korob »

Oxford писал(а):А почему выбран ATtiny13?
korob писал(а):Что бы максимально упростить схему.
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Аватара пользователя
Oxford
Опытный кот
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск
Контактная информация:

Re: "Перенести" код на другой МК

Сообщение Oxford »

В чем это упрощение, у вас же готовая схема есть, с готовым кодом. В чем логика?
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Аватара пользователя
korob
Друг Кота
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Re: "Перенести" код на другой МК

Сообщение korob »

Oxford писал(а):В чем логика?
:oops:
Такую простую задачу с успехом выполнит и ATtiny13 (уверен на 100%, и нет необходимости применять ATtiny2313, STM32, Intel Core i7 и т.д.) это во-первых, а во-вторых хочется избавится от "ненужной" в данном случае логики. :roll: :oops:
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Аватара пользователя
Oxford
Опытный кот
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск
Контактная информация:

Re: "Перенести" код на другой МК

Сообщение Oxford »

Да в принципе то можно и на тини13. Просто у тини13 таймер слабоватый. А у стм32 таймера продвинутые + DMA
Последний раз редактировалось Oxford Сб апр 15, 2017 20:49:16, всего редактировалось 1 раз.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Аватара пользователя
korob
Друг Кота
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Re: "Перенести" код на другой МК

Сообщение korob »

Я в этом уверен :) , но к сожалению не знаю как реализовать. :cry: :cry: :cry: :oops: Поэтому и "завёл" тему. :)
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Аватара пользователя
Oxford
Опытный кот
Сообщения: 819
Зарегистрирован: Вт окт 23, 2012 13:17:25
Откуда: Прокопьевск
Контактная информация:

Re: "Перенести" код на другой МК

Сообщение Oxford »

Нет смысла ограничиваться только тини13. Он устарел морально. Внешняя логика приколхозена из-за dead time. Посмотрите IR2111 у нее dead time внутри и в управлении проще. С ним тинька13 должна справиться.
Инженер R@D

Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: "Перенести" код на другой МК

Сообщение uk8amk »

Я думаю, что достаточно ШИМ-ить только один полумост, второй полумост пусть переключает направление тока(меандр 50Гц).
Аватара пользователя
korob
Друг Кота
Сообщения: 6643
Зарегистрирован: Чт авг 09, 2012 01:09:39
Откуда: Ливны

Re: "Перенести" код на другой МК

Сообщение korob »

Oxford писал(а):Внешняя логика приколхозена из-за dead time. Посмотрите IR2111 у нее dead time внутри и в управлении проще.
:)
А я о чём? Мой первый пост со схемой прочли?
Z_h_e писал(а):Вы начертите временные диаграммы, что должно выходить с обоих каналов тиньки13.
Вот так примерно: :roll:
Изображение
Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. :(
Всегда с уважением, Александр.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: "Перенести" код на другой МК

Сообщение ARV »

korob писал(а):Дело в том, что на этом задающем генераторе сделано овер 10 девайсов ..., и все работают беспроблемно.
девайс коммерческий, ясно-понятно.
обращайтесь в ЛС: за вознаграждение любой ваш каприз.
дорого. долго. качественно. © тёма лебедев
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Ответить

Вернуться в «AVR»