Здравствуйте! Требуется помощь в небольшой правке, и переносе кода на другой МК. Имеется код под 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 , и попутно избавится от сигнала переключения плеч/полярности, а вместо него вывести второй канал ШИМ (ну или выводить один канал ШИМ с двух выводов по очереди ). Т.е. одну полуволну гоним с одного канала, а вторую с другого (первый в это время молчит), и т.д. Для чего всё это? Что бы максимально упростить схему. Примерная схема: Критика принимается. Скан программы из журнала с комментариями:
_________________ Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. Всегда с уважением, Александр.
Заголовок сообщения: Re: "Перенести" код на другой МК
Добавлено: Сб апр 15, 2017 14:37:51
Собутыльник Кота
Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2708 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
Вы начертите временные диаграммы, что должно выходить с обоих каналов тиньки13. Понятно что импульсы разной ширины, но думать какой точно и сколько их и в какую фазу вряд ли кому просто так захочется. Программа то не сложная, если будет точная временная диаграмма, может кто и сваяет. Я иногда так делаю (закидываю полностью рабочий код в форум), когда скучно, а мне сейчас очень не скучно . Ну в крайнем случае, закинете кому-нибудь на коньяк из виноградников Челябинской области .
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Посмотрел в студии исходник. Не стал бы рисковать подключать силовую часть. Делал аналогичную программу генерации синуса 60,(0)Гц (512 точек/период) для FLIP часов и управлением IR4426(IR4427, IR4428 тоже можно подключать)
Посмотрел в студии исходник. Не стал бы рисковать подключать силовую часть.
Дело в том, что на этом задающем генераторе сделано овер 10 девайсов (не конкретно по этой схеме, а взята лишь задающая часть), и все работают беспроблемно. Тут вопрос в упрощении аппаратной части (в которой как раз я могу что-то сделать), и соответственно в правке программной (где я откровенно слаб ) .
_________________ Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. Всегда с уважением, Александр.
Такую простую задачу с успехом выполнит и ATtiny13 (уверен на 100%, и нет необходимости применять ATtiny2313, STM32, Intel Core i7 и т.д.) это во-первых, а во-вторых хочется избавится от "ненужной" в данном случае логики.
_________________ Большой опыт, порой, не даёт находить/видеть нам простые и очевидные решения. Всегда с уважением, Александр.
Нет смысла ограничиваться только тини13. Он устарел морально. Внешняя логика приколхозена из-за dead time. Посмотрите IR2111 у нее dead time внутри и в управлении проще. С ним тинька13 должна справиться.
_________________ Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения