Переписать прошивку под другой контроллер

kot34rus

Вечер добрый.
Есть схема регулятора под speed 400, на at90s2343, нужно передалть ее под attiny2313, может кто поможет?

P.S. схема не моя и с автором связаться никак.
P.P.S. или может кто поделится исходником на С под tiny2313, для управления коллекторным движком класса 400?
заранее спасибо.

dmitryu

нужно передалть ее под attiny2313

А можно узнать - зачем?

anm
dmitryu:

А можно узнать - зачем?

at90s2343 больше не выпускается, купить почти не реально.
В ассемблере не силен, но по инструкции такую замену для БК регулятора делал, вот кусок кода, которым заменял. Из того, что помню, изменений очень мало. Еще по ссылке после кодов посмотрите биты конфигурации.

Das Programm von Benhard muss and den ATTiny 2313 angepasst werden

  1. Device incl*ude file .incl*ude “tn2313def.inc”
  2. Interrupt jump table auf ATTiny 2313 anpassen

;**** **** **** **** ****
; Attiny2313 interrupts
; Reset handler
; EXT_INT0, interrupt Request0
; EXT_INT1, interrupt Request1
; TIM_CAPT1, Timer/Counter1 Capture Event interrupt
; TIM_CAPM1, Timer/Counter1 Capture MatchA interrupt
; TIM_OVF1, Timer/Counter1 overflow interrupt
; TIM_OVF0, Timer/Counter0 overflow interrupt
; UART_RX, UART Rx Complete
; UART_DRE, UART Data register Empty
; UART_TXC, UART Tx Complete
; ANA_COMP, Analogue comparator interrupt
; PCINT, Pinchange Interrupt
; TIMER1 COMPB,Timer/Counter1 Compare Match B
; TIMER0 COMPA,Timer/Counter0 Compare Match A
; TIMER0 COMPB, Timer/Counter0 Compare Match B
; USI START, USI Start
; USI OVERFOW, USI Overflow
; EE READY, EEprom Ready
; WDT OVERFLOW, Watchdog Timer Overflow

;-----bko-----------------------------------------------------------------

;**** **** **** **** ****
.cseg
.org 0
;**** **** **** **** ****

; KHR
rjmp reset ; Reset handler
.if RC_PULS == 1
rjmp ext_int0 ; EXT_INT0, interrupt Request0
.else
nop ; int0
.endif

nop ; EXT_INT1, interrupt Request1
nop ; TIM_CAPT1, Timer/Counter1 Capture Event interrupt
rjmp t1oc_int ; TIM_CAPM1, Timer/Counter1 Capture MatchA interrupt
rjmp t1ovfl_int ; TIM_OVF1, Timer/Counter1 overflow interrupt
rjmp t0ovfl_int ; TIM_OVF0, Timer/Counter0 overflow interrupt
nop ; UART_RX, UART Rx Complete
nop ; UART_DRE, UART Data register Empty
.if UART_CONTROL == 1
.if UART_FULL == 1
rjmp utxc
.else
nop ; UART_TXC, UART Tx Complete
.endif
.else
nop ; UART_TXC, UART Tx Complete
.endif
nop ; ANA_COMP, Analogue comparator interrupt
nop ; PCINT, Pinchange Interrupt
nop ; TIMER1 COMPB,Timer/Counter1 Compare Match B
nop ; TIMER0 COMPA,Timer/Counter0 Compare Match A
nop ; TIMER0 COMPB, Timer/Counter0 Compare Match B
nop ; USI START, USI Start
nop ; USI OVERFOW, USI Overflow
nop ; EE READY, EEprom Ready
nop ; WDT OVERFLOW, Watchdog Timer Overflow

version: .db “bko302 ATT”

Взято с people.freenet.de/…/Thomas_Platinen.html

Вопросы по коду задавать бесполезно, но исходник, куда все это ставилось могу тоже прислать.

dmitryu

На схеме написано, что можно использовать ATtiny22 😒

kot34rus

2343 купить не реально уже, с тини22 тоже проблемы, поэтому решено было заменить на то что есть. и ещ забыл дописать - движок коллекторный серии 400. начал на си писать прошивку, но мозгов пока не хватает все освоить, поэтому прошу помощи спецов по авр(очень бы хотелось на си под кодвижнавр). заранее спасибо.

Andrej100
kot34rus:

