Обсуждаем контроллеры компании Atmel.
Ответить

разжуйте как работает или подправте прошивку авр

Вт сен 25, 2012 13:25:01

Здрасте. Вообщем собираю генератор синуса на атмеле вот этот http://sevzirfo.narod.ru/sin.htm Все работает но шаг перестройки - мозгами тронуться. Я хочу чтобы шаги были 10х 1000х и 10000х. Смотрю прошивку (исходник) и ниче понять немогу. Вообщем не програмер я. Прокоментируйте пожалуйста как она работате или может кто сразу подправит? там по схеме 2 кнопки на увеличение и 2 на уменьшение, но есть еще 2 свободных порта - поэтому хочу их задействовать и сделать по 3 кнопки в каждую сторону.

Заранее спасибо!

Re: разжуйте как работает или подправте прошивку авр

Вт сен 25, 2012 18:37:30

Программа написана на Алгоритм Билдер, а по нему специалистов немного. Попробуйте зайти на vrtp.ru , там
есть тема по Билдеру.

Re: разжуйте как работает или подправте прошивку авр

Вт сен 25, 2012 19:05:55

Нажмите F9 задайте тип МК и тактовую частоту. Далее кнопкой F7 посмотрите как меняются значения в регитсрах.
Билдером отлаживать программки достаточно легко.

Re: разжуйте как работает или подправте прошивку авр

Вт сен 25, 2012 19:21:22

Вообщем собираю генератор синуса на атмеле
... доступный для повторения вариант http://www.myplace.nu/avr/minidds/. Исходник на ассемблере.

Re: разжуйте как работает или подправте прошивку авр

Ср сен 26, 2012 15:34:57

Этот приколнее - не привязан к компу. только чтоб частоту выставить - можно и час играться...

Re: разжуйте как работает или подправте прошивку авр

Ср сен 26, 2012 16:25:57

lexx_l писал(а):Здрасте. Вообщем собираю генератор синуса на атмеле вот этот http://sevzirfo.narod.ru/sin.htm Все работает но шаг перестройки - мозгами тронуться. Я хочу чтобы шаги были 10х 1000х и 10000х. Смотрю прошивку (исходник) и ниче понять немогу. Вообщем не програмер я. Прокоментируйте пожалуйста как она работате или может кто сразу подправит? там по схеме 2 кнопки на увеличение и 2 на уменьшение, но есть еще 2 свободных порта - поэтому хочу их задействовать и сделать по 3 кнопки в каждую сторону.

Заранее спасибо!

К нему бы еще экранчик приделать.

Re: разжуйте как работает или подправте прошивку авр

Ср сен 26, 2012 16:34:56

Дизассемблер:
Спойлер
Код:
.include   "2313DEF.INC"


.equ   freq_plus   =0
.equ   freq_plus10   =1
.equ   freq_minus   =2
.equ   freq_minus10   =3

.org   0

   RJMP    start
   RETI
   RETI
   RETI
   RETI
   RETI
   RETI
   RETI
   RETI
   RETI
   RETI


