Пт мар 29, 2024 22:09:58
Пт мар 29, 2024 23:00:03
Пт мар 29, 2024 23:07:04
; ***** my INTERRUPT VECTORS ************************************************
; причем софтовая таблица может иметь и другие адреса начального размещения внутри области бутлоадера
; а не только самые первые (от FOURTHBOOTSTART)
.equ INT0addr_r = FOURTHBOOTSTART + 0x0001 ; External Interrupt Request 0
.equ INT1addr_r = FOURTHBOOTSTART + 0x0002 ; External Interrupt Request 1
.equ OC2addr_r = FOURTHBOOTSTART + 0x0003 ; Timer/Counter2 Compare Match
.equ OVF2addr_r = FOURTHBOOTSTART + 0x0004 ; Timer/Counter2 Overflow
.equ ICP1addr_r = FOURTHBOOTSTART + 0x0005 ; Timer/Counter1 Capture Event
.equ OC1Aaddr_r = FOURTHBOOTSTART + 0x0006 ; Timer/Counter1 Compare Match A
.equ OC1Baddr_r = FOURTHBOOTSTART + 0x0007 ; Timer/Counter1 Compare Match B
.equ OVF1addr_r = FOURTHBOOTSTART + 0x0008 ; Timer/Counter1 Overflow
.equ OVF0addr_r = FOURTHBOOTSTART + 0x0009 ; Timer/Counter0 Overflow
.equ SPIaddr_r = FOURTHBOOTSTART + 0x000a ; Serial Transfer Complete
.equ URXCaddr_r = FOURTHBOOTSTART + 0x000b ; USART, Rx Complete
.equ UDREaddr_r = FOURTHBOOTSTART + 0x000c ; USART Data Register Empty
.equ UTXCaddr_r = FOURTHBOOTSTART + 0x000d ; USART, Tx Complete
.equ ADCCaddr_r = FOURTHBOOTSTART + 0x000e ; ADC Conversion Complete
.equ ERDYaddr_r = FOURTHBOOTSTART + 0x000f ; EEPROM Ready
.equ ACIaddr_r = FOURTHBOOTSTART + 0x0010 ; Analog Comparator
.equ TWIaddr_r = FOURTHBOOTSTART + 0x0011 ; 2-wire Serial Interface
.equ SPMRaddr_r = FOURTHBOOTSTART + 0x0012 ; Store Program Memory Ready
; .equ INT_VECTORS_SIZE = 19 ; size in words
.org 0x0000
INT0addr: jmp INT0addr_r ; External Interrupt Request 0
INT1addr: jmp INT1addr_r ; External Interrupt Request 1
OC2addr: jmp OC2addr_r ; Timer/Counter2 Compare Match
OVF2addr: jmp OVF2addr_r ; Timer/Counter2 Overflow
ICP1addr: jmp ICP1addr_r ; Timer/Counter1 Capture Event
OC1Aaddr: jmp OC1Aaddr_r ; Timer/Counter1 Compare Match A
OC1Baddr: jmp OC1Baddr_r ; Timer/Counter1 Compare Match B
OVF1addr: jmp OVF1addr_r ; Timer/Counter1 Overflow
OVF0addr: jmp OVF0addr_r ; Timer/Counter0 Overflow
SPIaddr: jmp SPIaddr_r ; Serial Transfer Complete
URXCaddr: jmp URXCaddr_r ; USART, Rx Complete
UDREaddr: jmp UDREaddr_r ; USART Data Register Empty
UTXCaddr: jmp UTXCaddr_r ; USART, Tx Complete
ADCCaddr: jmp ADCCaddr_r ; ADC Conversion Complete
ERDYaddr: jmp ERDYaddr_r ; EEPROM Ready
ACIaddr: jmp ACIaddr_r ; Analog Comparator
TWIaddr: jmp TWIaddr_r ; 2-wire Serial Interface
SPMRaddr: jmp SPMRaddr_r ; Store Program Memory Ready
; далее текст программы при необходимости
.................................
; теперь область бутлоадера:
.org FOURTHBOOTSTART ; или иная область внутри области ПЗУ бутлоадера - это софт, а не аппаратная разметка***
INT0addr_r: jmp my_INT0 ; External Interrupt Request 0
INT1addr_r: jmp my_INT1 ; External Interrupt Request 1
OC2addr_r: jmp my_OC2 ; Timer/Counter2 Compare Match
OVF2addr_r: jmp my_OVF2 ; Timer/Counter2 Overflow
ICP1addr_r: jmp my_ICP1 ; Timer/Counter1 Capture Event
OC1Aaddr_r: jmp my_OC1A ; Timer/Counter1 Compare Match A
OC1Baddr_r: jmp my_OC1B ; Timer/Counter1 Compare Match B
OVF1addr_r: jmp my_OVF1 ; Timer/Counter1 Overflow
OVF0addr_r: jmp my_OVF0 ; Timer/Counter0 Overflow
SPIaddr_r: jmp my_SPI ; Serial Transfer Complete
URXCaddr_r: jmp my_URXC ; USART, Rx Complete
UDREaddr_r: jmp my_UDRE ; USART Data Register Empty
UTXCaddr_r: jmp my_UTXC ; USART, Tx Complete
ADCCaddr_r: jmp my_ADCC ; ; ADC Conversion Complete
ERDYaddr_r: jmp my_ERDY ; ; EEPROM Ready
ACIaddr_r: jmp my_ACI ; Analog Comparator
TWIaddr_r: jmp my_TWI ; 2-wire Serial Interface
SPMRaddr_r: jmp my_SPMR ; Store Program Memory Ready
; далее сам бутлоадер с соответствующими подпрограммами:
.....................................
my_INT0: reti ; External Interrupt Request 0
my_INT1: reti ; External Interrupt Request 1
my_OC2: reti ; Timer/Counter2 Compare Match
my_OVF2: reti ; Timer/Counter2 Overflow
my_ICP1: reti ; Timer/Counter1 Capture Event
my_OC1A: reti ; Timer/Counter1 Compare Match A
my_OC1B: reti ; Timer/Counter1 Compare Match B
my_OVF1: reti ; Timer/Counter1 Overflow
my_OVF0: reti ; Timer/Counter0 Overflow
my_SPI: reti ; Serial Transfer Complete
my_URXC: reti ; USART, Rx Complete
my_UDRE: reti ; USART Data Register Empty
my_UTXC: reti ; USART, Tx Complete
my_ADCC: reti ; ; ADC Conversion Complete
my_ERDY: reti ; ; EEPROM Ready
my_ACI: reti ; Analog Comparator
my_TWI: reti ; 2-wire Serial Interface
my_SPMR: reti ; Store Program Memory Ready
URXCaddr_r: ijmp ; USART, Rx Complete
UDREaddr_r: ijmp ; USART Data Register Empty
UTXCaddr_r: ijmp ; USART, Tx Complete
Сб мар 30, 2024 08:42:35
Сб мар 30, 2024 09:49:36
nachalo:
ldi R26, 1<<IVCE
out GICR, R26
SBR R26,1<<IVSEL
; ldi R26, 1<<IVSEL
out GICR, R26
Сб мар 30, 2024 10:07:58
Сб мар 30, 2024 10:12:01
Сб мар 30, 2024 11:03:57
Сб мар 30, 2024 13:14:30
Вт апр 02, 2024 19:13:09
Чт апр 04, 2024 09:17:33
Чт апр 04, 2024 09:54:06
Сб апр 06, 2024 21:27:49
Вс апр 07, 2024 00:04:49
Вс апр 07, 2024 07:45:31
Вс апр 07, 2024 08:47:22
Вс апр 07, 2024 08:57:32
Вс апр 07, 2024 09:03:41
Вс апр 07, 2024 09:09:24
Вс апр 07, 2024 09:11:52
value1 = EEPROM.get(address, value1);
Serial.print("0b");
if (value1 < 128)
Serial.print('0');
if (value1 < 64)
Serial.print('0');
if (value1 < 32)
Serial.print('0');
if (value1 < 16)
Serial.print('0');
if (value1 < 8)
Serial.print('0');
if (value1 < 4)
Serial.print('0');
if (value1 < 2)
Serial.print('0');
if (value1 < 1)
Serial.print('0');
Serial.println(value1, BIN);