2343 купить не реально уже, с тини22 тоже проблемы, поэтому решено было заменить на то что есть. и ещ забыл дописать - движок коллекторный серии 400. начал на си писать прошивку, но мозгов пока не хватает все освоить, поэтому прошу помощи спецов по авр(очень бы хотелось на си под кодвижнавр). заранее спасибо.

А чем не подходит с этого сайта на pic или вот отсюда 1 или 2 😒

kot34rus

из-за дефицита пиков и наличия практически халявных атмелов 😒

serj
kot34rus:

P.S. схема не моя и с автором связаться никак.
P.P.S. или может кто поделится исходником на С под tiny2313, для управления коллекторным движком класса 400?
заранее спасибо.

Ну почему же, связаться с автором очень даже как - вот он я 😃

Дело было 8 лет назад и исходники благополучно утеряны, (хотя есть некоторая вероятность найти их на компе у родителей)
Вообще-то это все уже весьма устарело- зачем вам исходники 8-летней давности ? 😃
Кстати, вроде у Андрюхи на сайте была выложена схема и прошивка (а может и исходник - писалось на асме) регулятора для тини12, вроде проц до сих пор выпускается…
Если найду- выложу.
Вообще, имхо, для коллекторного рега тини2313- слишком большой корпус, надо 8-лапый брать.

kot34rus

о, тогда как говорится здрасте 😃
схему эту нашел на каком-то сайте ***.народ.ру, и не в курсе что ей уже 8 лет.
про выбор мк я уже выше писал, как говорится из того что было… а исходник нужен чтоб самому можно было поколдовать и понять что к чему, просто понять не могу принцип работы и алгоритм проги в мк. нашел исходник у радиокота, но он очень тяжкий для понимания, да и логику понять сложно.

8 days later
Neman2000
kot34rus:

Вечер добрый.
Есть схема регулятора под speed 400, на at90s2343, нужно передалть ее под attiny2313, может кто поможет?

P.S. схема не моя и с автором связаться никак.
P.P.S. или может кто поделится исходником на С под tiny2313, для управления коллекторным движком класса 400?
заранее спасибо.

рег под tiny2313(прошивка Матвеева в рекламе ненуждается),
а Си получите загрузив и тд…асм в Flowcode(если схавает)

регулятор.rar

kot34rus
Neman2000:

рег под tiny2313(прошивка Матвеева в рекламе ненуждается), а Си получите загрузив и тд…асм в Flowcode(если схавает)

скачал, грузанул… не схавал…

Syberian

гм, схема в Протеусе делана 😃 прикольно…

kot34rus

тогда может кто-нить ткнет носом в алгоритм работы регулятора(как считывается сигнал с ножек, как его обрабатывать и формировать управляющий сигнал), как организовать ВЕС, отсечку и т.д.

Chekhov

Немного не по теме, но происходит всё примерно так (как сам делал для Mega8).

  1. нужно 2 таймера для правильной работы.
    задача первого - считать длительность импульсов на INT0 - ставим на него прерывание в режиме Any-change.
    в этом прерывании считываем таймер, обнуляем его, смотрим, что на ножке - если там ноль => импульс кончился => вычисляем значение PWM и заносим в регистр.
    второй таймер отдан на PWM.

2 таймера нужны для того, чтобы не делать PWM программно, т. к. если единственный таймер отдать на PWM - у него частоты не хватит для отсчёта длительности импульсов, а если его частоту сделать достаточной, то на выходе PWM будет уже не меандр ( ёмкость его сгладит ) - а уже нечто похожее на синусойду - тут ключи и будут греться.

ЗЫ. По этой прошивке ничего сказать не могу т.к. в ассемблере я НОЛЬ.

Не пинайте сильно, если чё не так сказал. Но критика полезна.

Neman2000
kot34rus:

Вечер добрый.
Есть схема регулятора под speed 400, на at90s2343, нужно передалть ее под attiny2313, может кто поможет?

P.S. схема не моя и с автором связаться никак.
P.P.S. или может кто поделится исходником на С под tiny2313, для управления коллекторным движком класса 400?
заранее спасибо.