.DW   $8380        ;STD     Z+0,R24          Store indirect with displacement
.DW   $8986        ;LDD     R24,Z+22         Load indirect with displacement
.DW   $8F8C        ;STD     Y+28,R24         Store indirect with displacement
.DW   $9592        ;SWAP    R25              Swap nibbles
.DW   $9C98        ;MUL     R9,R8            Multiply unsigned
.DW   $A29F        ;STD     Y+39,R9          Store indirect with displacement
.DW   $A8A5        ;LDD     R10,Z+53         Load indirect with displacement
.DW   $AEAB        ;STD     Y+59,R10         Store indirect with displacement
.DW   $B3B0        ;IN      R27,0x10         In from I/O location
.DW   $B9B6        ;OUT     0x06,R27         Out to I/O location
.DW   $BFBC        ;OUT     0x3C,R27         Out to I/O location
.DW   $C4C1        ;RJMP    PC+0x04C2        Relative jump
.DW   $C9C7        ;RJMP    PC-0x0638        Relative jump
.DW   $CECC        ;RJMP    PC-0x0133        Relative jump
.DW   $D3D1        ;RCALL   PC+0x03D2        Relative call subroutine
.DW   $D8D5        ;RCALL   PC-0x072A        Relative call subroutine
.DW   $DCDA        ;RCALL   PC-0x0325        Relative call subroutine
.DW   $E0DE        ;LDI     R29,0x0E         Load immediate
.DW   $E4E2        ;LDI     R30,0x42         Load immediate
.DW   $E8E6        ;LDI     R30,0x86         Load immediate
.DW   $ECEA        ;LDI     R30,0xCA         Load immediate
.DW   $EFED        ;LDI     R30,0xFD         Load immediate
.DW   $F2F0        ;BRCS    PC-0x21          Branch if carry set
.DW   $F5F3        ;BRVC    PC+0x3F          Branch if overflow flag is cleared
.DW   $F7F6        ;BRTC    PC-0x01          Branch if T flag cleared
.DW   $F9F8        ;???                      Data or unknown opcode
.DW   $FBFA        ;???                      Data or unknown opcode
.DW   $FCFC        ;???                      Data or unknown opcode
.DW   $FEFD        ;???                      Data or unknown opcode
.DW   $FFFE        ;???                      Data or unknown opcode
.DW   $FFFF        ;???                      Data or unknown opcode
.DW   $FFFF        ;???                      Data or unknown opcode
.DW   $FFFF        ;???                      Data or unknown opcode
.DW   $FFFF        ;???                      Data or unknown opcode
.DW   $FFFF        ;???                      Data or unknown opcode
.DW   $FEFE        ;???                      Data or unknown opcode
.DW   $FCFD        ;???                      Data or unknown opcode
.DW   $FBFC        ;???                      Data or unknown opcode
.DW   $F9FA        ;???                      Data or unknown opcode
.DW   $F7F8        ;BRCC    PC-0x00          Branch if carry cleared
.DW   $F5F6        ;BRTC    PC+0x3F          Branch if T flag cleared
.DW   $F2F3        ;BRVS    PC-0x21          Branch if overflow flag is set
.DW   $EFF0        ;LDI     R31,0xF0         Load immediate
.DW   $ECED        ;LDI     R30,0xCD         Load immediate
.DW   $E8EA        ;LDI     R30,0x8A         Load immediate
.DW   $E4E6        ;LDI     R30,0x46         Load immediate
.DW   $E0E2        ;LDI     R30,0x02         Load immediate
.DW   $DCDE        ;RCALL   PC-0x0321        Relative call subroutine
.DW   $D8DA        ;RCALL   PC-0x0725        Relative call subroutine
.DW   $D3D5        ;RCALL   PC+0x03D6        Relative call subroutine
.DW   $CED1        ;RJMP    PC-0x012E        Relative jump
.DW   $C9CC        ;RJMP    PC-0x0633        Relative jump
.DW   $C4C7        ;RJMP    PC+0x04C8        Relative jump
.DW   $BFC1        ;OUT     0x31,R28         Out to I/O location
.DW   $B9BC        ;OUT     0x0C,R27         Out to I/O location
.DW   $B3B6        ;IN      R27,0x16         In from I/O location
.DW   $AEB0        ;STD     Z+56,R11         Store indirect with displacement
.DW   $A8AB        ;LDD     R10,Y+51         Load indirect with displacement
.DW   $A2A5        ;STD     Z+37,R10         Store indirect with displacement
.DW   $9C9F        ;MUL     R9,R15           Multiply unsigned
.DW   $9598        ;BREAK                    Break
.DW   $8F92        ;STD     Z+26,R25         Store indirect with displacement
.DW   $898C        ;LDD     R24,Y+20         Load indirect with displacement
.DW   $8386        ;STD     Z+6,R24          Store indirect with displacement
.DW   $7C80        ;ANDI    R24,0xC0         Logical AND with immediate
.DW   $7679        ;ANDI    R23,0x69         Logical AND with immediate
.DW   $7073        ;ANDI    R23,0x03         Logical AND with immediate
.DW   $6A6D        ;ORI     R22,0xAD         Logical OR with immediate
.DW   $6367        ;ORI     R22,0x37         Logical OR with immediate
.DW   $5D60        ;SUBI    R22,0xD0         Subtract immediate
.DW   $575A        ;SUBI    R21,0x7A         Subtract immediate
.DW   $5154        ;SUBI    R21,0x14         Subtract immediate
.DW   $4C4F        ;SBCI    R20,0xCF         Subtract immediate with carry
.DW   $4649        ;SBCI    R20,0x69         Subtract immediate with carry
.DW   $4043        ;SBCI    R20,0x03         Subtract immediate with carry
.DW   $3B3E        ;CPI     R19,0xBE         Compare with immediate
.DW   $3638        ;CPI     R19,0x68         Compare with immediate
.DW   $3133        ;CPI     R19,0x13         Compare with immediate
.DW   $2C2E        ;MOV     R2,R14           Copy register
.DW   $272A        ;EOR     R18,R26          Exclusive OR
.DW   $2325        ;AND     R18,R21          Logical AND
.DW   $1F21        ;ADC     R18,R17          Add with carry
.DW   $1B1D        ;SUB     R17,R29          Subtract without carry
.DW   $1719        ;CP      R17,R25          Compare
.DW   $1315        ;CPSE    R17,R21          Compare, skip if equal
.DW   $1012        ;CPSE    R1,R2            Compare, skip if equal
.DW   $0D0F        ;ADD     R16,R15          Add without carry
.DW   $0A0C        ;SBC     R0,R28           Subtract with carry
.DW   $0809        ;SBC     R0,R9            Subtract with carry
.DW   $0607        ;CPC     R0,R23           Compare with carry
.DW   $0405        ;CPC     R0,R5            Compare with carry
.DW   $0303        ;MULSU   R16,R19          Multiply signed with unsigned
.DW   $0102        ;MOVW    R0,R4            Copy register pair
.DW   $0001        ;???                      Data or unknown opcode
.DW   $0000        ;NOP                      No operation
.DW   $0000        ;NOP                      No operation
.DW   $0000        ;NOP                      No operation
.DW   $0000        ;NOP                      No operation
.DW   $0000        ;NOP                      No operation
.DW   $0101        ;MOVW    R0,R2            Copy register pair
.DW   $0302        ;MULSU   R16,R18          Multiply signed with unsigned
.DW   $0403        ;CPC     R0,R3            Compare with carry
.DW   $0605        ;CPC     R0,R21           Compare with carry
.DW   $0807        ;SBC     R0,R7            Subtract with carry
.DW   $0A09        ;SBC     R0,R25           Subtract with carry
.DW   $0D0C        ;ADD     R16,R12          Add without carry
.DW   $100F        ;CPSE    R0,R15           Compare, skip if equal
.DW   $1312        ;CPSE    R17,R18          Compare, skip if equal
.DW   $1715        ;CP      R17,R21          Compare
.DW   $1B19        ;SUB     R17,R25          Subtract without carry
.DW   $1F1D        ;ADC     R17,R29          Add with carry
.DW   $2321        ;AND     R18,R17          Logical AND
.DW   $2725        ;EOR     R18,R21          Exclusive OR
.DW   $2C2A        ;MOV     R2,R10           Copy register
.DW   $312E        ;CPI     R18,0x1E         Compare with immediate
.DW   $3633        ;CPI     R19,0x63         Compare with immediate
.DW   $3B38        ;CPI     R19,0xB8         Compare with immediate
.DW   $403E        ;SBCI    R19,0x0E         Subtract immediate with carry
.DW   $4643        ;SBCI    R20,0x63         Subtract immediate with carry
.DW   $4C49        ;SBCI    R20,0xC9         Subtract immediate with carry
.DW   $514F        ;SUBI    R20,0x1F         Subtract immediate
.DW   $5754        ;SUBI    R21,0x74         Subtract immediate
.DW   $5D5A        ;SUBI    R21,0xDA         Subtract immediate
.DW   $6360        ;ORI     R22,0x30         Logical OR with immediate
.DW   $6A67        ;ORI     R22,0xA7         Logical OR with immediate
.DW   $706D        ;ANDI    R22,0x0D         Logical AND with immediate
.DW   $7673        ;ANDI    R23,0x63         Logical AND with immediate
.DW   $7C79        ;ANDI    R23,0xC9         Logical AND with immediate





