Всем привет! Возникла необходимость реализовать загрузку из флеша мк байты данных и пихать их в шим. Проблема в том, что контроллер читает только первое значение массива и на этом всё заканчивается. Похожая прога работала на тини2313 и маге8, а в в меге128 пахать отказывается
Подозреваю, что чего-то в коде не хватает... Подскажите, в чем я болван
псы: файл что-то не загрузился
Выяснялось, что контроллер попадает в подпрограмму и не хочет выходить из неё... Стек уже по-всякому указывал
.include "m128def.inc"
.def Counter_1 =r18
.def Counter_2 =r19
jmp RESET ; Reset Handler
jmp EXT_INT0 ; IRQ0 Handler
jmp EXT_INT1 ; IRQ1 Handler
jmp EXT_INT2 ; IRQ2 Handler
jmp EXT_INT3 ; IRQ3 Handler
jmp EXT_INT4 ; IRQ4 Handler
jmp EXT_INT5 ; IRQ5 Handler
jmp EXT_INT6 ; IRQ6 Handler
jmp EXT_INT7 ; IRQ7 Handler
jmp TIM2_COMP ; Timer2 Compare Handler
jmp TIM2_OVF ; Timer2 Overflow Handler
jmp TIM1_CAPT ; Timer1 Capture Handler
jmp TIM1_COMPA; Timer1 CompareA Handler
jmp TIM1_COMPB; Timer1 CompareB Handler
jmp TIM1_OVF ; Timer1 Overflow Handler
jmp TIM0_COMP ; Timer0 Compare Handler
jmp TIM0_OVF ; Timer0 Overflow Handler
jmp SPI_STC ; SPI Transfer Complete Handler
jmp USART0_RXC; USART0 RX Complete Handler
jmp USART0_DRE; USART0,UDR Empty Handler
jmp USART0_TXC; USART0 TX Complete Handler
jmp ADCC ; ADC Conversion Complete Handler
jmp EE_RDY ; EEPROM Ready Handler
jmp ANA_COMP ; Analog Comparator Handler
jmp TIM1_COMPC; Timer1 CompareC Handler
jmp TIM3_CAPT ; Timer3 Capture Handler
jmp TIM3_COMPA; Timer3 CompareA Handler
jmp TIM3_COMPB; Timer3 CompareB Handler
jmp TIM3_COMPC; Timer3 CompareC Handler
jmp TIM3_OVF ; Timer3 Overflow Handler
jmp USART1_RXC; USART1 RX Complete Handler
jmp USART1_DRE; USART1,UDR Empty Handler
jmp USART1_TXC; USART1 TX Complete Handler
jmp TWI ; Two-wire Serial Interface Interrupt Handler
jmp SPM_RDY ; SPM Ready Handler
RESET: ; Reset Handler
EXT_INT0: ; IRQ0 Handler
EXT_INT1: ; IRQ1 Handler
EXT_INT2: ; IRQ2 Handler
EXT_INT3: ; IRQ3 Handler
EXT_INT4: ; IRQ4 Handler
EXT_INT5: ; IRQ5 Handler
EXT_INT6: ; IRQ6 Handler
EXT_INT7: ; IRQ7 Handler
TIM2_COMP: ; Timer2 Compare Handler
TIM2_OVF: ; Timer2 Overflow Handler
TIM1_CAPT: ; Timer1 Capture Handler
TIM1_COMPA:; Timer1 CompareA Handler
TIM1_COMPB:; Timer1 CompareB Handler
TIM1_OVF: ; Timer1 Overflow Handler
TIM0_COMP: ; Timer0 Compare Handler
TIM0_OVF: ; Timer0 Overflow Handler
SPI_STC: ; SPI Transfer Complete Handler
USART0_RXC:; USART0 RX Complete Handler
USART0_DRE:; USART0,UDR Empty Handler
USART0_TXC:; USART0 TX Complete Handler
ADCC: ; ADC Conversion Complete Handler
EE_RDY: ; EEPROM Ready Handler
ANA_COMP: ; Analog Comparator Handler
TIM1_COMPC:; Timer1 CompareC Handler
TIM3_CAPT: ; Timer3 Capture Handler
TIM3_COMPA:; Timer3 CompareA Handler
TIM3_COMPB:; Timer3 CompareB Handler
TIM3_COMPC:; Timer3 CompareC Handler
TIM3_OVF: ; Timer3 Overflow Handler
USART1_RXC:; USART1 RX Complete Handler
USART1_DRE:; USART1,UDR Empty Handler
USART1_TXC:; USART1 TX Complete Handler
TWI: ; Two-wire Serial Interface Interrupt Handler
SPM_RDY: ; SPM Ready Handler
ldi R16,low(RAMEND)
sts SPL,R16
ldi R16,high(RAMEND)
sts SPH,R16
ldi r16,0x00
out DDRA,r16
ldi r16,0x00
out PORTA,r16
ldi r16,0x10
out DDRB,r16
ldi r16,0x00
out PORTB,r16
ldi r16,0x00
out DDRC,r16
ldi r16,0x00
out PORTC,r16
ldi r16,0x00
out DDRD,r16
ldi r16,0x00
out PORTD,r16
ldi r16,0x00
out DDRE,r16
ldi r16,0x00
out PORTE,r16
ldi r16,0x00
sts DDRF,r16
ldi r16,0x00
sts PORTF,r16
ldi r16,0x00
sts DDRG,r16
ldi r16,0x00
sts PORTG,r16
clr counter_1
clr counter_2
ldi r16,0x69
out TCCR0,r16
ldi r16,0x01
out OCR0,r16
;***************************************
cycle: rcall ReadArray
rcall Delay
jmp cycle
;***************************************
ReadArray: ldi ZH,High(MyArray*2)
ldi ZL,Low(MyArray*2)
add ZL,Counter_1
adc ZH,CoUnter_2
lpm
mov r16,R0
out OCR0,r16
inc counter_1
cpi counter_1,10
brne esc
clr Counter_1
esc: ret
;***************************************
Delay: clr r20
clr r21
ldi r22,2
_10: dec r20
brne _10
dec r21
brne _10
dec r22
brne _10
ret
;***************************************
MyArray:
.db 0xf0,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0xf0