Исходники автор всем любезно высылал.
У этого рега шим(120Гц) зависит от питания тиньки(2,7в),
попробовал в кодвижине(поменял инклюду и визард на тини2313) перекомпилировать под тини2313 и
получилось только с исходника тини22,а с 2343 выдает кучу ошибок ,
фузы придется понипрогом заносить(тактовый-1мгц,собаку откл.)
,а вообще тини2313 легко фузами запарывается (можно потерять проц загнав его
в отладку или закрыв сброс и последовательное програмирование,кому надо-калькулятор фузов в архиве,на русском можно скачать книгу Белов все о тини2313 и переведеный
даташит г.Шахты ЮРГУЭС Магистратура Конев Д.Н. iprito@mail.ru
по идее на тини2313 должен работать на на теже порты что и тини22?
Вот кто бы типа Сергея Потупчика или он сам рассказали бы хоть в кратце
алгоритм -как все в проце для рега работает?

Всех с НАСТУПАЮЩИМ!!!

исходники.rar

PigTail

Ну вообще то стандартная замена должна быть на ATTiny25, нафига Вам столько ног, взгляните документик от Атмела по переходу с 2343 на Тиньку25 www.atmel.com/dyn/resources/…/doc2594.pdf
и изучайте лучше Си а не картинки в флаукоде 😉

Chekhov

А лучше читайте сразу doc2586.pdf - он про ATiny25/45/85 - идентичные по набору команд и возможностям МК.

Присоединяюсь к PigTail - учите лучше Си. Каждый уважающий себя матёрый программист со мной согласиться ( надеюсь на это ).
Свой рег, не зная почти ничего о МК, сделал за неделю!!!

Пользовался своими знаниями С и проги вообще + материалы с avr123.nm.ru (ЭТО НЕ РЕКЛАМА - ПРОСТО ВСЕГО ПОНЕМНОГУ В ОДОМ МЕСТЕ.)

Chekhov

Глянул я предоставленный исходник - впринципе в #15 посте я также написал алгоритм, просто у меня больше проверок, более нагружена логика и программный шим, что советую и вам сделать. Для этого исходника это сделать легко.

А насчёт отсечки - все тут маются со всякими резисторами, подбирают их(причём долго.)
Мне кажется, что всё это фигня, если под рукой есть нормальный стабилизированный источник напруги и тестор (если чел делает рег - то всё это есть).
В режиме настройки параметров регулятора (изза его отсутствия этот рег влезает в 2 кб. в этом же режиме обычно настраивают отклонения газа и т.п.) делается такая фишка - рег подключают к источнику, выставляют напряжение отсечки, потом рег сам измеряет это напряжение и заносит его в свои мозги - и теперь отсечка будет при этом напряжении. По моему просто и гениально одновременно.

Syberian

просто и гениально одновременно

еще проще и “гениальнее” будет подключить переменный резистор на вход, добиться нужной отсечки, и впаять вместо него связку постоянных с тем же суммарным сопротивлением

Chekhov

Вот именно перепаивание мне и не нравиться.От нагревания сопротивление изменяется, а дорожки тоже не вечные.
Кноечно мой подход летит, если планируется использовать рег с разными акками - 2, 3 банки, или требовать от него автоопределения акка.
Зато большой плюс - НИКАКОГО СПЕЦИАЛЬНОГО подбора резисторов - просто нужно поставить 2 резистора в дельтель так, чтобы вход ADC не спалить - у меня это 1к и 4к7.

Если хотите рег из представленной прошивки делать, то оттуда нужно ещё выкинуть декодер.

AlexSr

Кноечно мой подход летит, если планируется использовать рег с разными акками - 2, 3 банки, или требовать от него автоопределения акка.

А почему бы Вам не сделать калибровку при известном значении (как у Вас и сделано, только максимальном V), а потом не пересчитать коэффициэнт для напряжения на другие пороги? Что мешает?

Chekhov

Верно подмечено!!! Зависимость будет почти линейная - должно сработать.
Тогда можно сразу ставить и автомат по определению подключенного аккумулятора и никаких утомительных подборок резисторов !!!

Единтвенное НО: чтобы пересчитать коэффициет нужно, чтобы рег знал, какое напряжение соотвецтвует полученному из ADC значению => калибровку нужно проводить 2 раза отдельно для Li-po и NiCd/NiMh (хотя это тоже терпимо).

Я хотел добиться того, что регу было начихать на реальность. Опустилось до измеренного значения - отключайся, а какое оно на самом деле ему всё равно.