start:   LDI     R16,0xDF
   OUT     SPL,R16
   SER     R16
   OUT     DDRB,R16
   SER     R16
   OUT     PORTD,R16

   LDI     R30,0x16
   LDI     R31,0x00
   LDI     R24,0x64
   LDI     R25,0x64
   CLR     R26
   CLR     R28
   CLR     R29
   CLR     R16
   CLR     R17

loop:   SUBI    R30,0x16
   SBCI    R31,0x00

   ADD     R28,R24
   ADC     R29,R25
   ADC     R30,R26

   SUBI    R30,0xEA
   SBCI    R31,0xFF

   LPM
   OUT     PORTB,R0

   DEC     R16
   BRNE    loop
   DEC     R17
   BRNE    loop

   SBIS    PIND, freq_plus
   RJMP    m2
   SBIS    PIND, freq_plus10
   RJMP    m3
   SBIS    PIND, freq_minus
   RJMP    m4
   SBIS    PIND, freq_minus10
   RJMP    m5
   RJMP    loop

m2:   CPI     R24,0xFF
   BREQ    m6
   INC   R24
   RJMP    loop
m6:   INC     R24
   INC     R25
   RJMP    loop

m3:   CPI     R25,0xFF
   BREQ    m7
   INC     R25
   RJMP    loop
m7:   INC     R25
   INC     R26
   RJMP    loop

m4:   CPI     R24,0x00
   BREQ    m8
   DEC     R24
   RJMP    loop
m8:   DEC     R24
   DEC     R25
   RJMP    loop

m5:   CPI     R25,0x00
   BREQ    m9
   DEC     R25
   RJMP    loop
m9:   DEC     R25
   DEC     R26
   RJMP    loop

Чес слово, лень клавиши давить, итак все просто до безобразия.

Re: разжуйте как работает или подправте прошивку авр

Ср сен 26, 2012 21:42:09

Действительно все супер-просто... только не для меня... вообщем опять непомогли... а экран будет - в одном корпусе с ним будет частотомер на пике!

Re: разжуйте как работает или подправте прошивку авр

Ср сен 26, 2012 21:45:16

Так в этот же мк можно все запихнуть! Или на самом деле все так "не для меня"?

Re: разжуйте как работает или подправте прошивку авр

Ср сен 26, 2012 22:08:00

Нет. Делаю для себя. Просто я не програмист! Ну неразбираюсь я в этом. Вот и шью прошивки которые дают. К тому же было в налиличии 2 кристала и как раз нашел на одном из них частотомер (уже работает) а на другом ген. Засуну в один корпус и только тумблерочком буду переключать... или ген и метр.

Re: разжуйте как работает или подправте прошивку авр

Пт сен 28, 2012 11:59:05

Ну что? Так ни кто и непоможет?

Re: разжуйте как работает или подправте прошивку авр

Пт сен 28, 2012 12:10:00

Не понятно что не понятно. 3 раза нажми на (х10) будет 1000 . 4р=10000 зачем ещё кнопки.

Re: разжуйте как работает или подправте прошивку авр

Пт сен 28, 2012 12:13:35

там шаг перестройки маленький. Если нажимаеш на 10х то частота неумножается на 10 а увеличивается на 4гц!!! чтоб настроить несколько килогерц - сума сойти можно.
Ответить