From 2ad07a39c5b52693c7d6572f447e17d76787e562 Mon Sep 17 00:00:00 2001 From: Qukich Date: Thu, 22 Feb 2024 17:16:03 +0300 Subject: [PATCH] project atmel --- .vs/hdlc_screen/v14/.atsuo | Bin 0 -> 34816 bytes Lсd_print/lcd.h | 8 - MyLCD/MyLCD.h | 22 - MyLCD/lcdpcf8574.cpp | 316 -- MyLCD/pcf8574.cpp | 115 - MyLCD/twimaster.cpp | 117 - UART/uart.c | 61 - UART/uart.h | 13 - hdlc/main.c | 181 - hdlc_screen.atsln | 22 + hdlc_screen/.gitignore | 14 + hdlc_screen/Debug/LCD/Lcd_print.d | 81 + hdlc_screen/Debug/LCD/Lcd_print.o | Bin 0 -> 11104 bytes hdlc_screen/Debug/LCD/lcdpcf8574.d | 80 + hdlc_screen/Debug/LCD/lcdpcf8574.o | Bin 0 -> 21016 bytes hdlc_screen/Debug/LCD/pcf8574.d | 79 + hdlc_screen/Debug/LCD/pcf8574.o | Bin 0 -> 16452 bytes hdlc_screen/Debug/LCD/twimaster.d | 79 + hdlc_screen/Debug/LCD/twimaster.o | Bin 0 -> 8344 bytes hdlc_screen/Debug/Makefile | 251 + hdlc_screen/Debug/UART/circular_buf.d | 25 + hdlc_screen/Debug/UART/circular_buf.o | Bin 0 -> 6412 bytes hdlc_screen/Debug/UART/uart.d | 48 + hdlc_screen/Debug/UART/uart.o | Bin 0 -> 10624 bytes hdlc_screen/Debug/hdlc/client.d | 32 + hdlc_screen/Debug/hdlc/client.o | Bin 0 -> 14664 bytes hdlc_screen/Debug/hdlc/fcs.d | 3 + hdlc_screen/Debug/hdlc/fcs.o | Bin 0 -> 3520 bytes hdlc_screen/Debug/hdlc/hdlc.d | 17 + hdlc_screen/Debug/hdlc/hdlc.o | Bin 0 -> 21768 bytes hdlc_screen/Debug/hdlc_screen.eep | 1 + hdlc_screen/Debug/hdlc_screen.elf | Bin 0 -> 62208 bytes hdlc_screen/Debug/hdlc_screen.hex | 508 ++ hdlc_screen/Debug/hdlc_screen.lss | 4530 +++++++++++++++++ hdlc_screen/Debug/hdlc_screen.map | 953 ++++ hdlc_screen/Debug/hdlc_screen.srec | 509 ++ hdlc_screen/Debug/main.d | 45 + hdlc_screen/Debug/main.o | Bin 0 -> 12364 bytes hdlc_screen/Debug/makedep.mk | 26 + hdlc_screen/Debug/protocol/protocol.d | 28 + hdlc_screen/Debug/protocol/protocol.o | Bin 0 -> 10640 bytes .../LCD/Lcd_print.c | 91 +- {MyLCD => hdlc_screen/LCD}/i2cmaster.h | 0 hdlc_screen/LCD/lcd.h | 14 + .../MyLCD.h => hdlc_screen/LCD/lcd_headers.h | 16 +- .../LCD/lcdpcf8574.c | 2 +- {MyLCD => hdlc_screen/LCD}/lcdpcf8574.h | 0 .../pcf8574.cpp => hdlc_screen/LCD/pcf8574.c | 2 +- {MyLCD => hdlc_screen/LCD}/pcf8574.h | 0 .../LCD/twimaster.c | 2 +- hdlc_screen/Readme.md | 15 + {UART => hdlc_screen/UART}/circular_buf.c | 0 {UART => hdlc_screen/UART}/circular_buf.h | 0 {hdlc => hdlc_screen/hdlc}/client.c | 0 {hdlc => hdlc_screen/hdlc}/client.h | 0 {hdlc => hdlc_screen/hdlc}/fcs.c | 0 {hdlc => hdlc_screen/hdlc}/fcs.h | 0 {hdlc => hdlc_screen/hdlc}/hdlc.c | 0 {hdlc => hdlc_screen/hdlc}/hdlc.h | 3 +- hdlc_screen/hdlc_screen.componentinfo.xml | 86 + hdlc_screen/hdlc_screen.cproj | 185 + {MyLCD => hdlc_screen}/keywords.txt | 0 main.c => hdlc_screen/main.c | 17 +- .../protocol}/protocol.c | 0 .../protocol}/protocol.h | 0 main_sketch/Lcd_print.cpp | 99 - main_sketch/circular_buf.c | 36 - main_sketch/circular_buf.h | 18 - main_sketch/client.c | 129 - main_sketch/client.h | 49 - main_sketch/fcs.c | 41 - main_sketch/fcs.h | 18 - main_sketch/hdlc.c | 262 - main_sketch/hdlc.h | 108 - main_sketch/i2cmaster.h | 42 - main_sketch/keywords.txt | 10 - main_sketch/lcd.h | 8 - main_sketch/lcdpcf8574.h | 110 - main_sketch/main.c | 120 - main_sketch/main_sketch.ino | 108 - main_sketch/pcf8574.h | 21 - main_sketch/timer.c | 21 - main_sketch/timer.h | 7 - protocol/main.c | 120 - protocol/protocol.c | 56 - protocol/protocol.h | 32 - 86 files changed, 7699 insertions(+), 2313 deletions(-) create mode 100644 .vs/hdlc_screen/v14/.atsuo delete mode 100644 Lсd_print/lcd.h delete mode 100644 MyLCD/MyLCD.h delete mode 100644 MyLCD/lcdpcf8574.cpp delete mode 100644 MyLCD/pcf8574.cpp delete mode 100644 MyLCD/twimaster.cpp delete mode 100644 UART/uart.c delete mode 100644 UART/uart.h delete mode 100644 hdlc/main.c create mode 100644 hdlc_screen.atsln create mode 100644 hdlc_screen/.gitignore create mode 100644 hdlc_screen/Debug/LCD/Lcd_print.d create mode 100644 hdlc_screen/Debug/LCD/Lcd_print.o create mode 100644 hdlc_screen/Debug/LCD/lcdpcf8574.d create mode 100644 hdlc_screen/Debug/LCD/lcdpcf8574.o create mode 100644 hdlc_screen/Debug/LCD/pcf8574.d create mode 100644 hdlc_screen/Debug/LCD/pcf8574.o create mode 100644 hdlc_screen/Debug/LCD/twimaster.d create mode 100644 hdlc_screen/Debug/LCD/twimaster.o create mode 100644 hdlc_screen/Debug/Makefile create mode 100644 hdlc_screen/Debug/UART/circular_buf.d create mode 100644 hdlc_screen/Debug/UART/circular_buf.o create mode 100644 hdlc_screen/Debug/UART/uart.d create mode 100644 hdlc_screen/Debug/UART/uart.o create mode 100644 hdlc_screen/Debug/hdlc/client.d create mode 100644 hdlc_screen/Debug/hdlc/client.o create mode 100644 hdlc_screen/Debug/hdlc/fcs.d create mode 100644 hdlc_screen/Debug/hdlc/fcs.o create mode 100644 hdlc_screen/Debug/hdlc/hdlc.d create mode 100644 hdlc_screen/Debug/hdlc/hdlc.o create mode 100644 hdlc_screen/Debug/hdlc_screen.eep create mode 100644 hdlc_screen/Debug/hdlc_screen.elf create mode 100644 hdlc_screen/Debug/hdlc_screen.hex create mode 100644 hdlc_screen/Debug/hdlc_screen.lss create mode 100644 hdlc_screen/Debug/hdlc_screen.map create mode 100644 hdlc_screen/Debug/hdlc_screen.srec create mode 100644 hdlc_screen/Debug/main.d create mode 100644 hdlc_screen/Debug/main.o create mode 100644 hdlc_screen/Debug/makedep.mk create mode 100644 hdlc_screen/Debug/protocol/protocol.d create mode 100644 hdlc_screen/Debug/protocol/protocol.o rename Lсd_print/Lcd_print.cpp => hdlc_screen/LCD/Lcd_print.c (50%) rename {MyLCD => hdlc_screen/LCD}/i2cmaster.h (100%) create mode 100644 hdlc_screen/LCD/lcd.h rename main_sketch/MyLCD.h => hdlc_screen/LCD/lcd_headers.h (66%) rename main_sketch/lcdpcf8574.cpp => hdlc_screen/LCD/lcdpcf8574.c (99%) rename {MyLCD => hdlc_screen/LCD}/lcdpcf8574.h (100%) rename main_sketch/pcf8574.cpp => hdlc_screen/LCD/pcf8574.c (99%) rename {MyLCD => hdlc_screen/LCD}/pcf8574.h (100%) rename main_sketch/twimaster.cpp => hdlc_screen/LCD/twimaster.c (99%) create mode 100644 hdlc_screen/Readme.md rename {UART => hdlc_screen/UART}/circular_buf.c (100%) rename {UART => hdlc_screen/UART}/circular_buf.h (100%) rename {hdlc => hdlc_screen/hdlc}/client.c (100%) rename {hdlc => hdlc_screen/hdlc}/client.h (100%) rename {hdlc => hdlc_screen/hdlc}/fcs.c (100%) rename {hdlc => hdlc_screen/hdlc}/fcs.h (100%) rename {hdlc => hdlc_screen/hdlc}/hdlc.c (100%) rename {hdlc => hdlc_screen/hdlc}/hdlc.h (98%) create mode 100644 hdlc_screen/hdlc_screen.componentinfo.xml create mode 100644 hdlc_screen/hdlc_screen.cproj rename {MyLCD => hdlc_screen}/keywords.txt (100%) rename main.c => hdlc_screen/main.c (90%) rename {main_sketch => hdlc_screen/protocol}/protocol.c (100%) rename {main_sketch => hdlc_screen/protocol}/protocol.h (100%) delete mode 100644 main_sketch/Lcd_print.cpp delete mode 100644 main_sketch/circular_buf.c delete mode 100644 main_sketch/circular_buf.h delete mode 100644 main_sketch/client.c delete mode 100644 main_sketch/client.h delete mode 100644 main_sketch/fcs.c delete mode 100644 main_sketch/fcs.h delete mode 100644 main_sketch/hdlc.c delete mode 100644 main_sketch/hdlc.h delete mode 100644 main_sketch/i2cmaster.h delete mode 100644 main_sketch/keywords.txt delete mode 100644 main_sketch/lcd.h delete mode 100644 main_sketch/lcdpcf8574.h delete mode 100644 main_sketch/main.c delete mode 100644 main_sketch/main_sketch.ino delete mode 100644 main_sketch/pcf8574.h delete mode 100644 main_sketch/timer.c delete mode 100644 main_sketch/timer.h delete mode 100644 protocol/main.c delete mode 100644 protocol/protocol.c delete mode 100644 protocol/protocol.h diff --git a/.vs/hdlc_screen/v14/.atsuo b/.vs/hdlc_screen/v14/.atsuo new file mode 100644 index 0000000000000000000000000000000000000000..f74bc15ca8c42cab136bf2bcee4bcf1f71562f68 GIT binary patch literal 34816 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "lcdpcf8574.h" -#include "pcf8574.h" -#include "i2cmaster.h" - - -#endif \ No newline at end of file diff --git a/MyLCD/lcdpcf8574.cpp b/MyLCD/lcdpcf8574.cpp deleted file mode 100644 index c5808d5..0000000 --- a/MyLCD/lcdpcf8574.cpp +++ /dev/null @@ -1,316 +0,0 @@ -#include "MyLCD.h" - -// задержеки через асемблер -#define lcd_e_delay() __asm__ __volatile__( "rjmp 1f\n 1:" ); -#define lcd_e_toggle() toggle_e() - - -volatile uint8_t dataport = 0; - -static void toggle_e(void); - -// сама реализация задержек -static inline void _delayFourCycles(unsigned int __count) -{ - if ( __count == 0 ) - __asm__ __volatile__( "rjmp 1f\n 1:" ); - else - __asm__ __volatile__ ( - "1: sbiw %0,1" "\n\t" - "brne 1b" - : "=w" (__count) - : "0" (__count) - ); -} - -// тупа оборачиваем функцию в макрос -#define delay(us) _delayFourCycles( ( ( 1*(F_CPU/4000) )*us)/1000 ) - -// переключение пина для начала записи команды -static void toggle_e(void) -{ - pcf8574_setoutputpinhigh(LCD_PCF8574_DEVICEID, LCD_E_PIN); - lcd_e_delay(); - pcf8574_setoutputpinlow(LCD_PCF8574_DEVICEID, LCD_E_PIN); -} - - -// отправка байта для контроллера LCD -static void lcd_write(uint8_t data,uint8_t rs) -{ - if (rs) //отправка данных (RS=1, RW=0) - dataport |= _BV(LCD_RS_PIN); - else // отпрака инструкций(RS=0, RW=0) - dataport &= ~_BV(LCD_RS_PIN); - dataport &= ~_BV(LCD_RW_PIN); - pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport); - - // отправка старшего полубайта - dataport &= ~_BV(LCD_DATA3_PIN); - dataport &= ~_BV(LCD_DATA2_PIN); - dataport &= ~_BV(LCD_DATA1_PIN); - dataport &= ~_BV(LCD_DATA0_PIN); - if(data & 0x80) dataport |= _BV(LCD_DATA3_PIN); - if(data & 0x40) dataport |= _BV(LCD_DATA2_PIN); - if(data & 0x20) dataport |= _BV(LCD_DATA1_PIN); - if(data & 0x10) dataport |= _BV(LCD_DATA0_PIN); - pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport); - lcd_e_toggle(); - - // отправка младшего полубайта - dataport &= ~_BV(LCD_DATA3_PIN); - dataport &= ~_BV(LCD_DATA2_PIN); - dataport &= ~_BV(LCD_DATA1_PIN); - dataport &= ~_BV(LCD_DATA0_PIN); - if(data & 0x08) dataport |= _BV(LCD_DATA3_PIN); - if(data & 0x04) dataport |= _BV(LCD_DATA2_PIN); - if(data & 0x02) dataport |= _BV(LCD_DATA1_PIN); - if(data & 0x01) dataport |= _BV(LCD_DATA0_PIN); - pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport); - lcd_e_toggle(); - - // завершаем передачу - dataport |= _BV(LCD_DATA0_PIN); - dataport |= _BV(LCD_DATA1_PIN); - dataport |= _BV(LCD_DATA2_PIN); - dataport |= _BV(LCD_DATA3_PIN); - pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport); -} - -// чтение байта -static uint8_t lcd_read(uint8_t rs) -{ - uint8_t data; - - if (rs) // запись данных (RS=1, RW=0) - dataport |= _BV(LCD_RS_PIN); - else // запись инструкций (RS=0, RW=0) - dataport &= ~_BV(LCD_RS_PIN); - dataport |= _BV(LCD_RW_PIN); - pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport); - - pcf8574_setoutputpinhigh(LCD_PCF8574_DEVICEID, LCD_E_PIN); - lcd_e_delay(); - // чтение страшего полубайта - data = pcf8574_getoutputpin(LCD_PCF8574_DEVICEID, LCD_DATA0_PIN) << 4; - pcf8574_setoutputpinlow(LCD_PCF8574_DEVICEID, LCD_E_PIN); - - lcd_e_delay(); - - pcf8574_setoutputpinhigh(LCD_PCF8574_DEVICEID, LCD_E_PIN); - lcd_e_delay(); - // чтение младшего полубайта - data |= pcf8574_getoutputpin(LCD_PCF8574_DEVICEID, LCD_DATA0_PIN) &0x0F; - pcf8574_setoutputpinlow(LCD_PCF8574_DEVICEID, LCD_E_PIN); - - return data; -} - -// ждем пока ЖК освободится -static uint8_t lcd_waitbusy(void) - -{ - register uint8_t c; - - // ждем - while ( (c=lcd_read(0)) & (1<= LCD_START_LINE2) && (pos < LCD_START_LINE4) ) - addressCounter = LCD_START_LINE3; - else if ( (pos >= LCD_START_LINE3) && (pos < LCD_START_LINE2) ) - addressCounter = LCD_START_LINE4; - else - addressCounter = LCD_START_LINE1; -#endif - lcd_command((1<>4; - dataport |= _BV(LCD_DATA0_PIN); // _BV(LCD_FUNCTION_8BIT)>>4; - pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport); - - // дрючим дисплей чтобы он начал работать - lcd_e_toggle(); - delay(4992); - lcd_e_toggle(); - delay(64); - lcd_e_toggle(); - delay(64); - - // переходим в 4 битный режим - dataport &= ~_BV(LCD_DATA0_PIN); - pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport); - lcd_e_toggle(); - delay(64); - - - lcd_command(LCD_FUNCTION_DEFAULT); // настраиваем кол-во строк - lcd_command(LCD_DISP_OFF); // вырубаем дисплей - lcd_clrscr(); // чистим экран - lcd_command(LCD_MODE_DEFAULT); // запускаемся в стандартном режиме - lcd_command(dispAttr); // отправляем настройки -} diff --git a/MyLCD/pcf8574.cpp b/MyLCD/pcf8574.cpp deleted file mode 100644 index e93f3d8..0000000 --- a/MyLCD/pcf8574.cpp +++ /dev/null @@ -1,115 +0,0 @@ -#include "MyLCD.h" -uint8_t pcf8574_pinstatus[PCF8574_MAXDEVICES]; - -// инициализация pcf -void pcf8574_init() { - #if PCF8574_I2CINIT == 1 - // инитим i2c - i2c_init(); - _delay_us(10); - #endif - uint8_t i = 0; - for(i=0; i= 0 && deviceid < PCF8574_MAXDEVICES)) { - data = pcf8574_pinstatus[deviceid]; - } - return data; -} - -// получаем статус пинов вывода -int8_t pcf8574_getoutputpin(uint8_t deviceid, uint8_t pin) { - int8_t data = -1; - if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES) && (pin >= 0 && pin < PCF8574_MAXPINS)) { - data = pcf8574_pinstatus[deviceid]; - data = (data >> pin) & 0b00000001; - } - return data; -} - -// настройка вывода -int8_t pcf8574_setoutput(uint8_t deviceid, uint8_t data) { - if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES)) { - pcf8574_pinstatus[deviceid] = data; - i2c_start(((PCF8574_ADDRBASE+deviceid)<<1) | I2C_WRITE); - i2c_write(data); - i2c_stop(); - return 0; - } - return -1; -} - -// установить выходные контакты, заменить фактический статус устройства из pinstart для i2c -int8_t pcf8574_setoutputpins(uint8_t deviceid, uint8_t pinstart, uint8_t pinlength, int8_t data) { - if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES) && (pinstart - pinlength + 1 >= 0 && pinstart - pinlength + 1 >= 0 && pinstart < PCF8574_MAXPINS && pinstart > 0 && pinlength > 0)) { - uint8_t b = 0; - b = pcf8574_pinstatus[deviceid]; - uint8_t mask = ((1 << pinlength) - 1) << (pinstart - pinlength + 1); - data <<= (pinstart - pinlength + 1); - data &= mask; - b &= ~(mask); - b |= data; - pcf8574_pinstatus[deviceid] = b; - //рестартим - i2c_start(((PCF8574_ADDRBASE+deviceid)<<1) | I2C_WRITE); - i2c_write(b); - i2c_stop(); - return 0; - } - return -1; -} - -// настройка пинов вывода -int8_t pcf8574_setoutputpin(uint8_t deviceid, uint8_t pin, uint8_t data) { - if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES) && (pin >= 0 && pin < PCF8574_MAXPINS)) { - uint8_t b = 0; - b = pcf8574_pinstatus[deviceid]; - b = (data != 0) ? (b | (1 << pin)) : (b & ~(1 << pin)); - pcf8574_pinstatus[deviceid] = b; - //рестартим - i2c_start(((PCF8574_ADDRBASE+deviceid)<<1) | I2C_WRITE); - i2c_write(b); - i2c_stop(); - return 0; - } - return -1; -} - -// установка высокого уровня на выходных пинах -int8_t pcf8574_setoutputpinhigh(uint8_t deviceid, uint8_t pin) { - return pcf8574_setoutputpin(deviceid, pin, 1); -} - -// установка низкого уровня на выходных пинах -int8_t pcf8574_setoutputpinlow(uint8_t deviceid, uint8_t pin) { - return pcf8574_setoutputpin(deviceid, pin, 0); -} - -// получение входных данных -int8_t pcf8574_getinput(uint8_t deviceid) { - int8_t data = -1; - if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES)) { - i2c_start(((PCF8574_ADDRBASE+deviceid)<<1) | I2C_READ); - data = ~i2c_readNak(); - i2c_stop(); - } - return data; -} - -// получение входного контакта (высокий или низкий) -int8_t pcf8574_getinputpin(uint8_t deviceid, uint8_t pin) { - int8_t data = -1; - if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES) && (pin >= 0 && pin < PCF8574_MAXPINS)) { - data = pcf8574_getinput(deviceid); - if(data != -1) { - data = (data >> pin) & 0b00000001; - } - } - return data; -} \ No newline at end of file diff --git a/MyLCD/twimaster.cpp b/MyLCD/twimaster.cpp deleted file mode 100644 index 2fad0d7..0000000 --- a/MyLCD/twimaster.cpp +++ /dev/null @@ -1,117 +0,0 @@ -#include "MyLCD.h" - -// инициализация интерфейса i2c -void i2c_init(void) -{ - // предделитель тактовой частоты равен 1 - TWSR = 0; - // рассчет скорости передачи данных - TWBR = ((F_CPU/SCL_CLOCK)-16)/2; -} - -// передача условия СТАРТ на шину -unsigned char i2c_start(unsigned char address) -{ - uint8_t twst; - - // отправка условия СТАРТ - TWCR = (1< -#include -#include -#include -#include "circular_buf.h" -#include "uart.h" - -struct circular_buffer uartRxBuffer; -struct circular_buffer uartTxBuffer; - -void UART_init(void) { - UCSR0B = (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0) | (1< length) { - overflow = 1; - } - return overflow ? -1 : byteCount; // Возвращает количество успешно принятых байт или -1 в случае переполнения -} - -// прерывание по завершению приема -ISR(USART_RX_vect) { - uint8_t data = UDR0; // читаем из регистра UDR0 - if (!buffer_full(&uartRxBuffer)) { - write_buffer(&uartRxBuffer, data);// записываем символ в буфер приема - } -} - -ISR(USART_TX_vect) { - if (!buffer_empty(&uartTxBuffer)) { - UDR0 = read_buffer(&uartTxBuffer); - } else { - UCSR0B &= ~(1 << TXCIE0); // отключаем прерывание, когда все данные отправлены - } -} \ No newline at end of file diff --git a/UART/uart.h b/UART/uart.h deleted file mode 100644 index 99fd06c..0000000 --- a/UART/uart.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef UART_H -#define UART_H -#include -#include - -#define F_CPU 16000000 - -void UART_init(void); -void UART_send(uint8_t* data, size_t length); -int UART_receive(uint8_t* data, size_t length); - - -#endif /* UART_H */ \ No newline at end of file diff --git a/hdlc/main.c b/hdlc/main.c deleted file mode 100644 index bf69aa9..0000000 --- a/hdlc/main.c +++ /dev/null @@ -1,181 +0,0 @@ -//#include "hdlc.h" -#include "stdio.h" -#include "client.h" - -int main(){ - struct Client hdlc; - init_hdlc_client(&hdlc, 200); - hdlc_connect(&hdlc); - uint8_t buffer_for_ex[20]; - uint8_t fake_buffer; - hdlc_get_raw_frame(&hdlc, buffer_for_ex, sizeof(buffer_for_ex)); - - for (int i = 0; i < 200; i++){ - int z = hdlc_timeout_handler(&hdlc, 1); - hdlc_decode_recived_raw_data(&hdlc, &fake_buffer, sizeof(fake_buffer), 0, 0); - } - - hdlc_get_raw_frame(&hdlc, buffer_for_ex, sizeof(buffer_for_ex)); - int i = hdlc_decode_recived_raw_data(&hdlc, buffer_for_ex, sizeof(buffer_for_ex), 0, 0); - if (i < 0){ - printf("err connect: %d\n", i); - } - - uint8_t data[] = {32, 233, 132, 102, 12, 12, 44, 121, 34}; - hdlc_send_data(&hdlc, data, sizeof(data)); - uint8_t buffer_for_ex_data[20]; - - hdlc_get_raw_frame(&hdlc, buffer_for_ex_data, 20); - - //printf("first_ex:%d\n", buffer_for_ex_data[0]); - uint8_t recivedData[] = {}; - size_t len_recived_data = 0; - int x = hdlc_decode_recived_raw_data(&hdlc, buffer_for_ex_data, 20, recivedData, &len_recived_data); - if (x < 0){ - printf("err send: %d\n", x); - } - printf("recived data: %d\n", recivedData[1]); - - - - -// uint8_t send[64]; -// uint8_t buffer[134]; -// for (int i = 0; i < sizeof(send); i++) { -// send[i] = (uint8_t) (rand() % 0x70); -// } -// send_data(&hdlc, send, sizeof(send_data)); -// //get_frame(&hdlc, buffer, sizeof(buffer), send_data, sizeof(send_data)); -// -// hdlc_get_raw_data(&hdlc, buffer, sizeof(buffer)); - - // test 1 - -// int ret; -// uint8_t frame_data[8], recv_data[8]; -// size_t i, frame_length = 0, recv_length = 0; -// hdlc_control_t control_send, control_recv; - -// // Run through the supported sequence numbers (3-bit) -// for (i = 0; i <= 7; i++) { -// // Initialize the control field structure with frame type and sequence number -// control_send.frame = HDLC_FRAME_ACK; -// control_send.seq_no = i; -// -// // Create an empty frame with the control field information -// ret = hdlc_frame_data(&control_send, NULL, 0, frame_data, &frame_length); -// -// // Get the data from the frame -// ret = hdlc_get_data(&control_recv, frame_data, frame_length, recv_data, -// &recv_length); -// -// // Result should be frame_length minus start flag to be discarded and no bytes received -// if(ret != (int )frame_length - 1){ -// printf("err"); -// } -// } -// if (recv_length != 0){ -// printf("err2"); -// } -// -// if (control_send.frame != control_recv.frame){ -// printf("err3"); -// } -// -// if (control_send.seq_no != control_recv.seq_no){ -// printf("err4"); -// } - - // test 2 - - // Run through the supported sequence numbers (3-bit) -// for (i = 0; i <= 7; i++) { -// // Initialize the control field structure with frame type and sequence number -// control_send.frame = HDLC_FRAME_DATA; -// control_send.seq_no = i; -// -// char* input = "311"; -// uint8_t data = (uint8_t)atoi(input); -// -// // Create an empty frame with the control field information -// ret = hdlc_frame_data(&control_send, &data, 3, frame_data, &frame_length); -// if (ret != 0){ -// printf("err123\n"); -// } -// -// // Get the data from the frame -// ret = hdlc_get_data(&control_recv, frame_data, frame_length, recv_data, -// &recv_length); -// -// // Result should be frame_length minus start flag to be discarded and no bytes received -// if(ret != (int )frame_length - 1){ -// printf("err333\n"); -// } -// if (recv_length != 0){ -// printf("err2\n"); -// } -// -// // Verify the control field information -// if (control_send.frame != control_recv.frame){ -// printf("err3\n"); -// } -// -// if (control_send.seq_no != control_recv.seq_no){ -// printf("err4\n"); -// } -// } - -// int ret; -// hdlc_control_t control; -// uint8_t send_data[512], frame_data[530], recv_data[530]; -// size_t i, frame_length = 0, recv_length = 0, buf_length = 16; -// -// // Initialize data to be send with random values (up to 0x70 to keep below the values to be escaped) -// for (i = 0; i < sizeof(send_data); i++) { -// send_data[i] = (uint8_t) (rand() % 0x70); -// } -// -// // Initialize control field structure and create frame -// control.frame = HDLC_FRAME_DATA; -// ret = hdlc_frame_data(&control, send_data, sizeof(send_data), frame_data, -// &frame_length); -// -// // Check that frame length is maximum 2 bytes larger than data due to escape of FCS value -// if(frame_length >= ((sizeof(send_data) + 6) + 2)){ -// printf("1"); -// } -// if(ret != 0){ -// printf("2"); -// } -// -// // Run though the different buffers (simulating decode of buffers from UART) -// for (i = 0; i <= sizeof(send_data); i += buf_length) { -// // Decode the data -// ret = hdlc_get_data(&control, &frame_data[i], buf_length, recv_data, -// &recv_length); -// -// printf("%zu: %s\n", i, recv_data); -// -// if (i < sizeof(send_data)) { -// // All chunks until the last should return no message and zero length -// if (ret != -ENOMSG){ -// printf("3"); -// } -// if (recv_length != 0){ -// printf("1231"); -// } -// } else { -// if (ret > 7){ -// printf("332"); -// } -// if (recv_length != sizeof(send_data)){ -// printf("88888"); -// } -// // The last chunk should return max 6 frame bytes - 1 start flag sequence byte + 2 byte for the possible -// // escaped FCS = 7 bytes -//// BOOST_CHECK(ret <= 7); -//// BOOST_CHECK_EQUAL(recv_length, sizeof(send_data)); -// //printf("5"); -// } -// } -} \ No newline at end of file diff --git a/hdlc_screen.atsln b/hdlc_screen.atsln new file mode 100644 index 0000000..012050c --- /dev/null +++ b/hdlc_screen.atsln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Atmel Studio Solution File, Format Version 11.00 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "hdlc_screen", "hdlc_screen\hdlc_screen.cproj", "{DCE6C7E3-EE26-4D79-826B-08594B9AD897}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|AVR = Debug|AVR + Release|AVR = Release|AVR + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.ActiveCfg = Debug|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.Build.0 = Debug|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.ActiveCfg = Release|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.Build.0 = Release|AVR + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/hdlc_screen/.gitignore b/hdlc_screen/.gitignore new file mode 100644 index 0000000..14484fa --- /dev/null +++ b/hdlc_screen/.gitignore @@ -0,0 +1,14 @@ +hdlc1.c +hdlc1.h +hdlc_frame.c +hdlc_frame.h +main1.c +uart.c +uart.h + +!./hdlc +/.idea/Display_Avr_3.iml +/.idea/.gitignore +/.idea/vcs.xml +/.idea/modules.xml +/CMakeLists.txt diff --git a/hdlc_screen/Debug/LCD/Lcd_print.d b/hdlc_screen/Debug/LCD/Lcd_print.d new file mode 100644 index 0000000..ff5c8f2 --- /dev/null +++ b/hdlc_screen/Debug/LCD/Lcd_print.d @@ -0,0 +1,81 @@ +LCD/Lcd_print.d LCD/Lcd_print.o: ../LCD/Lcd_print.c ../LCD/lcd_headers.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\compat\twi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\twi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h \ + ../LCD/lcdpcf8574.h ../LCD/pcf8574.h ../LCD/i2cmaster.h ../LCD/lcd.h + +../LCD/lcd_headers.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\compat\twi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\twi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h: + +../LCD/lcdpcf8574.h: + +../LCD/pcf8574.h: + +../LCD/i2cmaster.h: + +../LCD/lcd.h: diff --git a/hdlc_screen/Debug/LCD/Lcd_print.o b/hdlc_screen/Debug/LCD/Lcd_print.o new file mode 100644 index 0000000000000000000000000000000000000000..f7cbbd1c84c0711e4c5f0138517f5c2199497f94 GIT binary patch literal 11104 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 Hr>_1FJyYBa literal 0 HcmV?d00001 diff --git a/hdlc_screen/Debug/LCD/pcf8574.d b/hdlc_screen/Debug/LCD/pcf8574.d new file mode 100644 index 0000000..9737a21 --- /dev/null +++ b/hdlc_screen/Debug/LCD/pcf8574.d @@ -0,0 +1,79 @@ +LCD/pcf8574.d LCD/pcf8574.o: ../LCD/pcf8574.c ../LCD/lcd_headers.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\compat\twi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\twi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h \ + ../LCD/lcdpcf8574.h ../LCD/pcf8574.h ../LCD/i2cmaster.h + +../LCD/lcd_headers.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\compat\twi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\twi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h: + +../LCD/lcdpcf8574.h: + +../LCD/pcf8574.h: + +../LCD/i2cmaster.h: diff --git a/hdlc_screen/Debug/LCD/pcf8574.o b/hdlc_screen/Debug/LCD/pcf8574.o new file mode 100644 index 0000000000000000000000000000000000000000..cd5ea5f12b7e0c9e30df2d8fb9027e5fe3a50ace GIT binary patch literal 16452 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 NI80t)L~!5W{{zqzOWXhe literal 0 HcmV?d00001 diff --git a/hdlc_screen/Debug/LCD/twimaster.d b/hdlc_screen/Debug/LCD/twimaster.d new file mode 100644 index 0000000..b441c06 --- /dev/null +++ b/hdlc_screen/Debug/LCD/twimaster.d @@ -0,0 +1,79 @@ +LCD/twimaster.d LCD/twimaster.o: ../LCD/twimaster.c ../LCD/lcd_headers.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\compat\twi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\twi.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h \ + ../LCD/lcdpcf8574.h ../LCD/pcf8574.h ../LCD/i2cmaster.h + +../LCD/lcd_headers.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include/avr/iom328p.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\compat\twi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\twi.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\pgmspace.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h: + +../LCD/lcdpcf8574.h: + +../LCD/pcf8574.h: + +../LCD/i2cmaster.h: diff --git a/hdlc_screen/Debug/LCD/twimaster.o b/hdlc_screen/Debug/LCD/twimaster.o new file mode 100644 index 0000000000000000000000000000000000000000..b8e0201a6ca68bcc94ec93a828e33c9ffc6328fb GIT binary patch literal 8344 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 "hdlc_screen.lss" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "hdlc_screen.elf" "hdlc_screen.srec" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "hdlc_screen.elf" + + + + + + + +# Other Targets +clean: + -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) + -$(RM) $(C_DEPS_AS_ARGS) + rm -rf "hdlc_screen.elf" "hdlc_screen.a" "hdlc_screen.hex" "hdlc_screen.lss" "hdlc_screen.eep" "hdlc_screen.map" "hdlc_screen.srec" "hdlc_screen.usersignatures" + \ No newline at end of file diff --git a/hdlc_screen/Debug/UART/circular_buf.d b/hdlc_screen/Debug/UART/circular_buf.d new file mode 100644 index 0000000..322208c --- /dev/null +++ b/hdlc_screen/Debug/UART/circular_buf.d @@ -0,0 +1,25 @@ +UART/circular_buf.d UART/circular_buf.o: ../UART/circular_buf.c \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \ + ../UART/circular_buf.h + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h: + +../UART/circular_buf.h: diff --git a/hdlc_screen/Debug/UART/circular_buf.o b/hdlc_screen/Debug/UART/circular_buf.o new file mode 100644 index 0000000000000000000000000000000000000000..60f1aaf0d3aaa579b65507e51ea4dae39b2188fb GIT binary patch literal 6412 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 literal 0 HcmV?d00001 diff --git a/hdlc_screen/Debug/hdlc/client.d b/hdlc_screen/Debug/hdlc/client.d new file mode 100644 index 0000000..79e090e --- /dev/null +++ b/hdlc_screen/Debug/hdlc/client.d @@ -0,0 +1,32 @@ +hdlc/client.d hdlc/client.o: ../hdlc/client.c ../hdlc/client.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h \ + ../hdlc/hdlc.h ../hdlc/fcs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\errno.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h + +../hdlc/client.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h: + +../hdlc/hdlc.h: + +../hdlc/fcs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\errno.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h: diff --git a/hdlc_screen/Debug/hdlc/client.o b/hdlc_screen/Debug/hdlc/client.o new file mode 100644 index 0000000000000000000000000000000000000000..d2db73cd983528c54357b33e20928043c13441c5 GIT binary patch literal 14664 zcmc(m3wV^(na9sJGnrhOkOTt)k|7}CCBwxOQ&dPG5u*qQNLx%hB$G)plFXzt69j63 zBwWfpBn7ut!Cs!WPph`ucES2=k=E9>ZdZDtUAJpBwYJ^ugB6upYT2^?|M}iCISIJ> z^yxl(^!v{5yyrddIp;mM@B1cfu3LPI<2cF$N3BppDW%R`uhceVR%(Ums$7++^G^5R zmfmDGsRE=Nvrm^rFO; zogdr0Wq0@BjvXaElx^wmndzL}hMbzpJG0c;9_07zF4~pe9ofBVcirxio-KoYgEv!UGrjUhR9a?_^)j z!5RJY`Hl*7ll>R>-}OL))6jc+Z+YnYP?fXy=;5Q^3H>az_t@cM zdoF({xA5q>j~{-r@c7;*Upe;IW3vv;aGrI%hwgLsJBOSvImewuc=OWlI=)Ox)rno* zJ39LY|L9EVo;lbvb|Bk1vz4Q|7o)nrXK=^vT^J#CVrO^vOy`U`gRwoMPP{&Na{P~T zoU`gg4@z$7g~a)E#n&np7kqGH_kq0wFJJb@Ea&VS&X0Re^lTT6tvViQcgq2#`f&Zx z>F@3C)&5}*j-v<1&1jAE){}i-?mN=Azi)G2qA%RHv~Paj40!OoGr4RLCI?WV4CQ@N(s(p}vpU&Sey$;YL1x3WfWLnRk?%XOf>`}93a-~CEE{qn5wqdn5- ztO>Wdjn`@F8=ZBDsoekY2GuX#7&jAYt75t z)RnI0ST)K+>jBtAXL5B!^!5im&T^D5bTfzyqj__3**<^EfYUnQzyfu$QZe3*#jhLY8JC)HcGum!_W$cO6CldC?-#p+%(Sl;vV&yQ4wCpVOnI2Rci*AQ1 zX^}yaG{;clMoOhI(qod*v~uQ{c3#H36!tj z5x7OEu~h#Tu7`}#UuKNXyU6HIhZ!v_mF_w-OQoBncc^F_t7LFne#=FbRKXuZEg$|%E>LT_D%E*tLdWy9UQ%(z>WN958B!{xj=cj~FS#~JUmihP2WFTX>QZf94T z&Q4_RpV84VG3B%xsk(yVe@Br_|2O(f|2>;F883U^a9S?q=QPTFXut_`#9?TZhh3P& zwX+5`%XoVNb((E4NP*1sjl&$JXZj<^b^E^2ILe*Z8`)m7vL=I-lTDG6h3TPG`Owph z@17|`3IA@7owZmwMb4Fhl6-GqLf|fck+a+xjjhKsRpsZ;gAnVxRCxn)^KZ>h z99u({&&h|3ISz9C)1fvIJ6(1OD%*xd2L1#u=NmNi|m#Z%sR$@UFm*7Yr!ECdaFOW1M5eh+ zz&k@Z`T>GT=IAraBywFPHwQj(1Jw#l!lU+N*vKyKrMsL>zE8d3v>h=i6Z@5%aw71n zh5_e;Lq24wmP?e9lSxXUJsGci)PXKz-NYl?_P5IEg#Q=M>t`Xhde|^9G0OCX32Z!W zU_$SIOfsQ&Ka(hOmE4?SJApOf29_CPCo)GLe4SyVFw(z%wR*t0d-y26o3S50s_%O2 zGxHx~zt*(L#D3)->LyLAO_!Ka?t_KV@~c$?&ijV4}<5lwZaUgQ_( ze6M%2wrt$u+T`6MLo_6Doue(o60K?p+GjcB&sq!#3{b^Y-=rJs9r9m$G`^s#r6rnF z&Cygk9E&$c*Q-?Y!{K;B&!ccE-I$Js)0kk071YDcjp@d4%>CG=Qn8K9<&+DjqVZ;( ztEK4;olzKVhjKdB5ml*VM9gbt{jClqyD){TT>D8=zgB3DMiR}@a55T+t&28?la2Sf zwpY|Gsa24!3r7<1bTZMd+7t2CpuX`F%Zl(V%WLka3oofzc)KhBSA&_d1I)-Qqs}D6 zEefXM(MUQLZ*}{no1ExMhnrfIZmH6}M)y_i+=jJl*EZC~Ql0IM8^Sf~lHuzc-2O+B z(P+G(HrmwHs%q<3EL^%|N!`Mg^-C71`r5^H;T0=uR@SLVS2Bqu?D|5y*cDI3TI12? zAapd{>1ge3)#Of0 z-NRwkE?RO|aN&F38`OJau%aVg(bC?SYP)$BIZ=^X8|$pV7$DUV>AD%a=zD?{t+Rs_ zOQC>m@Mi4cC|%KFj8@R?cDgB+Ziz+Pn^O=%3lk#|uSju%B;u5@jdr@TF|rnxlUqVcYdlsN99 z=wYjOt#LJRYPL1To7=H)b>51hnz&NjIjcv;9r27;Gb?wPzqzi(-D=Uog>!?`YgR1} zSB2q-FuWaJX->lM^`SYT+2L6?+)#D3>wg~Ld=R~WfSqph)PkVrvp9R~cL_ce*l9i- z*l9i_+=R;nJ}lG(yn8$~0pDJ4O(1KZuO{H%pH&mc?(^3Kat>tI1acqDsR`sglv@)h zSTG8oFWOCE#C*s=`5u<v?L91?qXhJ6V)N2RG2=_l#bV`COA*sQd=e^BuU|0l7@V8M@W*<@44j+A@W&3FQi^l47^Cxmq#3by zUmTJCM@e%o7Gt(QJ0kygk`5v+hQH2_$j=`dJof`~=FAF*S1b$P8V)NBi(Ob=w@5>} zqZ4OltLBZ-WI_@b@6`Xxi8t)f(TSm>T_?Grz5O;LXR6kGyHh-4X5_x8Ge&N4;c#;T z$9?Ap_YuHNwnrP2;igmye&g)(VG7V?91Ai7KaO~ic@1L9$uoudL65U=D&^qSi09%e zF2fC>8kdpZ0`|*G`K{n=;U(bWAZ`e2a8aMXy{yA!?A&L`d%(udRph|0>L}=Jz9p2)XDzF7D<@CxDIB3>>08PwY-{2jz?!ry{^hj2Aw&H>iN zcNzMe{3vw#gz206h0}=XXX@aWJjF2}vrqIL`7OwQDZCOk|17){aW?X(vlnlOmkHkk zIc-s%2d)%ein2EfUkk1l=9zQ5a0K$Zg*U)vqi`!?UbOjf#2v!FL7Wo)0OAe8hf#L3 z@K<4<{$<%B*zXs<8uEvQJ0O2dIEnb5g~vhujPO&i$+4lG&x3y}{0jK2@C?}WpbT}+ zK*sXqd5Fu%bO^!};o0C>qVpp7Msf)?;2)8*ZL5XZ-bS)~=8FpRd`XE8?R=CBJ6xMv zMZO5UpUjDjFd#e!{3+34*)Ne%b{Y69BEKK;w}r1p8-6bQ4Ep{nGWHgR-w2-u{}&l{ z)`Q;=ecJzTk@I&-56aU&4?Q`@k;<9|pf9%ysk{8D)QgvTus~DCF<; zx%Rn+>d5HhLGUs%_9cdu!aU30Pllb>!A+u1U$u)o54Jxna{B5cBCm#gi^#JP?-Kbs z$oGrGiGzSmdRXuWUghdH?ubNo{x1( zohp%&ZxUuXt}(M7R|->Sjm6EvT&G-1X07oVfQ(_(e>-KE`!bn!`Yq;Mr<`Zn5sN<~ zoP+ogi@zewE$bT=e^Z#-$kP^cuG2pLS3kA*--PM2L5p7&E=K%{#jgpMB7Vzap3$_= zy@h)RnW0#?96ZV5a$%mKA&X}V(+>97iX6>WcUXL< zFz1Or@1RfqkjObtS}k5H%ypEuc)c*^Pq)R}gvUX?&*FaJ@sNMg;v>R*KKX*hj|fkK zoX>*v75N*&L9jk6AtygA@^bJ=i+?IS74qjT9u($YqR&v+A-^K>>%ebX{FX4!5uOuf z+ylb3&>wH{B;lFRzsBN_FzxVMF?MQ&+hAvz#VdtVkaORpKDk+#c6bgMI~#>tptIfL zUBW@=_gj2On09z>89QGTZibzs7C&L>^E@;9KN4<&{__?O3iHp>PFs9NnDz4fqn&D$ z^$UL;TxfBL@Z*qAv^Xey0`jXZt`L3+@;MgI6+QN+7P&>nCEcr z9YJhdJiA$+IlH;$gE+f&KIPoF5T@b^g6AOSnlyVp*Cc;aKaF@MvnPzMqoSHm(z%KJEi?>C+lVVtI2d8LM<+G5HaVI@n@VYZO~_&)cXg@rLM&uu-Lyq z7Ms^WrwsjqNWV*yIc{8^WOjL;FwX*>-IQ~mzfG9FStc9=uM(y|8ieVOCSm%cMVND7 zJsIt18+eYB*@msc><-U#%Gqq5>16u(VKNk0_H)7@P7#Z0nGPk>bwsAo$xs@&wa}M7&pF0 zlk>oT66V_ExnCyhXtXd~s!D}9KPL*02bT*^0#6eTf;kr*-Vn^*LJso6TH_kg`-$jW zhqPJmoPTD|tfE|W^d5qF$WV>T?4P%Sjm}~+8;r0Fm)T1{1~xhzSF>+$T+P0E&eAzg z7C$KXC9}tdQX4wbjZG?qAJp8q%}_eJ9>3x0-?Bpd@*7G<+Z#iahA#TR?TYp1Wb^x} zrLN^eU$sNY1g)~lS)p0B-OPvTq3_)z&Ai<=?vZ*UziPYr&HT9-Kl`;L&@;`AO-;$@ zI%$L}YEMLlr5lrt@z$tufU9!}QF|;NHCE9z6^bM}I`HH3Fk9|#g&2)@7x>za;nI68 zOK|_P1M?Ur<050q>hN}YS0OhC*E{LyZ?Vwh9?w8~oZ}{#dO6R1xT+=N>sTC|-a%ZH z^WqfOa~iR+*8=9+Gr`zf0|D9SasT2zZGzFe8v?uDA6oThOCIa(!o@PC?Oy?x;xd7G zy!5vL#HQY-!KZPVVCvlpfnD#*sP|>ag1E2^WcvGgFv}QwJm0tVT|UCzmh0T#eu7Zs=Q-04{SCwvMx27ZWmekQs~BN#VueyCpcll2 zPk9-8bTJ{Vw k#uUzkDs*xU1d}1*IZS(SmHtOnw!MGAhB)3BLB7HN0k+Or4gdfE literal 0 HcmV?d00001 diff --git a/hdlc_screen/Debug/hdlc/fcs.d b/hdlc_screen/Debug/hdlc/fcs.d new file mode 100644 index 0000000..3b73636 --- /dev/null +++ b/hdlc_screen/Debug/hdlc/fcs.d @@ -0,0 +1,3 @@ +hdlc/fcs.d hdlc/fcs.o: ../hdlc/fcs.c ../hdlc/fcs.h + +../hdlc/fcs.h: diff --git a/hdlc_screen/Debug/hdlc/fcs.o b/hdlc_screen/Debug/hdlc/fcs.o new file mode 100644 index 0000000000000000000000000000000000000000..0ab82ea0e1a37be90614faee8a864fa438fecd80 GIT binary patch literal 3520 zcma)74SW>E6`#4igd>R|9}xLSVZo4#$ZZk`F$5Aq5(vQvX$VL$vfRgB?%=+8EgACGxq>vl*8*|9~ZI@7=uPVPQYROz?=9{yd z=a^f~rlo|mBqrUnd{Elx4G-l?JA-4M+_hrL#>4M=K0JG3*7>XdX-+WF*1i=fwyC5sUuq-*fc4K``>5hqGH|&0A@>7Ra`YxRN z@5~Rb9G{yV!!J(i&aM5G;M`I@eANCO#lJuPV&$Ss*PVaAc`UfkSiEpTigjgxH?He8 z$hgJ?>oPTaw z%k}N@Yti;aa@V32KkwIneNI;Nw!6n&+WWtnkB*$2zV6H)8=h!iK3|EqEv-x)xq8Te zv`r~_oeqXZe|z%F>H`{QSAtG}7$iCHuE&F+saZWGR| z{paxawj3(HcYj`G%<*1M|D{>Mikput*kX8P*|Q1rH(pNv>yA%ycI_TIHsesw$+72V z`+QewWbT^`XS#Gjl0@6eut;Y-$}n<6u+un3KP- zSuP9@#9!;P=xX#gD?aPGXZ@yrFKt_rHFxi?$4x&nxu*O~!SsRcy&Jl$f<7^*y<$|` zC{D$9_!v|*HB*O9$t~dxs(^Fa6++ESXG9xno`GK{i86FTK8l)fif)0=92lMO6JlBu z`a<)9hiN5zqd3GS8NW1<_K#1F<>GtAPmE5aRWuBeAiC5DpeYX?Zewbm~jWlQUx>V>$p>NzN@U zxC)h`iK~^mTO(J_NG?+su2-d0_-fVEB!r;sho}S;2GSS5^m=>@ft!tysUT#!93DF% zP*%YnzTi=6U@o0<6v~9(6hb@0?kKfeJ$4aKplsYkzGUc7eu$7GWbqcS&*Jo06<0wv zV!uV1;SN}Ab+y2G?R5p#dU*(MsU5^y#)E+pbQIM3>cHFLtn(@ETA$>w*j-jx&)eKV zr(5zk6cB=yJ?QrPEQ+MgD05hYRy`lE+Gjvyxy~L0t>W^_L5t+8^D0EeJWIs8eL+%h z_0&luBEsB6aW_f9#(;#C2wH7Kt4wCNFs1o5rEVqQu{Me$>t%6p4OUH5?6M^JYDy*8 zDj{VhCHZ{D$VpXVo(Rhqp+;i0-|vC&Zl5?<$Q821?E8mg-5ahNls^GR2#6BH?6f%E z@CuxX{$AYaL?aCWzDCj>f+<4WEiW{5r`99PfCCBMkU}N^e_TU>j_(0@gpThQ!3f$z z0(?8xaC?3u8OH3PiztDv(GmAOUcIjo3od*wbv#@m9dWl*2lodzOGlhq(GCGek~$bb z9O-%+pG=B13D!CZD*AxV0&An)3{jj=DUK0EqJoMrs2WwKf}l4b%2KV0n2;U8Su@W_W0p@NRz6LX%8AT;fe;8ET z_I-%K7bzD8)ykQ#Vcc^S;x6z3dI$#E?}Zr}TE%a|?9=c8nDL*FHYZ?Sq~Wh&UXEB> zKfp*Xe4#NfE(z<&FrEZrT!Xsby8r+&8^mbCYc|NU^|P4htM;R|uRP%UXc&7OaSF_M z#)#3rI}EC|0rD&+4>*!bP#V4JBLFW-cy=)qlp2CWP!CYBDGCu}$zv5zDnt%iko{;N zu%|>dao{TXl%ZKaF~U8QybtgL7_kV{brT%})J`0{$U8GwATQ{9|_6T0DJTJSRph z??4b>9~5Z{2RtQsws*roISy>cA{gjnfPqwrAI1P=@v3zgO)9}=4FZjr-FV>jd1pf2 z_dteu0Y>sp1I&B?k}D8zE&`31P63`_R5d_>(lr~Lm=5otKJRcSW){dWFSb0}FXmuA z0LhCGk4K;p)6D{2AI}5v(m;msux>0~8(`)Gkh}}=@QyNKx+Ngc$9o#$vGc&EjKzBm zF!R9}A49w{1R60N)?Od)Ro#9uKa2MkVD!OSAaw&pDhmQULL9ranb~DW5rVzOh}j(k z0b)iDuuEeM%$OJHLl}sQU?3gS)eoN+)L|X*S%xh}=myw*8R0r|VNP9JlE)$Mqaef@ Y;v0tXaNqbJ(8n`D(@g;xBewSc18iAKF#rGn literal 0 HcmV?d00001 diff --git a/hdlc_screen/Debug/hdlc/hdlc.d b/hdlc_screen/Debug/hdlc/hdlc.d new file mode 100644 index 0000000..bbe987e --- /dev/null +++ b/hdlc_screen/Debug/hdlc/hdlc.d @@ -0,0 +1,17 @@ +hdlc/hdlc.d hdlc/hdlc.o: ../hdlc/hdlc.c ../hdlc/hdlc.h ../hdlc/fcs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\errno.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h + +../hdlc/hdlc.h: + +../hdlc/fcs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\errno.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: diff --git a/hdlc_screen/Debug/hdlc/hdlc.o b/hdlc_screen/Debug/hdlc/hdlc.o new file mode 100644 index 0000000000000000000000000000000000000000..2149b2472be6314bdf85ca973b540be66a02bb54 GIT binary patch literal 21768 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 literal 0 HcmV?d00001 diff --git a/hdlc_screen/Debug/hdlc_screen.eep b/hdlc_screen/Debug/hdlc_screen.eep new file mode 100644 index 0000000..7c166a1 --- /dev/null +++ b/hdlc_screen/Debug/hdlc_screen.eep @@ -0,0 +1 @@ +:00000001FF diff --git a/hdlc_screen/Debug/hdlc_screen.elf b/hdlc_screen/Debug/hdlc_screen.elf new file mode 100644 index 0000000000000000000000000000000000000000..ae2623fa9a9cea7e9c969045616632b00ab1a73e GIT binary patch literal 62208 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 >Cz`*DaZp`Pb3!Ejc@Lr0?_5 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 literal 0 HcmV?d00001 diff --git a/hdlc_screen/Debug/hdlc_screen.hex b/hdlc_screen/Debug/hdlc_screen.hex new file mode 100644 index 0000000..bbba2b5 --- /dev/null +++ b/hdlc_screen/Debug/hdlc_screen.hex @@ -0,0 +1,508 @@ +:100000000C9434000C9451000C9451000C94510049 +:100010000C9451000C9451000C9451000C9451001C +:100020000C9451000C9451000C9451000C9451000C +:100030000C9451000C9451000C9451000C945100FC +:100040000C9451000C9451000C94100B0C94510022 +:100050000C94420B0C9451000C9451000C945100E0 +:100060000C9451000C94510011241FBECFEFD8E026 +:10007000DEBFCDBF13E0A0E0B1E0E2E5FDE102C0EC +:1000800005900D92A234B107D9F723E0A2E4B3E0C2 +:1000900001C01D92A639B207E1F70E9426070C9411 +:1000A000A70E0C940000FC0181E0808372836183C1 +:1000B000709344036093430384E1838314828FEF3E +:1000C0009FEF9683858390878783928781871486A5 +:1000D0001386168615860895FC0183E08083808947 +:1000E000887F808B81E0878713820895FC0180815F +:1000F000823089F485E080834134510578F4828927 +:10010000887F828B118A748B638B568B458B13820D +:1001100080E090E008958CEF9FEF08958FEF9FEFC0 +:100120000895CF92DF92EF92FF920F931F93CF9398 +:10013000DF9300D0CDB7DEB77C016B015A834983D2 +:10014000FC0180818530D1F44589568963897489A1 +:100150008E010F5F1F4F9601C70141960E94480311 +:10016000992364F49F938F9380E091E09F938F9302 +:100170000E94990B0F900F900F900F90F7018081C4 +:100180008330D1F48E010F5F1F4F960140E050E0A5 +:1001900060E070E0C7010F960E944803992364F461 +:1001A0009F938F9380E091E09F938F930E94990B90 +:1001B0000F900F900F900F90F70180818430D1F451 +:1001C0008E010F5F1F4F960140E050E060E070E04D +:1001D000C70147960E944803992364F49F938F9325 +:1001E00080E091E09F938F930E94990B0F900F9066 +:1001F0000F900F9080E090E00F900F90DF91CF91E3 +:100200001F910F91FF90EF90DF90CF9008952F9264 +:100210003F924F925F926F927F928F929F92AF9296 +:10022000BF92CF92DF92EF92FF920F931F93CF93E3 +:10023000DF9300D000D0CDB7DEB75C015C834B8389 +:10024000222E332E38018DB69EB6C42ED52E8DB7F4 +:100250009EB78C199D090FB6F8949EBF0FBE8DBF37 +:10026000EDB7FEB731962F01CE0103967C018F01C9 +:100270009601AB01BE016F5F7F4FC50104960E94DE +:10028000220299230CF448C08A81877090E0F5011E +:10029000238130E08217930751F084E08083808DC2 +:1002A000887F808F82E0878B8AEF9FEF35C08981BE +:1002B000813049F018F08230D9F025C0F2E0CF1A31 +:1002C000D10829F40EC082E0F50180831CC0F20140 +:1002D000A22DB32D4C0C5D1C81918D93E415F50579 +:1002E000D9F7F301D182C08286E0F50180830BC08B +:1002F00084E0F5018083808D887F808F82E0878B0A +:100300008AEF9FEF09C08091430390914403F50168 +:100310009283818380E090E00FB6F8949EBE0FBE7A +:100320008DBE0F900F900F900F90DF91CF911F9186 +:100330000F91FF90EF90DF90CF90BF90AF909F9084 +:100340008F907F906F905F904F903F902F90089587 +:10035000FC0121813281261B370B32832183121647 +:1003600013061CF480E090E008958BEF9FEF089552 +:10037000FC01E627FF27EE0FFF1FEA5EFE4F892FE5 +:10038000992720813181822793270895FA0193E8E4 +:10039000980F923070F420813181A9014F5F5F4F37 +:1003A00051834083DB01A20FB31F9DE79C9390E232 +:1003B000892720813181A9014F5F5F4F518340839D +:1003C000FB01E20FF31F80830895982F80FF0BC07D +:1003D00086958695837011F082E001C081E0929548 +:1003E0009695977003C09695977080E097700895E2 +:1003F000FC019081913049F018F0923061F011C009 +:1004000081818770880F8061089581818295880F2E +:10041000807E8160089581818295880F807E8960C9 +:10042000089580E00895FC018FEF9FEF9283818310 +:100430009683858394838383128611861086178220 +:10044000108208953F924F925F926F927F928F92A7 +:100450009F92AF92BF92CF92DF92EF92FF920F9353 +:100460001F93CF93DF9300D000D0CDB7DEB70097B6 +:1004700009F4EAC06115710509F4E9C04115510597 +:1004800009F4E8C00115110509F4E7C0E114F1040D +:1004900009F4E6C0380149017A8369839C838B8320 +:1004A0002115310509F499C08A01C12CD12C689419 +:1004B000442445F833243394590121E0A21AB108A9 +:1004C000AB81BC8113968D919C91149799239CF4D8 +:1004D000F80180818E3709F070C0CA14DB0420F463 +:1004E00081818E3709F470C0EB81FC818781908512 +:1004F0009483838362C0F80150802EE7521219C0A2 +:10050000CA14DB0420F421812E3709F45DC0AB81CD +:10051000BC8117962D913C911897AC014F5F5F4FAE +:100520004217530709F450C016963C932E93159723 +:100530005DC0BDE75B1204C0EB81FC8130823DC031 +:10054000AB81BC818C91882319F01C92508054247B +:10055000652DEB81FC81818192810E94B801AB8184 +:10056000BC8112969C938E93119717962D913C9176 +:10057000189713968D919C91149702962817390716 +:1005800041F4852D0E94E501E981FA819183808300 +:1005900014C0821793078CF4AB81BC8119968D919E +:1005A0009C911A979C012F5F3F4F1A963C932E9374 +:1005B0001997F301E80FF91F5082EB81FC818781C5 +:1005C0009085019690878783FFEFCF1ADF0A0F5F30 +:1005D0001F4F8C149D0409F073CFAB81BC8113961F +:1005E0008D919C91149799233CF06401EB81FC81DF +:1005F00025813681332334F4D7011D921C928EE07D +:1006000092ED30C00496281739073CF0EB81FC814D +:1006100081819281883B904F31F0D701CD92DC925D +:100620000EE012ED0AC0EB81FC8181859285029774 +:10063000D7018D939C930C2D1D2D8B819C810E9445 +:100640001302802F912F0EC08EE092ED0BC08EE032 +:1006500092ED08C08EE092ED05C08EE092ED02C0F2 +:100660008EE092ED0F900F900F900F90DF91CF9151 +:100670001F910F91FF90EF90DF90CF90BF90AF90C0 +:100680009F908F907F906F905F904F903F900895D4 +:100690005F926F927F928F929F92AF92BF92CF9212 +:1006A000DF92EF92FF920F931F93CF93DF9300D0CF +:1006B000CDB7DEB7009709F473C06115710521F459 +:1006C0004115510509F06FC02115310509F46EC0BF +:1006D0000115110509F46DC0380179015A014B016A +:1006E0008C0181E090E09A8389838EE7F901808311 +:1006F0006FEF8FEF9FEF0E94B8016C01AE014F5F6B +:100700005F4FB7018FEF0E94C601C8010E94F80138 +:10071000582E682FC6010E94B8016C01AE014F5FD0 +:100720005F4FB701852D0E94C601F80180818111BC +:1007300019C0A114B104B1F084018A0C9B1C5801AA +:10074000F80161918F01C6010E94B8016C01AE01F0 +:100750004F5F5F4FB701F50180810E94C60180168F +:10076000910669F7C094D094AE014F5F5F4FB70117 +:100770008C2D0E94C601AE014F5F5F4FB7018D2DDA +:100780000E94C60189819A81F701E80FF91F2EE7BF +:1007900020830196F3019183808380E090E00BC079 +:1007A0008EE092ED08C08EE092ED05C08EE092EDF5 +:1007B00002C08EE092ED0F900F90DF91CF911F91CC +:1007C0000F91FF90EF90DF90CF90BF90AF909F90F0 +:1007D0008F907F906F905F900895CF93882331F032 +:1007E0008091420381608093420305C0809142035F +:1007F0008E7F809342038091420382608093420304 +:100800006091420380E00E94950662E080E00E94D1 +:10081000D60600C064E080E00E948106C82F62E036 +:1008200080E00E94DA0600C062E080E00E94D60606 +:1008300000C064E080E00E948106C295C07F8F7096 +:10084000C82B62E080E00E94DA068C2FCF910895D9 +:1008500080E00E94ED038823DCF300C080E00E946A +:10086000ED03089562E080E00E94D60600C062E0D9 +:1008700080E00E94DA060895CF93C82F662331F0F6 +:100880008091420381608093420305C080914203BE +:100890008E7F80934203809142038D7F8093420339 +:1008A0006091420380E00E949506809142038F7719 +:1008B00080934203809142038F7B80934203809117 +:1008C00042038F7D80934203809142038F7E809309 +:1008D0004203CC232CF4809142038068809342032E +:1008E000C6FF05C080914203806480934203C5FF28 +:1008F00005C080914203806280934203C4FF05C01B +:10090000809142038061809342036091420380E0C2 +:100910000E9495060E943204809142038F77809353 +:100920004203809142038F7B809342038091420374 +:100930008F7D80934203809142038F7E8093420398 +:10094000C3FF05C080914203806880934203C2FFC9 +:1009500005C080914203806480934203C1FF05C0BB +:1009600080914203806280934203C0FF05C0809162 +:1009700042038061809342036091420380E00E94C1 +:1009800095060E9432048091420380618093420365 +:10099000809142038062809342038091420380648D +:1009A0008093420380914203806880934203609168 +:1009B000420380E00E949506CF910895CF93C82FFF +:1009C0000E94280460E08C2F0E943C04CF9108957F +:1009D000611104C080580E94DE04089580540E9472 +:1009E000DE04089581E00E94DE040895882331F03A +:1009F00080914203877F8093420305C08091420328 +:100A00008860809342036091420380E00E949506D3 +:100A1000089582E00E94DE040895CF93C82F0E94BB +:100A20002804CA3049F4803410F080E001C080E42A +:100A300080580E94DE0413C0803129F460E080EC0D +:100A40000E943C0406C0803521F460E080E80E94EA +:100A50003C040E94280461E08C2F0E943C04CF914A +:100A60000895CF93DF93EC012196FC0180818823C8 +:100A700029F00E940D0589918111FBCFDF91CF9163 +:100A800008951F93CF93DF93182F0E94780610923A +:100A900042036091420380E00E94950680EA9FE055 +:100AA0000197F1F780914203806280934203809125 +:100AB00042038061809342036091420380E00E9480 +:100AC00095060E94320480EE94E00197F1F70E94AF +:100AD0003204C0E1D0E0CE010197F1F70E94320468 +:100AE000CE010197F1F7809142038F7E80934203FC +:100AF0006091420380E00E9495060E943204219793 +:100B0000F1F788E20E94DE0488E00E94DE040E9481 +:100B1000F20486E00E94DE04812F0E94DE04DF9151 +:100B2000CF911F9108958DE00E9441050E94090513 +:100B300080E00E94F6040895CF92DF92EF92FF9238 +:100B40000F931F93CF93DF938C017B01C901F801B1 +:100B500001900020E9F73197BF01601B710B0E94E3 +:100B6000760B670120E1C20ED11CE7019C012E1912 +:100B70003F09F80101900020E9F73197BF01601BA0 +:100B8000710BC9018C0F9D1F0E94760BF801E80FB5 +:100B9000F91F80818993CC15DD0559F7F701108A7B +:100BA000DF91CF911F910F91FF90EF90DF90CF9049 +:100BB0000895AF92BF92CF92DF92EF92FF920F9380 +:100BC0001F931F930F93FF92EF925F934F933F9367 +:100BD0002F939F938F937F936F9386E193E09F93DF +:100BE0008F93BF92AF92DF92CF920E94AF0B8DB7DF +:100BF0009EB742960FB6F8949EBF0FBE8DBF1F9151 +:100C00000F91FF90EF90DF90CF90BF90AF9008953D +:100C10006F927F92AF92BF92CF92DF92EF92FF924C +:100C20000F931F93CF93DF93CDB7DEB7C254D10993 +:100C30000FB6F894DEBF0FBECDBF3C012091490333 +:100C400030914A0341E150E0BE016F5F7F4F0E9447 +:100C50009C05F301E85BFF4FE080F1800281138186 +:100C60003497208131814281538134976081718131 +:100C7000828193810F2EF1E1AF2EB12CF02DFE0178 +:100C800072966F010E94D90540E150E0BE016F5F8E +:100C90007F4FCE0183960E948A0B40E150E0B6015F +:100CA000CE01C3960E948A0B60E080E00E94E804B7 +:100CB000CE0183960E94310561E080E00E94E80445 +:100CC000CE01C3960E943105CE5BDF4F0FB6F8947C +:100CD000DEBF0FBECDBFDF91CF911F910F91FF906F +:100CE000EF90DF90CF90BF90AF907F906F9008957E +:100CF0000E94DE0683E08A95F1F7000010924B0314 +:100D0000089581110EC0683070F480914B03082E55 +:100D1000000C990B02C0959587956A95E2F7817052 +:100D200008958FEF08958FEF0895CF9381110DC02F +:100D3000C62F60934B038EE40E94E4068C2F0E9422 +:100D400014070E940B0780E001C08FEFCF91089538 +:100D5000CF93DF93811124C0683020F580914B033D +:100D6000442349F0C1E0D0E002C0CC0FDD1F6A95FA +:100D7000E2F7C82B09C0C1E0D0E002C0CC0FDD1FF4 +:100D80006A95E2F7C095C823C0934B038EE40E9496 +:100D9000E4068C2F0E9414070E940B0780E003C01A +:100DA0008FEF01C08FEFDF91CF91089541E00E9456 +:100DB000A806089540E00E94A80608951092B90080 +:100DC0008DEF8093B800089594EA9093BC00ECEB0B +:100DD000F0E090819923ECF79091B900987F9830DA +:100DE00011F09031A1F48093BB0084E88093BC00A3 +:100DF000ECEBF0E080818823ECF79091B900987FCC +:100E0000983139F081E0903429F480E0089581E050 +:100E1000089580E0089584E98093BC00ECEBF0E055 +:100E2000808184FDFDCF08958093BB0084E880938A +:100E3000BC00ECEBF0E080818823ECF79091B900E6 +:100E4000987F81E0983209F480E008954F925F9294 +:100E50006F927F928F929F92AF92BF92CF92DF92CA +:100E6000EF92FF920F931F93CF93DF93CDB7DEB72F +:100E7000C350D2400FB6F894DEBF0FBECDBF0E9464 +:100E800093050E949E0A68EC70E0CE0101960E94D4 +:100E90005300CE0101960E946C004AE050E0BE0172 +:100EA000665E7F4FCE0101960E9491006AE070E07D +:100EB000CE014A960E94AA0A64E170E0CE018051F8 +:100EC0009E4F0E94CE0A61E070E0CE0101960E9422 +:100ED000A801059681F44AE050E0BE01665E7F4FAE +:100EE000CE0101960E9491006AE070E0CE014A9620 +:100EF0000E94AA0AE1CF00E010E020E030E044E1E7 +:100F000050E0BE0160517E4FCE0101960E94070164 +:100F10008C019923ACF40A3F8FEF1807B1F444E138 +:100F200050E0BE01605A7E4FCE0101960E949100B2 +:100F300064E170E0CE01805A9E4F0E94AA0A05C06B +:100F40008981823009F0B8CF03C0802F912FFEC075 +:100F500084EA90E7ADE9BFE38CA39DA3AEA3BFA352 +:100F60008DEC9CECA0EBB1E488A799A7AAA7BBA73E +:100F700080E090E0A8ECB2E48CA79DA7AEA7BFA745 +:100F800083E090E099AB88AB85E293E09BAB8AABC2 +:100F900082E090E09DAB8CAB2E01E6E74E0E511C3B +:100FA0005F924F923E01F6E36F0E711C7F926F923B +:100FB0008CA09DA0AEA0BFA0C8A4D9A4EAA4FBA405 +:100FC0000CA51DA52EA53FA548A959A96AA97BA9CD +:100FD0008CA99DA90E945C09F20140815181B30155 +:100FE000CE0101960E94760048E450E0BE016858A8 +:100FF0007F4FCE0101960E94910068E470E0CE011F +:1010000088589F4F0E94AA0A0F900F900F900F9040 +:1010100060E970E0CE01805A9E4F0E94CE0A61E0E6 +:1010200070E0CE0101960E94A801059689F448E47B +:1010300050E0BE0168587F4FCE0101960E9491009A +:1010400068E470E0CE0188589F4F0E94AA0AE0CF62 +:101050008E0113959E0120543F4F40E950E0BE01A0 +:10106000605A7E4FCE0101960E9407018C019923A0 +:101070009CF40696B1F444E150E0BE0160517E4F0D +:10108000CE0101960E94910064E170E0CE01805192 +:101090009E4F0E94AA0A05C08981863009F0B8CF08 +:1010A00003C0802F912F52C0C050DF4F68817981DB +:1010B000C050D140AE014E5F5E4FCE0180549F4F75 +:1010C0000E94BE08CE5FDE4F88819981AA81BB81D4 +:1010D000C250D140CC5ADE4F88839983AA83BB8308 +:1010E000C455D140CA5FDE4F88819981AA81BB81F6 +:1010F000C650D140C85ADE4F88839983AA83BB83E8 +:10110000C855D140C65FDE4F88819981AA81BB81D5 +:10111000CA50D140C45ADE4F88839983AA83BB83C7 +:10112000CC55D140C05FDE4F68817981C051D1403C +:101130004FE350E0CE018C5E9E4F0E948A0BCE01A1 +:101140008C5E9E4F0E94080680E090E0CD5FDD4FF0 +:101150000FB6F894DEBF0FBECDBFDF91CF911F91C8 +:101160000F91FF90EF90DF90CF90BF90AF909F9046 +:101170008F907F906F905F904F9008958F929F9285 +:10118000AF92BF92CF92DF92EF92FF920F931F9395 +:10119000CF93DF93CDB7DEB7C054D1090FB6F89423 +:1011A000DEBF0FBECDBF4B01672B09F46CC020E042 +:1011B00030E060E070E0A12CB12C6E01E5E0CE0ED5 +:1011C000D11CFE0131967F01FC01E20FF31F20814B +:1011D000211127C0DB011196A80FB91FFE0131961E +:1011E0002D912193EC15FD05D9F76C5F7F4FF5012B +:1011F000EE0FFF1FEE0FFF1FE40FF51F09811A818D +:101200002B813C810083118322833383FA0124855F +:1012100035852F5F3F4F3587248795012F5F3F4FDF +:101220005901FC01E60FF71F2081213021F59B01B8 +:101230002F5F3F4FFC01E20FF31FE081EE2399F097 +:101240006E5F7F4FDC01A60FB71FF701B9016F5F1B +:101250007F4F2D91219330E08F010E191F09021746 +:101260001307ACF301C0B90129813A81FA0137872C +:101270002687118A108A6F5F7F4F9B016815790559 +:1012800008F4A2CF02C0A12CB12CFA01B586A48625 +:10129000C05CDF4F0FB6F894DEBF0FBECDBFDF914D +:1012A000CF911F910F91FF90EF90DF90CF90BF9063 +:1012B000AF909F908F9008954F925F926F927F9220 +:1012C0008F929F92AF92BF92CF92DF92EF92FF9256 +:1012D0000F931F93CF93DF93CDB7DEB7C255D109DC +:1012E0000FB6F894DEBF0FBECDBF22968FAE229709 +:1012F00023969FAE23972496AFAE24972596BFAE34 +:1013000025972696CFAE26972796DFAE2797289665 +:10131000EFAE28972996FFAE29972A960FAF2A9706 +:101320002B961FAF2B972C962FAF2C972D963FAF58 +:101330002D972E964FAF2E972F965FAF2F976096D3 +:101340006FAF609761967FAF619762968FAF62973C +:1013500063969FAF6397A7960EAD1FADA7972F9685 +:10136000CEACDFAC2F9763966EAD7FAD6397C114A3 +:10137000D10409F466C07801CE018F5B9F4F5601FE +:10138000AA0CBB1CAA0CBB1CA80EB91EAE014B5F5D +:101390005F4FF7011192DC014D905D906D907D9053 +:1013A000CD0149825A826B827C82DE0111963D9189 +:1013B0003193A417B507D9F7B5E0EB0EF11C8A15E8 +:1013C0009B0539F79601220F331F220F331F2C0D77 +:1013D0003D1D6115710509F1D801A20FB31F81E010 +:1013E0008C93D9011196A00FB11F2E5F3F4F6C93C4 +:1013F00061968EAD9FAD61979A838983DE011196C8 +:10140000F801E20FF31F80E090E02F5F3F4F4D9116 +:101410004193019686179707C0F3A996EEADFFADED +:10142000A9973183208313C081E0F8018083618311 +:1014300061968EAD9FAD61979A83898322E030E0FB +:10144000DDCF6115710581F720E030E0E6CFCE5A9F +:10145000DF4F0FB6F894DEBF0FBECDBFDF91CF9147 +:101460001F910F91FF90EF90DF90CF90BF90AF90C2 +:101470009F908F907F906F905F904F900895FC01A8 +:1014800081E090E030A121A1321711F080E090E0DE +:101490000895FC0121A130E02F5F3F4F2F7130787C +:1014A000332334F421503109206E3F6F2F5F3F4FBB +:1014B000FC0140A150E081E090E02417350711F0D5 +:1014C00080E090E008951F93CF93DF93EC01162FF7 +:1014D0000E94490A892B81F489A190E0FE01E80F5E +:1014E000F91F108301968F719078992324F4019746 +:1014F000806E9F6F019689A3DF91CF911F91089510 +:10150000FC0120A181A12817B1F030E0DF01A20F7A +:10151000B31F4C9150E02F5F3F4F2F713078332332 +:1015200034F421503109206E3F6F2F5F3F4F20A3CD +:10153000842F952F08958FEF9FEF089588EF809364 +:10154000C10086E08093C2001092C50087E68093B8 +:10155000C40008950F931F93CF93DF936115710516 +:1015600099F08C01EC01060F171F8EE693E00E94A4 +:10157000490A892B49F4699170E08EE693E00E9454 +:10158000630AC017D10789F7E1ECF0E0808180643D +:101590008083DF91CF911F910F9108958F929F9239 +:1015A000AF92BF92CF92DF92EF92FF920F931F9371 +:1015B000CF93DF938B01EC01C12CD12C76014B0131 +:1015C000A12CB12C0AC08CE493E00E94800A89937C +:1015D0008FEFC81AD80AE80AF80A8CE493E00E9450 +:1015E0003F0A892B29F4C814D904EA04FB0458F3F0 +:1015F00020E030E00C151D052E053F0510F0C6015A +:1016000002C08FEF9FEFDF91CF911F910F91FF905D +:10161000EF90DF90CF90BF90AF909F908F90089504 +:101620001F920F920FB60F9211242F933F934F9357 +:101630005F936F937F938F939F93AF93BF93CF935A +:10164000EF93FF93C091C6008CE493E00E94490A97 +:10165000892B31F46C2F70E08CE493E00E94630AD4 +:10166000FF91EF91CF91BF91AF919F918F917F911A +:101670006F915F914F913F912F910F900FBE0F90FF +:101680001F9018951F920F920FB60F9211242F934F +:101690003F934F935F936F937F938F939F93AF93FA +:1016A000BF93EF93FF938EE693E00E943F0A892B4E +:1016B00039F48EE693E00E94800A8093C60005C04C +:1016C000E1ECF0E080818F7B8083FF91EF91BF910F +:1016D000AF919F918F917F916F915F914F913F91CA +:1016E0002F910F900FBE0F901F901895AA1BBB1B38 +:1016F00051E107C0AA1FBB1FA617B70710F0A61B12 +:10170000B70B881F991F5A95A9F780959095BC0132 +:10171000CD010895FB01DC014150504048F001909B +:101720000D920020C9F701C01D9241505040E0F7D2 +:101730000895A0E0B0E0EFE9FBE00C94800EAE016C +:101740004B5F5F4FFA0161917191AF0180919203FC +:10175000909193030E94DF0BE2E00C949C0EAEE0AC +:10176000B0E0E5EBFBE00C947E0E0D891E898F89BD +:10177000988D26E02C831A83098397FF02C080E0AE +:1017800090E801979E838D83AE01455E5F4F698D22 +:101790007A8DCE0101960E94DF0B4D815E8157FD4F +:1017A0000AC02F813885421753070CF49A01F801BB +:1017B000E20FF31F10822E96E4E00C949A0EABE039 +:1017C000B0E0E5EEFBE00C94700E6C017B018A0149 +:1017D000FC0117821682838181FFCCC1CE01019664 +:1017E0003C01F6019381F70193FD859193FF81916F +:1017F0007F01882309F4BAC1853239F493FD8591BC +:1018000093FF81917F01853229F4B60190E00E9417 +:10181000D60DE7CF912C212C312CFFE1F315D8F018 +:101820008B3279F038F4803279F08332A1F4232DB1 +:1018300020611DC08D3261F0803369F4232D216059 +:1018400016C0832D8260382EE32DE4603E2E2AC020 +:10185000F32DF8601DC037FC2DC020ED280F2A3075 +:1018600040F08E32B9F436FC81C1232D2064322E33 +:1018700019C036FE06C08AE0989E200D1124922ED3 +:1018800011C0EAE02E9E200D1124222EF32DF062CD +:101890003F2E08C08C3621F4832D8068382E02C07C +:1018A000883641F4F70193FD859193FF81917F0183 +:1018B0008111B3CF982F9F7D9554933028F40C5FFE +:1018C0001F4F9FE399830DC0833631F0833771F04A +:1018D000833509F059C021C0F801808189830E5FEA +:1018E0001F4F88248394912C530113C02801F2E0E8 +:1018F0004F0E511CF801A080B18036FE03C0692D47 +:1019000070E002C06FEF7FEFC5010E94CB0D4C016C +:101910008201F32DFF773F2E16C0280122E0420EF0 +:10192000511CF801A080B18036FE03C0692D70E023 +:1019300002C06FEF7FEFC5010E94C00D4C01F32D77 +:10194000F0683F2E820133FC1BC0822D90E0881688 +:101950009906B0F4B60180E290E00E94D60D2A9478 +:10196000F4CFF50137FC859137FE81915F01B60117 +:1019700090E00E94D60D21102A9421E0821A91084D +:101980008114910471F7E8C0843611F0893641F56D +:10199000F80137FE07C060817181828193810C5FFD +:1019A0001F4F08C060817181072E000C880B990BB6 +:1019B0000E5F1F4FF32DFF763F2E97FF09C09095C6 +:1019C0008095709561957F4F8F4F9F4FF0683F2EA8 +:1019D0002AE030E0A3010E94120E882E861845C02E +:1019E000853731F4232D2F7EB22E2AE030E025C03A +:1019F000932D997FB92E8F36C1F018F4883579F080 +:101A0000B5C0803719F0883721F0B0C0E92FE06108 +:101A1000BE2EB4FE0DC0FB2DF460BF2E09C034FEF7 +:101A20000AC0292F2660B22E06C028E030E005C08B +:101A300020E130E002C020E132E0F801B7FE07C04B +:101A400060817181828193810C5F1F4F06C060812C +:101A5000718180E090E00E5F1F4FA3010E94120E83 +:101A6000882E8618FB2DFF773F2E36FE0DC0232DC6 +:101A70002E7FA22E891458F434FE0BC032FC09C00C +:101A8000832D8E7EA82E05C0B82CA32C03C0B82CA5 +:101A900001C0B92CA4FE0FC0FE01E80DF11D80812C +:101AA000803321F49A2D997EA92E09C0A2FE06C08A +:101AB000B394B39404C08A2D867809F0B394A3FC40 +:101AC00011C0A0FE06C0B21488F4280C922C9B18FA +:101AD0000EC0B21460F4B60180E290E00E94D60D10 +:101AE000B394F7CFB21418F42B1802C0982C212C01 +:101AF000A4FE10C0B60180E390E00E94D60DA2FEC5 +:101B000017C0A1FC03C088E790E002C088E590E020 +:101B1000B6010CC08A2D867859F0A1FE02C08BE276 +:101B200001C080E2A7FC8DE2B60190E00E94D60DD4 +:101B3000891438F4B60180E390E00E94D60D9A949F +:101B4000F7CF8A94F301E80DF11D8081B60190E092 +:101B50000E94D60D8110F5CF222009F442CEB601A5 +:101B600080E290E00E94D60D2A94F6CFF60186819D +:101B7000978102C08FEF9FEF2B96E2E10C948C0EC1 +:101B8000FC010590615070400110D8F78095909548 +:101B90008E0F9F1F0895FC0161507040019001104D +:101BA000D8F7809590958E0F9F1F08950F931F93E0 +:101BB000CF93DF93FB01238121FD03C08FEF9FEFC4 +:101BC0002CC022FF16C046815781248135814217DF +:101BD000530744F4A081B1819D012F5F3F4F3183B2 +:101BE00020838C93268137812F5F3F4F3783268355 +:101BF00014C08B01EC01FB010084F185E02D0995F7 +:101C0000892BE1F6D80116968D919C911797019634 +:101C100017969C938E931697CE01DF91CF911F91CB +:101C20000F910895FA01AA27283051F1203181F14E +:101C3000E8946F936E7F6E5F7F4F8F4F9F4FAF4FD4 +:101C4000B1E03ED0B4E03CD0670F781F891F9A1FE7 +:101C5000A11D680F791F8A1F911DA11D6A0F711D9B +:101C6000811D911DA11D20D009F468943F912AE0A7 +:101C7000269F11243019305D3193DEF6CF0108958F +:101C8000462F4770405D4193B3E00FD0C9F7F6CFC0 +:101C9000462F4F70405D4A3318F0495D31FD405288 +:101CA000419302D0A9F7EACFB4E0A695979587951E +:101CB00077956795BA95C9F70097610571050895FD +:101CC0009B01AC010A2E06945795479537952795A9 +:101CD000BA95C9F7620F731F841F951FA01D089541 +:101CE0002F923F924F925F926F927F928F929F922C +:101CF000AF92BF92CF92DF92EF92FF920F931F931A +:101D0000CF93DF93CDB7DEB7CA1BDB0B0FB6F894CA +:101D1000DEBF0FBECDBF09942A88398848885F840A +:101D20006E847D848C849B84AA84B984C884DF807B +:101D3000EE80FD800C811B81AA81B981CE0FD11D5F +:101D40000FB6F894DEBF0FBECDBFED010895F89435 +:021D5000FFCFC3 +:101D520065727220696E206765745F6672616D6577 +:101D62003A2025640A000000891112239B3224467E +:101D7200AD573665BF74488CC19D5AAFD3BE6CCA8D +:101D8200E5DB7EE9F7F88110080193331A22A556A4 +:101D92002C47B7753E64C99C408DDBBF52AEEDDA6D +:101DA20064CBFFF976E802218B3010029913266783 +:101DB200AF763444BD554AADC3BC588ED19F6EEB4D +:101DC200E7FA7CC8F5D983310A2091121803A77764 +:101DD2002E66B5543C45CBBD42ACD99E508FEFFB2D +:101DE20066EAFDD874C904428D5316619F702004BF +:101DF200A9153227BB364CCEC5DF5EEDD7FC68880D +:101E0200E1997AABF3BA85520C4397711E60A11423 +:101E12002805B3373A26CDDE44CFDFFD56ECE998EC +:101E22006089FBBB72AA06638F7214409D51222502 +:101E3200AB343006B9174EEFC7FE5CCCD5DD6AA9CC +:101E4200E3B8788AF19B87730E6295501C41A335E3 +:101E52002A24B1163807CFFF46EEDDDC54CDEBB9AC +:101E620062A8F99A708B088481951AA793B62CC23E +:101E7200A5D33EE1B7F04008C919522BDB3A644EB4 +:101E8200ED5F766DFF7C899400859BB712A6ADD27B +:101E920024C3BFF136E0C1184809D33B5A2AE55E94 +:101EA2006C4FF77D7E6C0AA583B4188691972EE35A +:101EB200A7F23CC0B5D14229CB38500AD91B666F74 +:101EC200EF7E744CFD5D8BB502A499961087AFF33B +:101ED20026E2BDD034C1C3394A28D11A580BE77F54 +:101EE2006E6EF55C7C4D0CC685D71EE597F4288096 +:101EF200A1913AA3B3B2444ACD5B5669DF78600C34 +:101F0200E91D722FFB3E8DD604C79FF516E4A990FA +:101F12002081BBB332A2C55A4C4BD7795E68E11C13 +:101F2200680DF33F7A2E0EE787F61CC495D52AA1D9 +:101F3200A3B03882B193466BCF7A5448DD59622DF3 +:101F4200EB3C700EF91F8FF706E69DD414C5ABB1BA +:101F520022A0B9923083C77B4E6AD5585C49E33DD3 +:101F62006A2CF11E780F252E32662E252E32662E11 +:101F7200252E326600776F72642077617220696E57 +:101F8200206E657720776F726C6420696F206578A8 +:021F920000004D +:00000001FF diff --git a/hdlc_screen/Debug/hdlc_screen.lss b/hdlc_screen/Debug/hdlc_screen.lss new file mode 100644 index 0000000..116c3eb --- /dev/null +++ b/hdlc_screen/Debug/hdlc_screen.lss @@ -0,0 +1,4530 @@ + +hdlc_screen.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 00000242 00800100 00001d52 00001de6 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 00001d52 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 00000054 00800342 00800342 00002028 2**0 + ALLOC + 3 .comment 0000008c 00000000 00000000 00002028 2**0 + CONTENTS, READONLY + 4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 000020b4 2**2 + CONTENTS, READONLY + 5 .debug_aranges 00000320 00000000 00000000 000020f4 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_info 0000378f 00000000 00000000 00002414 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 00001589 00000000 00000000 00005ba3 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00001e37 00000000 00000000 0000712c 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_frame 000009a0 00000000 00000000 00008f64 2**2 + CONTENTS, READONLY, DEBUGGING + 10 .debug_str 00000cc5 00000000 00000000 00009904 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_loc 00002fe7 00000000 00000000 0000a5c9 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_ranges 000002e8 00000000 00000000 0000d5b0 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 34 00 jmp 0x68 ; 0x68 <__ctors_end> + 4: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 8: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 10: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 14: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 18: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 1c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 20: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 24: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 28: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 2c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 30: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 34: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 38: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 3c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 40: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 44: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 48: 0c 94 10 0b jmp 0x1620 ; 0x1620 <__vector_18> + 4c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 50: 0c 94 42 0b jmp 0x1684 ; 0x1684 <__vector_20> + 54: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 58: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 5c: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 60: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + 64: 0c 94 51 00 jmp 0xa2 ; 0xa2 <__bad_interrupt> + +00000068 <__ctors_end>: + 68: 11 24 eor r1, r1 + 6a: 1f be out 0x3f, r1 ; 63 + 6c: cf ef ldi r28, 0xFF ; 255 + 6e: d8 e0 ldi r29, 0x08 ; 8 + 70: de bf out 0x3e, r29 ; 62 + 72: cd bf out 0x3d, r28 ; 61 + +00000074 <__do_copy_data>: + 74: 13 e0 ldi r17, 0x03 ; 3 + 76: a0 e0 ldi r26, 0x00 ; 0 + 78: b1 e0 ldi r27, 0x01 ; 1 + 7a: e2 e5 ldi r30, 0x52 ; 82 + 7c: fd e1 ldi r31, 0x1D ; 29 + 7e: 02 c0 rjmp .+4 ; 0x84 <__do_copy_data+0x10> + 80: 05 90 lpm r0, Z+ + 82: 0d 92 st X+, r0 + 84: a2 34 cpi r26, 0x42 ; 66 + 86: b1 07 cpc r27, r17 + 88: d9 f7 brne .-10 ; 0x80 <__do_copy_data+0xc> + +0000008a <__do_clear_bss>: + 8a: 23 e0 ldi r18, 0x03 ; 3 + 8c: a2 e4 ldi r26, 0x42 ; 66 + 8e: b3 e0 ldi r27, 0x03 ; 3 + 90: 01 c0 rjmp .+2 ; 0x94 <.do_clear_bss_start> + +00000092 <.do_clear_bss_loop>: + 92: 1d 92 st X+, r1 + +00000094 <.do_clear_bss_start>: + 94: a6 39 cpi r26, 0x96 ; 150 + 96: b2 07 cpc r27, r18 + 98: e1 f7 brne .-8 ; 0x92 <.do_clear_bss_loop> + 9a: 0e 94 26 07 call 0xe4c ; 0xe4c
+ 9e: 0c 94 a7 0e jmp 0x1d4e ; 0x1d4e <_exit> + +000000a2 <__bad_interrupt>: + a2: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000a6 : + +#define SIZE_DATA_BUFFERS 64 + +int connecting_frame_timeout_bf; + +void init_hdlc_client(struct Client* client, int connecting_frame_timeout){ + a6: fc 01 movw r30, r24 + client->state = IDLE_STATE; + a8: 81 e0 ldi r24, 0x01 ; 1 + aa: 80 83 st Z, r24 + client->connecting_frame_timeout = connecting_frame_timeout; + ac: 72 83 std Z+2, r23 ; 0x02 + ae: 61 83 std Z+1, r22 ; 0x01 + connecting_frame_timeout_bf = connecting_frame_timeout; + b0: 70 93 44 03 sts 0x0344, r23 ; 0x800344 + b4: 60 93 43 03 sts 0x0343, r22 ; 0x800343 + client->current_index_frame = 20; + b8: 84 e1 ldi r24, 0x14 ; 20 + ba: 83 83 std Z+3, r24 ; 0x03 + + client->current_state_hdlc.control_escape = 0; + bc: 14 82 std Z+4, r1 ; 0x04 + client->current_state_hdlc.fcs = FCS_INIT_VALUE; + be: 8f ef ldi r24, 0xFF ; 255 + c0: 9f ef ldi r25, 0xFF ; 255 + c2: 96 83 std Z+6, r25 ; 0x06 + c4: 85 83 std Z+5, r24 ; 0x05 + client->current_state_hdlc.start_index = -1; + c6: 90 87 std Z+8, r25 ; 0x08 + c8: 87 83 std Z+7, r24 ; 0x07 + client->current_state_hdlc.end_index = -1; + ca: 92 87 std Z+10, r25 ; 0x0a + cc: 81 87 std Z+9, r24 ; 0x09 + client->current_state_hdlc.src_index = 0; + ce: 14 86 std Z+12, r1 ; 0x0c + d0: 13 86 std Z+11, r1 ; 0x0b + client->current_state_hdlc.dest_index = 0; + d2: 16 86 std Z+14, r1 ; 0x0e + d4: 15 86 std Z+13, r1 ; 0x0d + d6: 08 95 ret + +000000d8 : +} + +void hdlc_connect(struct Client* client){ + d8: fc 01 movw r30, r24 + client->state = CONNECTING; + da: 83 e0 ldi r24, 0x03 ; 3 + dc: 80 83 st Z, r24 + + client->frameS.seq_no = 0; + de: 80 89 ldd r24, Z+16 ; 0x10 + e0: 88 7f andi r24, 0xF8 ; 248 + e2: 80 8b std Z+16, r24 ; 0x10 + client->frameS.frame = S_FRAME; + e4: 81 e0 ldi r24, 0x01 ; 1 + e6: 87 87 std Z+15, r24 ; 0x0f + client->current_index_frame = client->frameS.seq_no; + e8: 13 82 std Z+3, r1 ; 0x03 + ea: 08 95 ret + +000000ec : +} + +int hdlc_send_data(struct Client* client, uint8_t data[], size_t data_len){ + ec: fc 01 movw r30, r24 + if (client->state != READY_STATE){ + ee: 80 81 ld r24, Z + f0: 82 30 cpi r24, 0x02 ; 2 + f2: 89 f4 brne .+34 ; 0x116 + return ERR_INVALID_STATE; + } + + client->state = RECIVING; + f4: 85 e0 ldi r24, 0x05 ; 5 + f6: 80 83 st Z, r24 + + if (SIZE_DATA_BUFFERS < data_len){ + f8: 41 34 cpi r20, 0x41 ; 65 + fa: 51 05 cpc r21, r1 + fc: 78 f4 brcc .+30 ; 0x11c + return ERR_INVALID_DATA_SIZE; + } + + client->frameI.seq_no = 0; + fe: 82 89 ldd r24, Z+18 ; 0x12 + 100: 88 7f andi r24, 0xF8 ; 248 + 102: 82 8b std Z+18, r24 ; 0x12 + client->frameI.frame = I_FRAME; + 104: 11 8a std Z+17, r1 ; 0x11 + client->data_i_frame = data; + 106: 74 8b std Z+20, r23 ; 0x14 + 108: 63 8b std Z+19, r22 ; 0x13 + client->len_data_i_frame = data_len; + 10a: 56 8b std Z+22, r21 ; 0x16 + 10c: 45 8b std Z+21, r20 ; 0x15 + client->current_index_frame = client->frameI.seq_no; + 10e: 13 82 std Z+3, r1 ; 0x03 + + client->state = RECIVING; + return 0; + 110: 80 e0 ldi r24, 0x00 ; 0 + 112: 90 e0 ldi r25, 0x00 ; 0 + 114: 08 95 ret + client->current_index_frame = client->frameS.seq_no; +} + +int hdlc_send_data(struct Client* client, uint8_t data[], size_t data_len){ + if (client->state != READY_STATE){ + return ERR_INVALID_STATE; + 116: 8c ef ldi r24, 0xFC ; 252 + 118: 9f ef ldi r25, 0xFF ; 255 + 11a: 08 95 ret + } + + client->state = RECIVING; + + if (SIZE_DATA_BUFFERS < data_len){ + return ERR_INVALID_DATA_SIZE; + 11c: 8f ef ldi r24, 0xFF ; 255 + 11e: 9f ef ldi r25, 0xFF ; 255 + client->len_data_i_frame = data_len; + client->current_index_frame = client->frameI.seq_no; + + client->state = RECIVING; + return 0; +} + 120: 08 95 ret + +00000122 : + +int hdlc_get_raw_frame(struct Client *client, uint8_t* buffer, size_t lenBuffer) { + 122: cf 92 push r12 + 124: df 92 push r13 + 126: ef 92 push r14 + 128: ff 92 push r15 + 12a: 0f 93 push r16 + 12c: 1f 93 push r17 + 12e: cf 93 push r28 + 130: df 93 push r29 + 132: 00 d0 rcall .+0 ; 0x134 + 134: cd b7 in r28, 0x3d ; 61 + 136: de b7 in r29, 0x3e ; 62 + 138: 7c 01 movw r14, r24 + 13a: 6b 01 movw r12, r22 + 13c: 5a 83 std Y+2, r21 ; 0x02 + 13e: 49 83 std Y+1, r20 ; 0x01 + if(client->state == RECIVING){ + 140: fc 01 movw r30, r24 + 142: 80 81 ld r24, Z + 144: 85 30 cpi r24, 0x05 ; 5 + 146: d1 f4 brne .+52 ; 0x17c + int ret = hdlc_frame_data(&client->frameI, client->data_i_frame, + 148: 45 89 ldd r20, Z+21 ; 0x15 + 14a: 56 89 ldd r21, Z+22 ; 0x16 + 14c: 63 89 ldd r22, Z+19 ; 0x13 + 14e: 74 89 ldd r23, Z+20 ; 0x14 + 150: 8e 01 movw r16, r28 + 152: 0f 5f subi r16, 0xFF ; 255 + 154: 1f 4f sbci r17, 0xFF ; 255 + 156: 96 01 movw r18, r12 + 158: c7 01 movw r24, r14 + 15a: 41 96 adiw r24, 0x11 ; 17 + 15c: 0e 94 48 03 call 0x690 ; 0x690 + client->len_data_i_frame, buffer, &lenBuffer); + if (ret < 0){ + 160: 99 23 and r25, r25 + 162: 64 f4 brge .+24 ; 0x17c + printf("err in get_frame: %d\n", ret); + 164: 9f 93 push r25 + 166: 8f 93 push r24 + 168: 80 e0 ldi r24, 0x00 ; 0 + 16a: 91 e0 ldi r25, 0x01 ; 1 + 16c: 9f 93 push r25 + 16e: 8f 93 push r24 + 170: 0e 94 99 0b call 0x1732 ; 0x1732 + 174: 0f 90 pop r0 + 176: 0f 90 pop r0 + 178: 0f 90 pop r0 + 17a: 0f 90 pop r0 + } + } + + if (client->state == CONNECTING){ + 17c: f7 01 movw r30, r14 + 17e: 80 81 ld r24, Z + 180: 83 30 cpi r24, 0x03 ; 3 + 182: d1 f4 brne .+52 ; 0x1b8 + int ret = hdlc_frame_data(&client->frameS, NULL, 0, buffer, &lenBuffer); + 184: 8e 01 movw r16, r28 + 186: 0f 5f subi r16, 0xFF ; 255 + 188: 1f 4f sbci r17, 0xFF ; 255 + 18a: 96 01 movw r18, r12 + 18c: 40 e0 ldi r20, 0x00 ; 0 + 18e: 50 e0 ldi r21, 0x00 ; 0 + 190: 60 e0 ldi r22, 0x00 ; 0 + 192: 70 e0 ldi r23, 0x00 ; 0 + 194: c7 01 movw r24, r14 + 196: 0f 96 adiw r24, 0x0f ; 15 + 198: 0e 94 48 03 call 0x690 ; 0x690 + + if (ret < 0){ + 19c: 99 23 and r25, r25 + 19e: 64 f4 brge .+24 ; 0x1b8 + printf("err in get_frame: %d\n", ret); + 1a0: 9f 93 push r25 + 1a2: 8f 93 push r24 + 1a4: 80 e0 ldi r24, 0x00 ; 0 + 1a6: 91 e0 ldi r25, 0x01 ; 1 + 1a8: 9f 93 push r25 + 1aa: 8f 93 push r24 + 1ac: 0e 94 99 0b call 0x1732 ; 0x1732 + 1b0: 0f 90 pop r0 + 1b2: 0f 90 pop r0 + 1b4: 0f 90 pop r0 + 1b6: 0f 90 pop r0 + } + } + + if (client->state == DISCONNECTING){ + 1b8: f7 01 movw r30, r14 + 1ba: 80 81 ld r24, Z + 1bc: 84 30 cpi r24, 0x04 ; 4 + 1be: d1 f4 brne .+52 ; 0x1f4 + int ret = hdlc_frame_data(&client->frame_rej, NULL, 0, buffer, &lenBuffer); + 1c0: 8e 01 movw r16, r28 + 1c2: 0f 5f subi r16, 0xFF ; 255 + 1c4: 1f 4f sbci r17, 0xFF ; 255 + 1c6: 96 01 movw r18, r12 + 1c8: 40 e0 ldi r20, 0x00 ; 0 + 1ca: 50 e0 ldi r21, 0x00 ; 0 + 1cc: 60 e0 ldi r22, 0x00 ; 0 + 1ce: 70 e0 ldi r23, 0x00 ; 0 + 1d0: c7 01 movw r24, r14 + 1d2: 47 96 adiw r24, 0x17 ; 23 + 1d4: 0e 94 48 03 call 0x690 ; 0x690 + + if (ret < 0){ + 1d8: 99 23 and r25, r25 + 1da: 64 f4 brge .+24 ; 0x1f4 + printf("err in get_frame: %d\n", ret); + 1dc: 9f 93 push r25 + 1de: 8f 93 push r24 + 1e0: 80 e0 ldi r24, 0x00 ; 0 + 1e2: 91 e0 ldi r25, 0x01 ; 1 + 1e4: 9f 93 push r25 + 1e6: 8f 93 push r24 + 1e8: 0e 94 99 0b call 0x1732 ; 0x1732 + 1ec: 0f 90 pop r0 + 1ee: 0f 90 pop r0 + 1f0: 0f 90 pop r0 + 1f2: 0f 90 pop r0 + } + } + + return 0; +} + 1f4: 80 e0 ldi r24, 0x00 ; 0 + 1f6: 90 e0 ldi r25, 0x00 ; 0 + 1f8: 0f 90 pop r0 + 1fa: 0f 90 pop r0 + 1fc: df 91 pop r29 + 1fe: cf 91 pop r28 + 200: 1f 91 pop r17 + 202: 0f 91 pop r16 + 204: ff 90 pop r15 + 206: ef 90 pop r14 + 208: df 90 pop r13 + 20a: cf 90 pop r12 + 20c: 08 95 ret + +0000020e : + +int hdlc_decode_recived_raw_data(struct Client* client, uint8_t* buffer, size_t len_buffer, uint8_t* recived_data, size_t* len_recived_data){ + 20e: 2f 92 push r2 + 210: 3f 92 push r3 + 212: 4f 92 push r4 + 214: 5f 92 push r5 + 216: 6f 92 push r6 + 218: 7f 92 push r7 + 21a: 8f 92 push r8 + 21c: 9f 92 push r9 + 21e: af 92 push r10 + 220: bf 92 push r11 + 222: cf 92 push r12 + 224: df 92 push r13 + 226: ef 92 push r14 + 228: ff 92 push r15 + 22a: 0f 93 push r16 + 22c: 1f 93 push r17 + 22e: cf 93 push r28 + 230: df 93 push r29 + 232: 00 d0 rcall .+0 ; 0x234 + 234: 00 d0 rcall .+0 ; 0x236 + 236: cd b7 in r28, 0x3d ; 61 + 238: de b7 in r29, 0x3e ; 62 + 23a: 5c 01 movw r10, r24 + 23c: 5c 83 std Y+4, r21 ; 0x04 + 23e: 4b 83 std Y+3, r20 ; 0x03 + 240: 22 2e mov r2, r18 + 242: 33 2e mov r3, r19 + 244: 38 01 movw r6, r16 + return ERR_INVALID_SEQ_NUMBER_FRAME; + } + + client->connecting_frame_timeout = connecting_frame_timeout_bf; + return 0; +} + 246: 8d b6 in r8, 0x3d ; 61 + 248: 9e b6 in r9, 0x3e ; 62 + return 0; +} + +int hdlc_decode_recived_raw_data(struct Client* client, uint8_t* buffer, size_t len_buffer, uint8_t* recived_data, size_t* len_recived_data){ + hdlc_control_t recv_control; + uint8_t recive[len_buffer]; + 24a: c4 2e mov r12, r20 + 24c: d5 2e mov r13, r21 + 24e: 8d b7 in r24, 0x3d ; 61 + 250: 9e b7 in r25, 0x3e ; 62 + 252: 8c 19 sub r24, r12 + 254: 9d 09 sbc r25, r13 + 256: 0f b6 in r0, 0x3f ; 63 + 258: f8 94 cli + 25a: 9e bf out 0x3e, r25 ; 62 + 25c: 0f be out 0x3f, r0 ; 63 + 25e: 8d bf out 0x3d, r24 ; 61 + 260: ed b7 in r30, 0x3d ; 61 + 262: fe b7 in r31, 0x3e ; 62 + 264: 31 96 adiw r30, 0x01 ; 1 + 266: 2f 01 movw r4, r30 + + int ret = hdlc_get_data_with_state(&client->current_state_hdlc,&recv_control, buffer, len_buffer, recive, + 268: ce 01 movw r24, r28 + 26a: 03 96 adiw r24, 0x03 ; 3 + 26c: 7c 01 movw r14, r24 + 26e: 8f 01 movw r16, r30 + 270: 96 01 movw r18, r12 + 272: ab 01 movw r20, r22 + 274: be 01 movw r22, r28 + 276: 6f 5f subi r22, 0xFF ; 255 + 278: 7f 4f sbci r23, 0xFF ; 255 + 27a: c5 01 movw r24, r10 + 27c: 04 96 adiw r24, 0x04 ; 4 + 27e: 0e 94 22 02 call 0x444 ; 0x444 + &len_buffer); + + if (ret < 0) { + 282: 99 23 and r25, r25 + 284: 0c f4 brge .+2 ; 0x288 + 286: 48 c0 rjmp .+144 ; 0x318 + return ret; + } + + if (recv_control.seq_no != client->current_index_frame){ + 288: 8a 81 ldd r24, Y+2 ; 0x02 + 28a: 87 70 andi r24, 0x07 ; 7 + 28c: 90 e0 ldi r25, 0x00 ; 0 + 28e: f5 01 movw r30, r10 + 290: 23 81 ldd r18, Z+3 ; 0x03 + 292: 30 e0 ldi r19, 0x00 ; 0 + 294: 82 17 cp r24, r18 + 296: 93 07 cpc r25, r19 + 298: 51 f0 breq .+20 ; 0x2ae + client->state = DISCONNECTING; + 29a: 84 e0 ldi r24, 0x04 ; 4 + 29c: 80 83 st Z, r24 + client->frame_rej.seq_no = 0; + 29e: 80 8d ldd r24, Z+24 ; 0x18 + 2a0: 88 7f andi r24, 0xF8 ; 248 + 2a2: 80 8f std Z+24, r24 ; 0x18 + client->frame_rej.frame = S_FRAME_NACK; + 2a4: 82 e0 ldi r24, 0x02 ; 2 + 2a6: 87 8b std Z+23, r24 ; 0x17 + return ERR_INVALID_SEQ_NUMBER_FRAME; + 2a8: 8a ef ldi r24, 0xFA ; 250 + 2aa: 9f ef ldi r25, 0xFF ; 255 + 2ac: 35 c0 rjmp .+106 ; 0x318 + } + + switch (recv_control.frame) { + 2ae: 89 81 ldd r24, Y+1 ; 0x01 + 2b0: 81 30 cpi r24, 0x01 ; 1 + 2b2: 49 f0 breq .+18 ; 0x2c6 + 2b4: 18 f0 brcs .+6 ; 0x2bc + 2b6: 82 30 cpi r24, 0x02 ; 2 + 2b8: d9 f0 breq .+54 ; 0x2f0 + 2ba: 25 c0 rjmp .+74 ; 0x306 + case S_FRAME: + client->state = READY_STATE; + break; + case I_FRAME: + for (int i = 0; i < sizeof(recive)-2; i++){ + 2bc: f2 e0 ldi r31, 0x02 ; 2 + 2be: cf 1a sub r12, r31 + 2c0: d1 08 sbc r13, r1 + 2c2: 29 f4 brne .+10 ; 0x2ce + 2c4: 0e c0 rjmp .+28 ; 0x2e2 + return ERR_INVALID_SEQ_NUMBER_FRAME; + } + + switch (recv_control.frame) { + case S_FRAME: + client->state = READY_STATE; + 2c6: 82 e0 ldi r24, 0x02 ; 2 + 2c8: f5 01 movw r30, r10 + 2ca: 80 83 st Z, r24 + break; + 2cc: 1c c0 rjmp .+56 ; 0x306 + 2ce: f2 01 movw r30, r4 + 2d0: a2 2d mov r26, r2 + 2d2: b3 2d mov r27, r3 + 2d4: 4c 0c add r4, r12 + 2d6: 5d 1c adc r5, r13 + case I_FRAME: + for (int i = 0; i < sizeof(recive)-2; i++){ + recived_data[i] = recive[i]; + 2d8: 81 91 ld r24, Z+ + 2da: 8d 93 st X+, r24 + switch (recv_control.frame) { + case S_FRAME: + client->state = READY_STATE; + break; + case I_FRAME: + for (int i = 0; i < sizeof(recive)-2; i++){ + 2dc: e4 15 cp r30, r4 + 2de: f5 05 cpc r31, r5 + 2e0: d9 f7 brne .-10 ; 0x2d8 + recived_data[i] = recive[i]; + } + + *len_recived_data = sizeof(recive)-2; + 2e2: f3 01 movw r30, r6 + 2e4: d1 82 std Z+1, r13 ; 0x01 + 2e6: c0 82 st Z, r12 + + client->state = SEND; + 2e8: 86 e0 ldi r24, 0x06 ; 6 + 2ea: f5 01 movw r30, r10 + 2ec: 80 83 st Z, r24 + break; + 2ee: 0b c0 rjmp .+22 ; 0x306 + case S_FRAME_NACK: + client->state = DISCONNECTING; + 2f0: 84 e0 ldi r24, 0x04 ; 4 + 2f2: f5 01 movw r30, r10 + 2f4: 80 83 st Z, r24 + client->frame_rej.seq_no = 0; + 2f6: 80 8d ldd r24, Z+24 ; 0x18 + 2f8: 88 7f andi r24, 0xF8 ; 248 + 2fa: 80 8f std Z+24, r24 ; 0x18 + client->frame_rej.frame = S_FRAME_NACK; + 2fc: 82 e0 ldi r24, 0x02 ; 2 + 2fe: 87 8b std Z+23, r24 ; 0x17 + return ERR_INVALID_SEQ_NUMBER_FRAME; + 300: 8a ef ldi r24, 0xFA ; 250 + 302: 9f ef ldi r25, 0xFF ; 255 + 304: 09 c0 rjmp .+18 ; 0x318 + } + + client->connecting_frame_timeout = connecting_frame_timeout_bf; + 306: 80 91 43 03 lds r24, 0x0343 ; 0x800343 + 30a: 90 91 44 03 lds r25, 0x0344 ; 0x800344 + 30e: f5 01 movw r30, r10 + 310: 92 83 std Z+2, r25 ; 0x02 + 312: 81 83 std Z+1, r24 ; 0x01 + return 0; + 314: 80 e0 ldi r24, 0x00 ; 0 + 316: 90 e0 ldi r25, 0x00 ; 0 +} + 318: 0f b6 in r0, 0x3f ; 63 + 31a: f8 94 cli + 31c: 9e be out 0x3e, r9 ; 62 + 31e: 0f be out 0x3f, r0 ; 63 + 320: 8d be out 0x3d, r8 ; 61 + 322: 0f 90 pop r0 + 324: 0f 90 pop r0 + 326: 0f 90 pop r0 + 328: 0f 90 pop r0 + 32a: df 91 pop r29 + 32c: cf 91 pop r28 + 32e: 1f 91 pop r17 + 330: 0f 91 pop r16 + 332: ff 90 pop r15 + 334: ef 90 pop r14 + 336: df 90 pop r13 + 338: cf 90 pop r12 + 33a: bf 90 pop r11 + 33c: af 90 pop r10 + 33e: 9f 90 pop r9 + 340: 8f 90 pop r8 + 342: 7f 90 pop r7 + 344: 6f 90 pop r6 + 346: 5f 90 pop r5 + 348: 4f 90 pop r4 + 34a: 3f 90 pop r3 + 34c: 2f 90 pop r2 + 34e: 08 95 ret + +00000350 : + +int hdlc_timeout_handler(struct Client* client, int delta_time){ + client->connecting_frame_timeout -= delta_time; + 350: fc 01 movw r30, r24 + 352: 21 81 ldd r18, Z+1 ; 0x01 + 354: 32 81 ldd r19, Z+2 ; 0x02 + 356: 26 1b sub r18, r22 + 358: 37 0b sbc r19, r23 + 35a: 32 83 std Z+2, r19 ; 0x02 + 35c: 21 83 std Z+1, r18 ; 0x01 + + if (client->connecting_frame_timeout <= 0){ + 35e: 12 16 cp r1, r18 + 360: 13 06 cpc r1, r19 + 362: 1c f4 brge .+6 ; 0x36a + return ERR_FRAME_TIME_OUT; + } + return 0; + 364: 80 e0 ldi r24, 0x00 ; 0 + 366: 90 e0 ldi r25, 0x00 ; 0 + 368: 08 95 ret + +int hdlc_timeout_handler(struct Client* client, int delta_time){ + client->connecting_frame_timeout -= delta_time; + + if (client->connecting_frame_timeout <= 0){ + return ERR_FRAME_TIME_OUT; + 36a: 8b ef ldi r24, 0xFB ; 251 + 36c: 9f ef ldi r25, 0xFF ; 255 + } + return 0; + 36e: 08 95 ret + +00000370 : + 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, + 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, + 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78 }; + +FCS_SIZE calc_fcs(FCS_SIZE fcs, unsigned char value) { + return (fcs >> 8) ^ fcstab[(fcs ^ value) & 0xff]; + 370: fc 01 movw r30, r24 + 372: e6 27 eor r30, r22 + 374: ff 27 eor r31, r31 + 376: ee 0f add r30, r30 + 378: ff 1f adc r31, r31 + 37a: ea 5e subi r30, 0xEA ; 234 + 37c: fe 4f sbci r31, 0xFE ; 254 + 37e: 89 2f mov r24, r25 + 380: 99 27 eor r25, r25 + 382: 20 81 ld r18, Z + 384: 31 81 ldd r19, Z+1 ; 0x01 + 386: 82 27 eor r24, r18 + 388: 93 27 eor r25, r19 + 38a: 08 95 ret + +0000038c : +//int hdlc_get_data(hdlc_control_t *control, const char *src, +// unsigned int src_len, char *dest, unsigned int *dest_len) +int hdlc_get_data(hdlc_control_t *control, uint8_t *src, + size_t src_len, uint8_t *dest, size_t *dest_len){ + return hdlc_get_data_with_state(&hdlc_state, control, src, src_len, dest, dest_len); +} + 38c: fa 01 movw r30, r20 + 38e: 93 e8 ldi r25, 0x83 ; 131 + 390: 98 0f add r25, r24 + 392: 92 30 cpi r25, 0x02 ; 2 + 394: 70 f4 brcc .+28 ; 0x3b2 + 396: 20 81 ld r18, Z + 398: 31 81 ldd r19, Z+1 ; 0x01 + 39a: a9 01 movw r20, r18 + 39c: 4f 5f subi r20, 0xFF ; 255 + 39e: 5f 4f sbci r21, 0xFF ; 255 + 3a0: 51 83 std Z+1, r21 ; 0x01 + 3a2: 40 83 st Z, r20 + 3a4: db 01 movw r26, r22 + 3a6: a2 0f add r26, r18 + 3a8: b3 1f adc r27, r19 + 3aa: 9d e7 ldi r25, 0x7D ; 125 + 3ac: 9c 93 st X, r25 + 3ae: 90 e2 ldi r25, 0x20 ; 32 + 3b0: 89 27 eor r24, r25 + 3b2: 20 81 ld r18, Z + 3b4: 31 81 ldd r19, Z+1 ; 0x01 + 3b6: a9 01 movw r20, r18 + 3b8: 4f 5f subi r20, 0xFF ; 255 + 3ba: 5f 4f sbci r21, 0xFF ; 255 + 3bc: 51 83 std Z+1, r21 ; 0x01 + 3be: 40 83 st Z, r20 + 3c0: fb 01 movw r30, r22 + 3c2: e2 0f add r30, r18 + 3c4: f3 1f adc r31, r19 + 3c6: 80 83 st Z, r24 + 3c8: 08 95 ret + +000003ca : + 3ca: 98 2f mov r25, r24 + 3cc: 80 ff sbrs r24, 0 + 3ce: 0b c0 rjmp .+22 ; 0x3e6 + 3d0: 86 95 lsr r24 + 3d2: 86 95 lsr r24 + 3d4: 83 70 andi r24, 0x03 ; 3 + 3d6: 11 f0 breq .+4 ; 0x3dc + 3d8: 82 e0 ldi r24, 0x02 ; 2 + 3da: 01 c0 rjmp .+2 ; 0x3de + 3dc: 81 e0 ldi r24, 0x01 ; 1 + 3de: 92 95 swap r25 + 3e0: 96 95 lsr r25 + 3e2: 97 70 andi r25, 0x07 ; 7 + 3e4: 03 c0 rjmp .+6 ; 0x3ec + 3e6: 96 95 lsr r25 + 3e8: 97 70 andi r25, 0x07 ; 7 + 3ea: 80 e0 ldi r24, 0x00 ; 0 + 3ec: 97 70 andi r25, 0x07 ; 7 + 3ee: 08 95 ret + +000003f0 : + 3f0: fc 01 movw r30, r24 + 3f2: 90 81 ld r25, Z + 3f4: 91 30 cpi r25, 0x01 ; 1 + 3f6: 49 f0 breq .+18 ; 0x40a <__LOCK_REGION_LENGTH__+0xa> + 3f8: 18 f0 brcs .+6 ; 0x400 <__LOCK_REGION_LENGTH__> + 3fa: 92 30 cpi r25, 0x02 ; 2 + 3fc: 61 f0 breq .+24 ; 0x416 <__LOCK_REGION_LENGTH__+0x16> + 3fe: 11 c0 rjmp .+34 ; 0x422 <__LOCK_REGION_LENGTH__+0x22> + 400: 81 81 ldd r24, Z+1 ; 0x01 + 402: 87 70 andi r24, 0x07 ; 7 + 404: 88 0f add r24, r24 + 406: 80 61 ori r24, 0x10 ; 16 + 408: 08 95 ret + 40a: 81 81 ldd r24, Z+1 ; 0x01 + 40c: 82 95 swap r24 + 40e: 88 0f add r24, r24 + 410: 80 7e andi r24, 0xE0 ; 224 + 412: 81 60 ori r24, 0x01 ; 1 + 414: 08 95 ret + 416: 81 81 ldd r24, Z+1 ; 0x01 + 418: 82 95 swap r24 + 41a: 88 0f add r24, r24 + 41c: 80 7e andi r24, 0xE0 ; 224 + 41e: 89 60 ori r24, 0x09 ; 9 + 420: 08 95 ret + 422: 80 e0 ldi r24, 0x00 ; 0 + 424: 08 95 ret + +00000426 : + 426: fc 01 movw r30, r24 + 428: 8f ef ldi r24, 0xFF ; 255 + 42a: 9f ef ldi r25, 0xFF ; 255 + 42c: 92 83 std Z+2, r25 ; 0x02 + 42e: 81 83 std Z+1, r24 ; 0x01 + 430: 96 83 std Z+6, r25 ; 0x06 + 432: 85 83 std Z+5, r24 ; 0x05 + 434: 94 83 std Z+4, r25 ; 0x04 + 436: 83 83 std Z+3, r24 ; 0x03 + 438: 12 86 std Z+10, r1 ; 0x0a + 43a: 11 86 std Z+9, r1 ; 0x09 + 43c: 10 86 std Z+8, r1 ; 0x08 + 43e: 17 82 std Z+7, r1 ; 0x07 + 440: 10 82 st Z, r1 + 442: 08 95 ret + +00000444 : + 444: 3f 92 push r3 + 446: 4f 92 push r4 + 448: 5f 92 push r5 + 44a: 6f 92 push r6 + 44c: 7f 92 push r7 + 44e: 8f 92 push r8 + 450: 9f 92 push r9 + 452: af 92 push r10 + 454: bf 92 push r11 + 456: cf 92 push r12 + 458: df 92 push r13 + 45a: ef 92 push r14 + 45c: ff 92 push r15 + 45e: 0f 93 push r16 + 460: 1f 93 push r17 + 462: cf 93 push r28 + 464: df 93 push r29 + 466: 00 d0 rcall .+0 ; 0x468 + 468: 00 d0 rcall .+0 ; 0x46a + 46a: cd b7 in r28, 0x3d ; 61 + 46c: de b7 in r29, 0x3e ; 62 + 46e: 00 97 sbiw r24, 0x00 ; 0 + 470: 09 f4 brne .+2 ; 0x474 + 472: ea c0 rjmp .+468 ; 0x648 + 474: 61 15 cp r22, r1 + 476: 71 05 cpc r23, r1 + 478: 09 f4 brne .+2 ; 0x47c + 47a: e9 c0 rjmp .+466 ; 0x64e + 47c: 41 15 cp r20, r1 + 47e: 51 05 cpc r21, r1 + 480: 09 f4 brne .+2 ; 0x484 + 482: e8 c0 rjmp .+464 ; 0x654 + 484: 01 15 cp r16, r1 + 486: 11 05 cpc r17, r1 + 488: 09 f4 brne .+2 ; 0x48c + 48a: e7 c0 rjmp .+462 ; 0x65a + 48c: e1 14 cp r14, r1 + 48e: f1 04 cpc r15, r1 + 490: 09 f4 brne .+2 ; 0x494 + 492: e6 c0 rjmp .+460 ; 0x660 + 494: 38 01 movw r6, r16 + 496: 49 01 movw r8, r18 + 498: 7a 83 std Y+2, r23 ; 0x02 + 49a: 69 83 std Y+1, r22 ; 0x01 + 49c: 9c 83 std Y+4, r25 ; 0x04 + 49e: 8b 83 std Y+3, r24 ; 0x03 + 4a0: 21 15 cp r18, r1 + 4a2: 31 05 cpc r19, r1 + 4a4: 09 f4 brne .+2 ; 0x4a8 + 4a6: 99 c0 rjmp .+306 ; 0x5da + 4a8: 8a 01 movw r16, r20 + 4aa: c1 2c mov r12, r1 + 4ac: d1 2c mov r13, r1 + 4ae: 68 94 set + 4b0: 44 24 eor r4, r4 + 4b2: 45 f8 bld r4, 5 + 4b4: 33 24 eor r3, r3 + 4b6: 33 94 inc r3 + 4b8: 59 01 movw r10, r18 + 4ba: 21 e0 ldi r18, 0x01 ; 1 + 4bc: a2 1a sub r10, r18 + 4be: b1 08 sbc r11, r1 + 4c0: ab 81 ldd r26, Y+3 ; 0x03 + 4c2: bc 81 ldd r27, Y+4 ; 0x04 + 4c4: 13 96 adiw r26, 0x03 ; 3 + 4c6: 8d 91 ld r24, X+ + 4c8: 9c 91 ld r25, X + 4ca: 14 97 sbiw r26, 0x04 ; 4 + 4cc: 99 23 and r25, r25 + 4ce: 9c f4 brge .+38 ; 0x4f6 + 4d0: f8 01 movw r30, r16 + 4d2: 80 81 ld r24, Z + 4d4: 8e 37 cpi r24, 0x7E ; 126 + 4d6: 09 f0 breq .+2 ; 0x4da + 4d8: 70 c0 rjmp .+224 ; 0x5ba + 4da: ca 14 cp r12, r10 + 4dc: db 04 cpc r13, r11 + 4de: 20 f4 brcc .+8 ; 0x4e8 + 4e0: 81 81 ldd r24, Z+1 ; 0x01 + 4e2: 8e 37 cpi r24, 0x7E ; 126 + 4e4: 09 f4 brne .+2 ; 0x4e8 + 4e6: 70 c0 rjmp .+224 ; 0x5c8 + 4e8: eb 81 ldd r30, Y+3 ; 0x03 + 4ea: fc 81 ldd r31, Y+4 ; 0x04 + 4ec: 87 81 ldd r24, Z+7 ; 0x07 + 4ee: 90 85 ldd r25, Z+8 ; 0x08 + 4f0: 94 83 std Z+4, r25 ; 0x04 + 4f2: 83 83 std Z+3, r24 ; 0x03 + 4f4: 62 c0 rjmp .+196 ; 0x5ba + 4f6: f8 01 movw r30, r16 + 4f8: 50 80 ld r5, Z + 4fa: 2e e7 ldi r18, 0x7E ; 126 + 4fc: 52 12 cpse r5, r18 + 4fe: 19 c0 rjmp .+50 ; 0x532 + 500: ca 14 cp r12, r10 + 502: db 04 cpc r13, r11 + 504: 20 f4 brcc .+8 ; 0x50e + 506: 21 81 ldd r18, Z+1 ; 0x01 + 508: 2e 37 cpi r18, 0x7E ; 126 + 50a: 09 f4 brne .+2 ; 0x50e + 50c: 5d c0 rjmp .+186 ; 0x5c8 + 50e: ab 81 ldd r26, Y+3 ; 0x03 + 510: bc 81 ldd r27, Y+4 ; 0x04 + 512: 17 96 adiw r26, 0x07 ; 7 + 514: 2d 91 ld r18, X+ + 516: 3c 91 ld r19, X + 518: 18 97 sbiw r26, 0x08 ; 8 + 51a: ac 01 movw r20, r24 + 51c: 4f 5f subi r20, 0xFF ; 255 + 51e: 5f 4f sbci r21, 0xFF ; 255 + 520: 42 17 cp r20, r18 + 522: 53 07 cpc r21, r19 + 524: 09 f4 brne .+2 ; 0x528 + 526: 50 c0 rjmp .+160 ; 0x5c8 + 528: 16 96 adiw r26, 0x06 ; 6 + 52a: 3c 93 st X, r19 + 52c: 2e 93 st -X, r18 + 52e: 15 97 sbiw r26, 0x05 ; 5 + 530: 5d c0 rjmp .+186 ; 0x5ec + 532: bd e7 ldi r27, 0x7D ; 125 + 534: 5b 12 cpse r5, r27 + 536: 04 c0 rjmp .+8 ; 0x540 + 538: eb 81 ldd r30, Y+3 ; 0x03 + 53a: fc 81 ldd r31, Y+4 ; 0x04 + 53c: 30 82 st Z, r3 + 53e: 3d c0 rjmp .+122 ; 0x5ba + 540: ab 81 ldd r26, Y+3 ; 0x03 + 542: bc 81 ldd r27, Y+4 ; 0x04 + 544: 8c 91 ld r24, X + 546: 88 23 and r24, r24 + 548: 19 f0 breq .+6 ; 0x550 + 54a: 1c 92 st X, r1 + 54c: 50 80 ld r5, Z + 54e: 54 24 eor r5, r4 + 550: 65 2d mov r22, r5 + 552: eb 81 ldd r30, Y+3 ; 0x03 + 554: fc 81 ldd r31, Y+4 ; 0x04 + 556: 81 81 ldd r24, Z+1 ; 0x01 + 558: 92 81 ldd r25, Z+2 ; 0x02 + 55a: 0e 94 b8 01 call 0x370 ; 0x370 + 55e: ab 81 ldd r26, Y+3 ; 0x03 + 560: bc 81 ldd r27, Y+4 ; 0x04 + 562: 12 96 adiw r26, 0x02 ; 2 + 564: 9c 93 st X, r25 + 566: 8e 93 st -X, r24 + 568: 11 97 sbiw r26, 0x01 ; 1 + 56a: 17 96 adiw r26, 0x07 ; 7 + 56c: 2d 91 ld r18, X+ + 56e: 3c 91 ld r19, X + 570: 18 97 sbiw r26, 0x08 ; 8 + 572: 13 96 adiw r26, 0x03 ; 3 + 574: 8d 91 ld r24, X+ + 576: 9c 91 ld r25, X + 578: 14 97 sbiw r26, 0x04 ; 4 + 57a: 02 96 adiw r24, 0x02 ; 2 + 57c: 28 17 cp r18, r24 + 57e: 39 07 cpc r19, r25 + 580: 41 f4 brne .+16 ; 0x592 + 582: 85 2d mov r24, r5 + 584: 0e 94 e5 01 call 0x3ca ; 0x3ca + 588: e9 81 ldd r30, Y+1 ; 0x01 + 58a: fa 81 ldd r31, Y+2 ; 0x02 + 58c: 91 83 std Z+1, r25 ; 0x01 + 58e: 80 83 st Z, r24 + 590: 14 c0 rjmp .+40 ; 0x5ba + 592: 82 17 cp r24, r18 + 594: 93 07 cpc r25, r19 + 596: 8c f4 brge .+34 ; 0x5ba + 598: ab 81 ldd r26, Y+3 ; 0x03 + 59a: bc 81 ldd r27, Y+4 ; 0x04 + 59c: 19 96 adiw r26, 0x09 ; 9 + 59e: 8d 91 ld r24, X+ + 5a0: 9c 91 ld r25, X + 5a2: 1a 97 sbiw r26, 0x0a ; 10 + 5a4: 9c 01 movw r18, r24 + 5a6: 2f 5f subi r18, 0xFF ; 255 + 5a8: 3f 4f sbci r19, 0xFF ; 255 + 5aa: 1a 96 adiw r26, 0x0a ; 10 + 5ac: 3c 93 st X, r19 + 5ae: 2e 93 st -X, r18 + 5b0: 19 97 sbiw r26, 0x09 ; 9 + 5b2: f3 01 movw r30, r6 + 5b4: e8 0f add r30, r24 + 5b6: f9 1f adc r31, r25 + 5b8: 50 82 st Z, r5 + 5ba: eb 81 ldd r30, Y+3 ; 0x03 + 5bc: fc 81 ldd r31, Y+4 ; 0x04 + 5be: 87 81 ldd r24, Z+7 ; 0x07 + 5c0: 90 85 ldd r25, Z+8 ; 0x08 + 5c2: 01 96 adiw r24, 0x01 ; 1 + 5c4: 90 87 std Z+8, r25 ; 0x08 + 5c6: 87 83 std Z+7, r24 ; 0x07 + 5c8: ff ef ldi r31, 0xFF ; 255 + 5ca: cf 1a sub r12, r31 + 5cc: df 0a sbc r13, r31 + 5ce: 0f 5f subi r16, 0xFF ; 255 + 5d0: 1f 4f sbci r17, 0xFF ; 255 + 5d2: 8c 14 cp r8, r12 + 5d4: 9d 04 cpc r9, r13 + 5d6: 09 f0 breq .+2 ; 0x5da + 5d8: 73 cf rjmp .-282 ; 0x4c0 + 5da: ab 81 ldd r26, Y+3 ; 0x03 + 5dc: bc 81 ldd r27, Y+4 ; 0x04 + 5de: 13 96 adiw r26, 0x03 ; 3 + 5e0: 8d 91 ld r24, X+ + 5e2: 9c 91 ld r25, X + 5e4: 14 97 sbiw r26, 0x04 ; 4 + 5e6: 99 23 and r25, r25 + 5e8: 3c f0 brlt .+14 ; 0x5f8 + 5ea: 64 01 movw r12, r8 + 5ec: eb 81 ldd r30, Y+3 ; 0x03 + 5ee: fc 81 ldd r31, Y+4 ; 0x04 + 5f0: 25 81 ldd r18, Z+5 ; 0x05 + 5f2: 36 81 ldd r19, Z+6 ; 0x06 + 5f4: 33 23 and r19, r19 + 5f6: 34 f4 brge .+12 ; 0x604 + 5f8: d7 01 movw r26, r14 + 5fa: 1d 92 st X+, r1 + 5fc: 1c 92 st X, r1 + 5fe: 8e e0 ldi r24, 0x0E ; 14 + 600: 92 ed ldi r25, 0xD2 ; 210 + 602: 30 c0 rjmp .+96 ; 0x664 + 604: 04 96 adiw r24, 0x04 ; 4 + 606: 28 17 cp r18, r24 + 608: 39 07 cpc r19, r25 + 60a: 3c f0 brlt .+14 ; 0x61a + 60c: eb 81 ldd r30, Y+3 ; 0x03 + 60e: fc 81 ldd r31, Y+4 ; 0x04 + 610: 81 81 ldd r24, Z+1 ; 0x01 + 612: 92 81 ldd r25, Z+2 ; 0x02 + 614: 88 3b cpi r24, 0xB8 ; 184 + 616: 90 4f sbci r25, 0xF0 ; 240 + 618: 31 f0 breq .+12 ; 0x626 + 61a: d7 01 movw r26, r14 + 61c: cd 92 st X+, r12 + 61e: dc 92 st X, r13 + 620: 0e e0 ldi r16, 0x0E ; 14 + 622: 12 ed ldi r17, 0xD2 ; 210 + 624: 0a c0 rjmp .+20 ; 0x63a + 626: eb 81 ldd r30, Y+3 ; 0x03 + 628: fc 81 ldd r31, Y+4 ; 0x04 + 62a: 81 85 ldd r24, Z+9 ; 0x09 + 62c: 92 85 ldd r25, Z+10 ; 0x0a + 62e: 02 97 sbiw r24, 0x02 ; 2 + 630: d7 01 movw r26, r14 + 632: 8d 93 st X+, r24 + 634: 9c 93 st X, r25 + 636: 0c 2d mov r16, r12 + 638: 1d 2d mov r17, r13 + 63a: 8b 81 ldd r24, Y+3 ; 0x03 + 63c: 9c 81 ldd r25, Y+4 ; 0x04 + 63e: 0e 94 13 02 call 0x426 ; 0x426 + 642: 80 2f mov r24, r16 + 644: 91 2f mov r25, r17 + 646: 0e c0 rjmp .+28 ; 0x664 + 648: 8e e0 ldi r24, 0x0E ; 14 + 64a: 92 ed ldi r25, 0xD2 ; 210 + 64c: 0b c0 rjmp .+22 ; 0x664 + 64e: 8e e0 ldi r24, 0x0E ; 14 + 650: 92 ed ldi r25, 0xD2 ; 210 + 652: 08 c0 rjmp .+16 ; 0x664 + 654: 8e e0 ldi r24, 0x0E ; 14 + 656: 92 ed ldi r25, 0xD2 ; 210 + 658: 05 c0 rjmp .+10 ; 0x664 + 65a: 8e e0 ldi r24, 0x0E ; 14 + 65c: 92 ed ldi r25, 0xD2 ; 210 + 65e: 02 c0 rjmp .+4 ; 0x664 + 660: 8e e0 ldi r24, 0x0E ; 14 + 662: 92 ed ldi r25, 0xD2 ; 210 + 664: 0f 90 pop r0 + 666: 0f 90 pop r0 + 668: 0f 90 pop r0 + 66a: 0f 90 pop r0 + 66c: df 91 pop r29 + 66e: cf 91 pop r28 + 670: 1f 91 pop r17 + 672: 0f 91 pop r16 + 674: ff 90 pop r15 + 676: ef 90 pop r14 + 678: df 90 pop r13 + 67a: cf 90 pop r12 + 67c: bf 90 pop r11 + 67e: af 90 pop r10 + 680: 9f 90 pop r9 + 682: 8f 90 pop r8 + 684: 7f 90 pop r7 + 686: 6f 90 pop r6 + 688: 5f 90 pop r5 + 68a: 4f 90 pop r4 + 68c: 3f 90 pop r3 + 68e: 08 95 ret + +00000690 : +} + +//int hdlc_frame_data(hdlc_control_t *control, const char *src, +// unsigned int src_len, char *dest, unsigned int *dest_len) +int hdlc_frame_data(hdlc_control_t *control, uint8_t *src, + size_t src_len, uint8_t *dest, size_t *dest_len){ + 690: 5f 92 push r5 + 692: 6f 92 push r6 + 694: 7f 92 push r7 + 696: 8f 92 push r8 + 698: 9f 92 push r9 + 69a: af 92 push r10 + 69c: bf 92 push r11 + 69e: cf 92 push r12 + 6a0: df 92 push r13 + 6a2: ef 92 push r14 + 6a4: ff 92 push r15 + 6a6: 0f 93 push r16 + 6a8: 1f 93 push r17 + 6aa: cf 93 push r28 + 6ac: df 93 push r29 + 6ae: 00 d0 rcall .+0 ; 0x6b0 + 6b0: cd b7 in r28, 0x3d ; 61 + 6b2: de b7 in r29, 0x3e ; 62 + int dest_index = 0; + unsigned char value = 0; + FCS_SIZE fcs = FCS_INIT_VALUE; + + // Make sure that all parameters are valid + if (!control || (!src && (src_len > 0)) || !dest || !dest_len) { + 6b4: 00 97 sbiw r24, 0x00 ; 0 + 6b6: 09 f4 brne .+2 ; 0x6ba + 6b8: 73 c0 rjmp .+230 ; 0x7a0 + 6ba: 61 15 cp r22, r1 + 6bc: 71 05 cpc r23, r1 + 6be: 21 f4 brne .+8 ; 0x6c8 + 6c0: 41 15 cp r20, r1 + 6c2: 51 05 cpc r21, r1 + 6c4: 09 f0 breq .+2 ; 0x6c8 + 6c6: 6f c0 rjmp .+222 ; 0x7a6 + 6c8: 21 15 cp r18, r1 + 6ca: 31 05 cpc r19, r1 + 6cc: 09 f4 brne .+2 ; 0x6d0 + 6ce: 6e c0 rjmp .+220 ; 0x7ac + 6d0: 01 15 cp r16, r1 + 6d2: 11 05 cpc r17, r1 + 6d4: 09 f4 brne .+2 ; 0x6d8 + 6d6: 6d c0 rjmp .+218 ; 0x7b2 + 6d8: 38 01 movw r6, r16 + 6da: 79 01 movw r14, r18 + 6dc: 5a 01 movw r10, r20 + 6de: 4b 01 movw r8, r22 + 6e0: 8c 01 movw r16, r24 + return -EINVAL; + } + + // Start by adding the start flag sequence + dest[dest_index++] = HDLC_FLAG_SEQUENCE; + 6e2: 81 e0 ldi r24, 0x01 ; 1 + 6e4: 90 e0 ldi r25, 0x00 ; 0 + 6e6: 9a 83 std Y+2, r25 ; 0x02 + 6e8: 89 83 std Y+1, r24 ; 0x01 + 6ea: 8e e7 ldi r24, 0x7E ; 126 + 6ec: f9 01 movw r30, r18 + 6ee: 80 83 st Z, r24 + + // Add the all-station address from HDLC (broadcast) + fcs = calc_fcs(fcs, HDLC_ALL_STATION_ADDR); + 6f0: 6f ef ldi r22, 0xFF ; 255 + 6f2: 8f ef ldi r24, 0xFF ; 255 + 6f4: 9f ef ldi r25, 0xFF ; 255 + 6f6: 0e 94 b8 01 call 0x370 ; 0x370 + 6fa: 6c 01 movw r12, r24 + hdlc_escape_value(HDLC_ALL_STATION_ADDR, dest, &dest_index); + 6fc: ae 01 movw r20, r28 + 6fe: 4f 5f subi r20, 0xFF ; 255 + 700: 5f 4f sbci r21, 0xFF ; 255 + 702: b7 01 movw r22, r14 + 704: 8f ef ldi r24, 0xFF ; 255 + 706: 0e 94 c6 01 call 0x38c ; 0x38c + + // Add the framed control field value + value = hdlc_frame_control_type(control); + 70a: c8 01 movw r24, r16 + 70c: 0e 94 f8 01 call 0x3f0 ; 0x3f0 + 710: 58 2e mov r5, r24 + fcs = calc_fcs(fcs, value); + 712: 68 2f mov r22, r24 + 714: c6 01 movw r24, r12 + 716: 0e 94 b8 01 call 0x370 ; 0x370 + 71a: 6c 01 movw r12, r24 + hdlc_escape_value(value, dest, &dest_index); + 71c: ae 01 movw r20, r28 + 71e: 4f 5f subi r20, 0xFF ; 255 + 720: 5f 4f sbci r21, 0xFF ; 255 + 722: b7 01 movw r22, r14 + 724: 85 2d mov r24, r5 + 726: 0e 94 c6 01 call 0x38c ; 0x38c + + // Only DATA frames should contain data + if (control->frame == I_FRAME) { + 72a: f8 01 movw r30, r16 + 72c: 80 81 ld r24, Z + 72e: 81 11 cpse r24, r1 + 730: 19 c0 rjmp .+50 ; 0x764 + // Calculate FCS and escape data + for (i = 0; i < src_len; i++) { + 732: a1 14 cp r10, r1 + 734: b1 04 cpc r11, r1 + 736: b1 f0 breq .+44 ; 0x764 + 738: 84 01 movw r16, r8 + 73a: 8a 0c add r8, r10 + 73c: 9b 1c adc r9, r11 + 73e: 58 01 movw r10, r16 + fcs = calc_fcs(fcs, src[i]); + 740: f8 01 movw r30, r16 + 742: 61 91 ld r22, Z+ + 744: 8f 01 movw r16, r30 + 746: c6 01 movw r24, r12 + 748: 0e 94 b8 01 call 0x370 ; 0x370 + 74c: 6c 01 movw r12, r24 + hdlc_escape_value(src[i], dest, &dest_index); + 74e: ae 01 movw r20, r28 + 750: 4f 5f subi r20, 0xFF ; 255 + 752: 5f 4f sbci r21, 0xFF ; 255 + 754: b7 01 movw r22, r14 + 756: f5 01 movw r30, r10 + 758: 80 81 ld r24, Z + 75a: 0e 94 c6 01 call 0x38c ; 0x38c + hdlc_escape_value(value, dest, &dest_index); + + // Only DATA frames should contain data + if (control->frame == I_FRAME) { + // Calculate FCS and escape data + for (i = 0; i < src_len; i++) { + 75e: 80 16 cp r8, r16 + 760: 91 06 cpc r9, r17 + 762: 69 f7 brne .-38 ; 0x73e + hdlc_escape_value(src[i], dest, &dest_index); + } + } + + // Invert the FCS value accordingly to the specification + fcs ^= FCS_INVERT_MASK; + 764: c0 94 com r12 + 766: d0 94 com r13 + + // Run through the FCS bytes and escape the values + for (i = 0; i < sizeof(fcs); i++) { + value = ((fcs >> (8 * i)) & 0xFF); + hdlc_escape_value(value, dest, &dest_index); + 768: ae 01 movw r20, r28 + 76a: 4f 5f subi r20, 0xFF ; 255 + 76c: 5f 4f sbci r21, 0xFF ; 255 + 76e: b7 01 movw r22, r14 + 770: 8c 2d mov r24, r12 + 772: 0e 94 c6 01 call 0x38c ; 0x38c + 776: ae 01 movw r20, r28 + 778: 4f 5f subi r20, 0xFF ; 255 + 77a: 5f 4f sbci r21, 0xFF ; 255 + 77c: b7 01 movw r22, r14 + 77e: 8d 2d mov r24, r13 + 780: 0e 94 c6 01 call 0x38c ; 0x38c + } + + // Add end flag sequence and update length of frame + dest[dest_index++] = HDLC_FLAG_SEQUENCE; + 784: 89 81 ldd r24, Y+1 ; 0x01 + 786: 9a 81 ldd r25, Y+2 ; 0x02 + 788: f7 01 movw r30, r14 + 78a: e8 0f add r30, r24 + 78c: f9 1f adc r31, r25 + 78e: 2e e7 ldi r18, 0x7E ; 126 + 790: 20 83 st Z, r18 + *dest_len = dest_index; + 792: 01 96 adiw r24, 0x01 ; 1 + 794: f3 01 movw r30, r6 + 796: 91 83 std Z+1, r25 ; 0x01 + 798: 80 83 st Z, r24 + + return 0; + 79a: 80 e0 ldi r24, 0x00 ; 0 + 79c: 90 e0 ldi r25, 0x00 ; 0 + 79e: 0b c0 rjmp .+22 ; 0x7b6 + unsigned char value = 0; + FCS_SIZE fcs = FCS_INIT_VALUE; + + // Make sure that all parameters are valid + if (!control || (!src && (src_len > 0)) || !dest || !dest_len) { + return -EINVAL; + 7a0: 8e e0 ldi r24, 0x0E ; 14 + 7a2: 92 ed ldi r25, 0xD2 ; 210 + 7a4: 08 c0 rjmp .+16 ; 0x7b6 + 7a6: 8e e0 ldi r24, 0x0E ; 14 + 7a8: 92 ed ldi r25, 0xD2 ; 210 + 7aa: 05 c0 rjmp .+10 ; 0x7b6 + 7ac: 8e e0 ldi r24, 0x0E ; 14 + 7ae: 92 ed ldi r25, 0xD2 ; 210 + 7b0: 02 c0 rjmp .+4 ; 0x7b6 + 7b2: 8e e0 ldi r24, 0x0E ; 14 + 7b4: 92 ed ldi r25, 0xD2 ; 210 + // Add end flag sequence and update length of frame + dest[dest_index++] = HDLC_FLAG_SEQUENCE; + *dest_len = dest_index; + + return 0; + 7b6: 0f 90 pop r0 + 7b8: 0f 90 pop r0 + 7ba: df 91 pop r29 + 7bc: cf 91 pop r28 + 7be: 1f 91 pop r17 + 7c0: 0f 91 pop r16 + 7c2: ff 90 pop r15 + 7c4: ef 90 pop r14 + 7c6: df 90 pop r13 + 7c8: cf 90 pop r12 + 7ca: bf 90 pop r11 + 7cc: af 90 pop r10 + 7ce: 9f 90 pop r9 + 7d0: 8f 90 pop r8 + 7d2: 7f 90 pop r7 + 7d4: 6f 90 pop r6 + 7d6: 5f 90 pop r5 + 7d8: 08 95 ret + +000007da : + register char c; + + while ( (c = pgm_read_byte(progmem_s++)) ) { + lcd_putc(c); + } +} + 7da: cf 93 push r28 + 7dc: 88 23 and r24, r24 + 7de: 31 f0 breq .+12 ; 0x7ec + 7e0: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 7e4: 81 60 ori r24, 0x01 ; 1 + 7e6: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 7ea: 05 c0 rjmp .+10 ; 0x7f6 + 7ec: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 7f0: 8e 7f andi r24, 0xFE ; 254 + 7f2: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 7f6: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 7fa: 82 60 ori r24, 0x02 ; 2 + 7fc: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 800: 60 91 42 03 lds r22, 0x0342 ; 0x800342 <__data_end> + 804: 80 e0 ldi r24, 0x00 ; 0 + 806: 0e 94 95 06 call 0xd2a ; 0xd2a + 80a: 62 e0 ldi r22, 0x02 ; 2 + 80c: 80 e0 ldi r24, 0x00 ; 0 + 80e: 0e 94 d6 06 call 0xdac ; 0xdac + 812: 00 c0 rjmp .+0 ; 0x814 + 814: 64 e0 ldi r22, 0x04 ; 4 + 816: 80 e0 ldi r24, 0x00 ; 0 + 818: 0e 94 81 06 call 0xd02 ; 0xd02 + 81c: c8 2f mov r28, r24 + 81e: 62 e0 ldi r22, 0x02 ; 2 + 820: 80 e0 ldi r24, 0x00 ; 0 + 822: 0e 94 da 06 call 0xdb4 ; 0xdb4 + 826: 00 c0 rjmp .+0 ; 0x828 + 828: 62 e0 ldi r22, 0x02 ; 2 + 82a: 80 e0 ldi r24, 0x00 ; 0 + 82c: 0e 94 d6 06 call 0xdac ; 0xdac + 830: 00 c0 rjmp .+0 ; 0x832 + 832: 64 e0 ldi r22, 0x04 ; 4 + 834: 80 e0 ldi r24, 0x00 ; 0 + 836: 0e 94 81 06 call 0xd02 ; 0xd02 + 83a: c2 95 swap r28 + 83c: c0 7f andi r28, 0xF0 ; 240 + 83e: 8f 70 andi r24, 0x0F ; 15 + 840: c8 2b or r28, r24 + 842: 62 e0 ldi r22, 0x02 ; 2 + 844: 80 e0 ldi r24, 0x00 ; 0 + 846: 0e 94 da 06 call 0xdb4 ; 0xdb4 + 84a: 8c 2f mov r24, r28 + 84c: cf 91 pop r28 + 84e: 08 95 ret + +00000850 : + 850: 80 e0 ldi r24, 0x00 ; 0 + 852: 0e 94 ed 03 call 0x7da ; 0x7da + 856: 88 23 and r24, r24 + 858: dc f3 brlt .-10 ; 0x850 + 85a: 00 c0 rjmp .+0 ; 0x85c + 85c: 80 e0 ldi r24, 0x00 ; 0 + 85e: 0e 94 ed 03 call 0x7da ; 0x7da + 862: 08 95 ret + +00000864 : + 864: 62 e0 ldi r22, 0x02 ; 2 + 866: 80 e0 ldi r24, 0x00 ; 0 + 868: 0e 94 d6 06 call 0xdac ; 0xdac + 86c: 00 c0 rjmp .+0 ; 0x86e + 86e: 62 e0 ldi r22, 0x02 ; 2 + 870: 80 e0 ldi r24, 0x00 ; 0 + 872: 0e 94 da 06 call 0xdb4 ; 0xdb4 + 876: 08 95 ret + +00000878 : + 878: cf 93 push r28 + 87a: c8 2f mov r28, r24 + 87c: 66 23 and r22, r22 + 87e: 31 f0 breq .+12 ; 0x88c + 880: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 884: 81 60 ori r24, 0x01 ; 1 + 886: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 88a: 05 c0 rjmp .+10 ; 0x896 + 88c: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 890: 8e 7f andi r24, 0xFE ; 254 + 892: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 896: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 89a: 8d 7f andi r24, 0xFD ; 253 + 89c: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 8a0: 60 91 42 03 lds r22, 0x0342 ; 0x800342 <__data_end> + 8a4: 80 e0 ldi r24, 0x00 ; 0 + 8a6: 0e 94 95 06 call 0xd2a ; 0xd2a + 8aa: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 8ae: 8f 77 andi r24, 0x7F ; 127 + 8b0: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 8b4: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 8b8: 8f 7b andi r24, 0xBF ; 191 + 8ba: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 8be: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 8c2: 8f 7d andi r24, 0xDF ; 223 + 8c4: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 8c8: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 8cc: 8f 7e andi r24, 0xEF ; 239 + 8ce: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 8d2: cc 23 and r28, r28 + 8d4: 2c f4 brge .+10 ; 0x8e0 + 8d6: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 8da: 80 68 ori r24, 0x80 ; 128 + 8dc: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 8e0: c6 ff sbrs r28, 6 + 8e2: 05 c0 rjmp .+10 ; 0x8ee + 8e4: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 8e8: 80 64 ori r24, 0x40 ; 64 + 8ea: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 8ee: c5 ff sbrs r28, 5 + 8f0: 05 c0 rjmp .+10 ; 0x8fc + 8f2: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 8f6: 80 62 ori r24, 0x20 ; 32 + 8f8: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 8fc: c4 ff sbrs r28, 4 + 8fe: 05 c0 rjmp .+10 ; 0x90a <__stack+0xb> + 900: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 904: 80 61 ori r24, 0x10 ; 16 + 906: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 90a: 60 91 42 03 lds r22, 0x0342 ; 0x800342 <__data_end> + 90e: 80 e0 ldi r24, 0x00 ; 0 + 910: 0e 94 95 06 call 0xd2a ; 0xd2a + 914: 0e 94 32 04 call 0x864 ; 0x864 + 918: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 91c: 8f 77 andi r24, 0x7F ; 127 + 91e: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 922: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 926: 8f 7b andi r24, 0xBF ; 191 + 928: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 92c: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 930: 8f 7d andi r24, 0xDF ; 223 + 932: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 936: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 93a: 8f 7e andi r24, 0xEF ; 239 + 93c: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 940: c3 ff sbrs r28, 3 + 942: 05 c0 rjmp .+10 ; 0x94e <__stack+0x4f> + 944: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 948: 80 68 ori r24, 0x80 ; 128 + 94a: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 94e: c2 ff sbrs r28, 2 + 950: 05 c0 rjmp .+10 ; 0x95c <__stack+0x5d> + 952: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 956: 80 64 ori r24, 0x40 ; 64 + 958: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 95c: c1 ff sbrs r28, 1 + 95e: 05 c0 rjmp .+10 ; 0x96a <__stack+0x6b> + 960: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 964: 80 62 ori r24, 0x20 ; 32 + 966: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 96a: c0 ff sbrs r28, 0 + 96c: 05 c0 rjmp .+10 ; 0x978 <__stack+0x79> + 96e: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 972: 80 61 ori r24, 0x10 ; 16 + 974: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 978: 60 91 42 03 lds r22, 0x0342 ; 0x800342 <__data_end> + 97c: 80 e0 ldi r24, 0x00 ; 0 + 97e: 0e 94 95 06 call 0xd2a ; 0xd2a + 982: 0e 94 32 04 call 0x864 ; 0x864 + 986: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 98a: 80 61 ori r24, 0x10 ; 16 + 98c: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 990: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 994: 80 62 ori r24, 0x20 ; 32 + 996: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 99a: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 99e: 80 64 ori r24, 0x40 ; 64 + 9a0: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 9a4: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 9a8: 80 68 ori r24, 0x80 ; 128 + 9aa: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 9ae: 60 91 42 03 lds r22, 0x0342 ; 0x800342 <__data_end> + 9b2: 80 e0 ldi r24, 0x00 ; 0 + 9b4: 0e 94 95 06 call 0xd2a ; 0xd2a + 9b8: cf 91 pop r28 + 9ba: 08 95 ret + +000009bc : + 9bc: cf 93 push r28 + 9be: c8 2f mov r28, r24 + 9c0: 0e 94 28 04 call 0x850 ; 0x850 + 9c4: 60 e0 ldi r22, 0x00 ; 0 + 9c6: 8c 2f mov r24, r28 + 9c8: 0e 94 3c 04 call 0x878 ; 0x878 + 9cc: cf 91 pop r28 + 9ce: 08 95 ret + +000009d0 : + 9d0: 61 11 cpse r22, r1 + 9d2: 04 c0 rjmp .+8 ; 0x9dc + 9d4: 80 58 subi r24, 0x80 ; 128 + 9d6: 0e 94 de 04 call 0x9bc ; 0x9bc + 9da: 08 95 ret + 9dc: 80 54 subi r24, 0x40 ; 64 + 9de: 0e 94 de 04 call 0x9bc ; 0x9bc + 9e2: 08 95 ret + +000009e4 : + 9e4: 81 e0 ldi r24, 0x01 ; 1 + 9e6: 0e 94 de 04 call 0x9bc ; 0x9bc + 9ea: 08 95 ret + +000009ec : + 9ec: 88 23 and r24, r24 + 9ee: 31 f0 breq .+12 ; 0x9fc + 9f0: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + 9f4: 87 7f andi r24, 0xF7 ; 247 + 9f6: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + 9fa: 05 c0 rjmp .+10 ; 0xa06 + 9fc: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + a00: 88 60 ori r24, 0x08 ; 8 + a02: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + a06: 60 91 42 03 lds r22, 0x0342 ; 0x800342 <__data_end> + a0a: 80 e0 ldi r24, 0x00 ; 0 + a0c: 0e 94 95 06 call 0xd2a ; 0xd2a + a10: 08 95 ret + +00000a12 : + a12: 82 e0 ldi r24, 0x02 ; 2 + a14: 0e 94 de 04 call 0x9bc ; 0x9bc + a18: 08 95 ret + +00000a1a : + a1a: cf 93 push r28 + a1c: c8 2f mov r28, r24 + a1e: 0e 94 28 04 call 0x850 ; 0x850 + a22: ca 30 cpi r28, 0x0A ; 10 + a24: 49 f4 brne .+18 ; 0xa38 + a26: 80 34 cpi r24, 0x40 ; 64 + a28: 10 f0 brcs .+4 ; 0xa2e + a2a: 80 e0 ldi r24, 0x00 ; 0 + a2c: 01 c0 rjmp .+2 ; 0xa30 + a2e: 80 e4 ldi r24, 0x40 ; 64 + a30: 80 58 subi r24, 0x80 ; 128 + a32: 0e 94 de 04 call 0x9bc ; 0x9bc + a36: 13 c0 rjmp .+38 ; 0xa5e + a38: 80 31 cpi r24, 0x10 ; 16 + a3a: 29 f4 brne .+10 ; 0xa46 + a3c: 60 e0 ldi r22, 0x00 ; 0 + a3e: 80 ec ldi r24, 0xC0 ; 192 + a40: 0e 94 3c 04 call 0x878 ; 0x878 + a44: 06 c0 rjmp .+12 ; 0xa52 + a46: 80 35 cpi r24, 0x50 ; 80 + a48: 21 f4 brne .+8 ; 0xa52 + a4a: 60 e0 ldi r22, 0x00 ; 0 + a4c: 80 e8 ldi r24, 0x80 ; 128 + a4e: 0e 94 3c 04 call 0x878 ; 0x878 + a52: 0e 94 28 04 call 0x850 ; 0x850 + a56: 61 e0 ldi r22, 0x01 ; 1 + a58: 8c 2f mov r24, r28 + a5a: 0e 94 3c 04 call 0x878 ; 0x878 + a5e: cf 91 pop r28 + a60: 08 95 ret + +00000a62 : + a62: cf 93 push r28 + a64: df 93 push r29 + a66: ec 01 movw r28, r24 + a68: 21 96 adiw r28, 0x01 ; 1 + a6a: fc 01 movw r30, r24 + a6c: 80 81 ld r24, Z + a6e: 88 23 and r24, r24 + a70: 29 f0 breq .+10 ; 0xa7c + a72: 0e 94 0d 05 call 0xa1a ; 0xa1a + a76: 89 91 ld r24, Y+ + a78: 81 11 cpse r24, r1 + a7a: fb cf rjmp .-10 ; 0xa72 + a7c: df 91 pop r29 + a7e: cf 91 pop r28 + a80: 08 95 ret + +00000a82 : + +// инициализация дисплея +void lcd_init(uint8_t dispAttr) +{ + a82: 1f 93 push r17 + a84: cf 93 push r28 + a86: df 93 push r29 + a88: 18 2f mov r17, r24 + #if LCD_PCF8574_INIT == 1 + //инициализация pcf + pcf8574_init(); + a8a: 0e 94 78 06 call 0xcf0 ; 0xcf0 + #endif + + dataport = 0; + a8e: 10 92 42 03 sts 0x0342, r1 ; 0x800342 <__data_end> + pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport); + a92: 60 91 42 03 lds r22, 0x0342 ; 0x800342 <__data_end> + a96: 80 e0 ldi r24, 0x00 ; 0 + a98: 0e 94 95 06 call 0xd2a ; 0xd2a +static inline void _delayFourCycles(unsigned int __count) +{ + if ( __count == 0 ) + __asm__ __volatile__( "rjmp 1f\n 1:" ); + else + __asm__ __volatile__ ( + a9c: 80 ea ldi r24, 0xA0 ; 160 + a9e: 9f e0 ldi r25, 0x0F ; 15 + aa0: 01 97 sbiw r24, 0x01 ; 1 + aa2: f1 f7 brne .-4 ; 0xaa0 + pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport); + + delay(16000); + + // первоначальная запись на ЖК-дисплей — 8 бит + dataport |= _BV(LCD_DATA1_PIN); // _BV(LCD_FUNCTION)>>4; + aa4: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + aa8: 80 62 ori r24, 0x20 ; 32 + aaa: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + dataport |= _BV(LCD_DATA0_PIN); // _BV(LCD_FUNCTION_8BIT)>>4; + aae: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + ab2: 80 61 ori r24, 0x10 ; 16 + ab4: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport); + ab8: 60 91 42 03 lds r22, 0x0342 ; 0x800342 <__data_end> + abc: 80 e0 ldi r24, 0x00 ; 0 + abe: 0e 94 95 06 call 0xd2a ; 0xd2a + + // дрючим дисплей чтобы он начал работать + lcd_e_toggle(); + ac2: 0e 94 32 04 call 0x864 ; 0x864 +static inline void _delayFourCycles(unsigned int __count) +{ + if ( __count == 0 ) + __asm__ __volatile__( "rjmp 1f\n 1:" ); + else + __asm__ __volatile__ ( + ac6: 80 ee ldi r24, 0xE0 ; 224 + ac8: 94 e0 ldi r25, 0x04 ; 4 + aca: 01 97 sbiw r24, 0x01 ; 1 + acc: f1 f7 brne .-4 ; 0xaca + pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport); + + // дрючим дисплей чтобы он начал работать + lcd_e_toggle(); + delay(4992); + lcd_e_toggle(); + ace: 0e 94 32 04 call 0x864 ; 0x864 +static inline void _delayFourCycles(unsigned int __count) +{ + if ( __count == 0 ) + __asm__ __volatile__( "rjmp 1f\n 1:" ); + else + __asm__ __volatile__ ( + ad2: c0 e1 ldi r28, 0x10 ; 16 + ad4: d0 e0 ldi r29, 0x00 ; 0 + ad6: ce 01 movw r24, r28 + ad8: 01 97 sbiw r24, 0x01 ; 1 + ada: f1 f7 brne .-4 ; 0xad8 + // дрючим дисплей чтобы он начал работать + lcd_e_toggle(); + delay(4992); + lcd_e_toggle(); + delay(64); + lcd_e_toggle(); + adc: 0e 94 32 04 call 0x864 ; 0x864 +static inline void _delayFourCycles(unsigned int __count) +{ + if ( __count == 0 ) + __asm__ __volatile__( "rjmp 1f\n 1:" ); + else + __asm__ __volatile__ ( + ae0: ce 01 movw r24, r28 + ae2: 01 97 sbiw r24, 0x01 ; 1 + ae4: f1 f7 brne .-4 ; 0xae2 + delay(64); + lcd_e_toggle(); + delay(64); + + // переходим в 4 битный режим + dataport &= ~_BV(LCD_DATA0_PIN); + ae6: 80 91 42 03 lds r24, 0x0342 ; 0x800342 <__data_end> + aea: 8f 7e andi r24, 0xEF ; 239 + aec: 80 93 42 03 sts 0x0342, r24 ; 0x800342 <__data_end> + pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport); + af0: 60 91 42 03 lds r22, 0x0342 ; 0x800342 <__data_end> + af4: 80 e0 ldi r24, 0x00 ; 0 + af6: 0e 94 95 06 call 0xd2a ; 0xd2a + lcd_e_toggle(); + afa: 0e 94 32 04 call 0x864 ; 0x864 +static inline void _delayFourCycles(unsigned int __count) +{ + if ( __count == 0 ) + __asm__ __volatile__( "rjmp 1f\n 1:" ); + else + __asm__ __volatile__ ( + afe: 21 97 sbiw r28, 0x01 ; 1 + b00: f1 f7 brne .-4 ; 0xafe + pcf8574_setoutput(LCD_PCF8574_DEVICEID, dataport); + lcd_e_toggle(); + delay(64); + + + lcd_command(LCD_FUNCTION_DEFAULT); // настраиваем кол-во строк + b02: 88 e2 ldi r24, 0x28 ; 40 + b04: 0e 94 de 04 call 0x9bc ; 0x9bc + lcd_command(LCD_DISP_OFF); // вырубаем дисплей + b08: 88 e0 ldi r24, 0x08 ; 8 + b0a: 0e 94 de 04 call 0x9bc ; 0x9bc + lcd_clrscr(); // чистим экран + b0e: 0e 94 f2 04 call 0x9e4 ; 0x9e4 + lcd_command(LCD_MODE_DEFAULT); // запускаемся в стандартном режиме + b12: 86 e0 ldi r24, 0x06 ; 6 + b14: 0e 94 de 04 call 0x9bc ; 0x9bc + lcd_command(dispAttr); // отправляем настройки + b18: 81 2f mov r24, r17 + b1a: 0e 94 de 04 call 0x9bc ; 0x9bc +} + b1e: df 91 pop r29 + b20: cf 91 pop r28 + b22: 1f 91 pop r17 + b24: 08 95 ret + +00000b26 : +struct TextCounter textCounter; + +//struct TextCounter textCounter; + +void Lcd_inciliation() { + lcd_init(LCD_DISP_ON_BLINK); // инициализация дисплея + b26: 8d e0 ldi r24, 0x0D ; 13 + b28: 0e 94 41 05 call 0xa82 ; 0xa82 + lcd_home(); // домой курсор + b2c: 0e 94 09 05 call 0xa12 ; 0xa12 + lcd_led(0); // вкл подсветки + b30: 80 e0 ldi r24, 0x00 ; 0 + b32: 0e 94 f6 04 call 0x9ec ; 0x9ec + b36: 08 95 ret + +00000b38 : + //textCounter.startTime = millis(); // Запоминаем время запуска программы + //Из за строчки выше все ломается +} + +void fillBuffer1(const char* source, char* buffer, size_t bufferSize, int incrementValue) { + b38: cf 92 push r12 + b3a: df 92 push r13 + b3c: ef 92 push r14 + b3e: ff 92 push r15 + b40: 0f 93 push r16 + b42: 1f 93 push r17 + b44: cf 93 push r28 + b46: df 93 push r29 + b48: 8c 01 movw r16, r24 + b4a: 7b 01 movw r14, r22 + b4c: c9 01 movw r24, r18 + int startIndex = incrementValue % strlen(source); // Определяем начальный индекс на основе incrementValue + b4e: f8 01 movw r30, r16 + b50: 01 90 ld r0, Z+ + b52: 00 20 and r0, r0 + b54: e9 f7 brne .-6 ; 0xb50 + b56: 31 97 sbiw r30, 0x01 ; 1 + b58: bf 01 movw r22, r30 + b5a: 60 1b sub r22, r16 + b5c: 71 0b sbc r23, r17 + b5e: 0e 94 76 0b call 0x16ec ; 0x16ec <__udivmodhi4> + b62: 67 01 movw r12, r14 + b64: 20 e1 ldi r18, 0x10 ; 16 + b66: c2 0e add r12, r18 + b68: d1 1c adc r13, r1 + b6a: e7 01 movw r28, r14 + int endIndex = startIndex + 16; + + for (int i = 0; i < 16; ++i) { + buffer[i] = source[(startIndex + i) % strlen(source)]; + b6c: 9c 01 movw r18, r24 + b6e: 2e 19 sub r18, r14 + b70: 3f 09 sbc r19, r15 + b72: f8 01 movw r30, r16 + b74: 01 90 ld r0, Z+ + b76: 00 20 and r0, r0 + b78: e9 f7 brne .-6 ; 0xb74 + b7a: 31 97 sbiw r30, 0x01 ; 1 + b7c: bf 01 movw r22, r30 + b7e: 60 1b sub r22, r16 + b80: 71 0b sbc r23, r17 + b82: c9 01 movw r24, r18 + b84: 8c 0f add r24, r28 + b86: 9d 1f adc r25, r29 + b88: 0e 94 76 0b call 0x16ec ; 0x16ec <__udivmodhi4> + b8c: f8 01 movw r30, r16 + b8e: e8 0f add r30, r24 + b90: f9 1f adc r31, r25 + b92: 80 81 ld r24, Z + b94: 89 93 st Y+, r24 + +void fillBuffer1(const char* source, char* buffer, size_t bufferSize, int incrementValue) { + int startIndex = incrementValue % strlen(source); // Определяем начальный индекс на основе incrementValue + int endIndex = startIndex + 16; + + for (int i = 0; i < 16; ++i) { + b96: cc 15 cp r28, r12 + b98: dd 05 cpc r29, r13 + b9a: 59 f7 brne .-42 ; 0xb72 + buffer[i] = source[(startIndex + i) % strlen(source)]; + } + buffer[16] = '\0'; // Установка нулевого символа в конце буфера + b9c: f7 01 movw r30, r14 + b9e: 10 8a std Z+16, r1 ; 0x10 +} + ba0: df 91 pop r29 + ba2: cf 91 pop r28 + ba4: 1f 91 pop r17 + ba6: 0f 91 pop r16 + ba8: ff 90 pop r15 + baa: ef 90 pop r14 + bac: df 90 pop r13 + bae: cf 90 pop r12 + bb0: 08 95 ret + +00000bb2 : + +void fillBuffer2(float value1, float value2, float value3, char* buffer, size_t bufferSize) { + bb2: af 92 push r10 + bb4: bf 92 push r11 + bb6: cf 92 push r12 + bb8: df 92 push r13 + bba: ef 92 push r14 + bbc: ff 92 push r15 + bbe: 0f 93 push r16 + bc0: 1f 93 push r17 + snprintf(buffer, bufferSize, "%.2f.%.2f.%.2f", value1, value2, value3); + bc2: 1f 93 push r17 + bc4: 0f 93 push r16 + bc6: ff 92 push r15 + bc8: ef 92 push r14 + bca: 5f 93 push r21 + bcc: 4f 93 push r20 + bce: 3f 93 push r19 + bd0: 2f 93 push r18 + bd2: 9f 93 push r25 + bd4: 8f 93 push r24 + bd6: 7f 93 push r23 + bd8: 6f 93 push r22 + bda: 86 e1 ldi r24, 0x16 ; 22 + bdc: 93 e0 ldi r25, 0x03 ; 3 + bde: 9f 93 push r25 + be0: 8f 93 push r24 + be2: bf 92 push r11 + be4: af 92 push r10 + be6: df 92 push r13 + be8: cf 92 push r12 + bea: 0e 94 af 0b call 0x175e ; 0x175e +} + bee: 8d b7 in r24, 0x3d ; 61 + bf0: 9e b7 in r25, 0x3e ; 62 + bf2: 42 96 adiw r24, 0x12 ; 18 + bf4: 0f b6 in r0, 0x3f ; 63 + bf6: f8 94 cli + bf8: 9e bf out 0x3e, r25 ; 62 + bfa: 0f be out 0x3f, r0 ; 63 + bfc: 8d bf out 0x3d, r24 ; 61 + bfe: 1f 91 pop r17 + c00: 0f 91 pop r16 + c02: ff 90 pop r15 + c04: ef 90 pop r14 + c06: df 90 pop r13 + c08: cf 90 pop r12 + c0a: bf 90 pop r11 + c0c: af 90 pop r10 + c0e: 08 95 ret + +00000c10 : + +void printLcd(struct DisplayData* displayData) { + c10: 6f 92 push r6 + c12: 7f 92 push r7 + c14: af 92 push r10 + c16: bf 92 push r11 + c18: cf 92 push r12 + c1a: df 92 push r13 + c1c: ef 92 push r14 + c1e: ff 92 push r15 + c20: 0f 93 push r16 + c22: 1f 93 push r17 + c24: cf 93 push r28 + c26: df 93 push r29 + c28: cd b7 in r28, 0x3d ; 61 + c2a: de b7 in r29, 0x3e ; 62 + c2c: c2 54 subi r28, 0x42 ; 66 + c2e: d1 09 sbc r29, r1 + c30: 0f b6 in r0, 0x3f ; 63 + c32: f8 94 cli + c34: de bf out 0x3e, r29 ; 62 + c36: 0f be out 0x3f, r0 ; 63 + c38: cd bf out 0x3d, r28 ; 61 + c3a: 3c 01 movw r6, r24 + // Буферы для заполнения данных + char buffer1[17]; + char buffer2[17]; + + // Заполнение буфера 1 + fillBuffer1(displayData->topLine, buffer1, sizeof(buffer1), textCounter.incrementValue); + c3c: 20 91 49 03 lds r18, 0x0349 ; 0x800349 + c40: 30 91 4a 03 lds r19, 0x034A ; 0x80034a + c44: 41 e1 ldi r20, 0x11 ; 17 + c46: 50 e0 ldi r21, 0x00 ; 0 + c48: be 01 movw r22, r28 + c4a: 6f 5f subi r22, 0xFF ; 255 + c4c: 7f 4f sbci r23, 0xFF ; 255 + c4e: 0e 94 9c 05 call 0xb38 ; 0xb38 + + // Заполнение буфера 2 + fillBuffer2(displayData->value1, displayData->value2, displayData->value3, buffer2, sizeof(buffer2)); + c52: f3 01 movw r30, r6 + c54: e8 5b subi r30, 0xB8 ; 184 + c56: ff 4f sbci r31, 0xFF ; 255 + c58: e0 80 ld r14, Z + c5a: f1 80 ldd r15, Z+1 ; 0x01 + c5c: 02 81 ldd r16, Z+2 ; 0x02 + c5e: 13 81 ldd r17, Z+3 ; 0x03 + c60: 34 97 sbiw r30, 0x04 ; 4 + c62: 20 81 ld r18, Z + c64: 31 81 ldd r19, Z+1 ; 0x01 + c66: 42 81 ldd r20, Z+2 ; 0x02 + c68: 53 81 ldd r21, Z+3 ; 0x03 + c6a: 34 97 sbiw r30, 0x04 ; 4 + c6c: 60 81 ld r22, Z + c6e: 71 81 ldd r23, Z+1 ; 0x01 + c70: 82 81 ldd r24, Z+2 ; 0x02 + c72: 93 81 ldd r25, Z+3 ; 0x03 + c74: 0f 2e mov r0, r31 + c76: f1 e1 ldi r31, 0x11 ; 17 + c78: af 2e mov r10, r31 + c7a: b1 2c mov r11, r1 + c7c: f0 2d mov r31, r0 + c7e: fe 01 movw r30, r28 + c80: 72 96 adiw r30, 0x12 ; 18 + c82: 6f 01 movw r12, r30 + c84: 0e 94 d9 05 call 0xbb2 ; 0xbb2 + + // Создание массива для вывода на дисплей + char displayArray[32]; + strncpy(displayArray, buffer1, 16); // Копирование первых 16 символов из buffer1 в displayArray + c88: 40 e1 ldi r20, 0x10 ; 16 + c8a: 50 e0 ldi r21, 0x00 ; 0 + c8c: be 01 movw r22, r28 + c8e: 6f 5f subi r22, 0xFF ; 255 + c90: 7f 4f sbci r23, 0xFF ; 255 + c92: ce 01 movw r24, r28 + c94: 83 96 adiw r24, 0x23 ; 35 + c96: 0e 94 8a 0b call 0x1714 ; 0x1714 + strncpy(displayArray + 16, buffer2, 16); // Копирование первых 16 символов из buffer2 в displayArray, начиная с позиции 16 + c9a: 40 e1 ldi r20, 0x10 ; 16 + c9c: 50 e0 ldi r21, 0x00 ; 0 + c9e: b6 01 movw r22, r12 + ca0: ce 01 movw r24, r28 + ca2: c3 96 adiw r24, 0x33 ; 51 + ca4: 0e 94 8a 0b call 0x1714 ; 0x1714 + + // Вывод данных на экран + lcd_gotoxy(0, 0); + ca8: 60 e0 ldi r22, 0x00 ; 0 + caa: 80 e0 ldi r24, 0x00 ; 0 + cac: 0e 94 e8 04 call 0x9d0 ; 0x9d0 + lcd_puts(displayArray); + cb0: ce 01 movw r24, r28 + cb2: 83 96 adiw r24, 0x23 ; 35 + cb4: 0e 94 31 05 call 0xa62 ; 0xa62 + + lcd_gotoxy(0, 1); + cb8: 61 e0 ldi r22, 0x01 ; 1 + cba: 80 e0 ldi r24, 0x00 ; 0 + cbc: 0e 94 e8 04 call 0x9d0 ; 0x9d0 + lcd_puts(displayArray + 16); // Вывод второй половины displayArray + cc0: ce 01 movw r24, r28 + cc2: c3 96 adiw r24, 0x33 ; 51 + cc4: 0e 94 31 05 call 0xa62 ; 0xa62 +} + cc8: ce 5b subi r28, 0xBE ; 190 + cca: df 4f sbci r29, 0xFF ; 255 + ccc: 0f b6 in r0, 0x3f ; 63 + cce: f8 94 cli + cd0: de bf out 0x3e, r29 ; 62 + cd2: 0f be out 0x3f, r0 ; 63 + cd4: cd bf out 0x3d, r28 ; 61 + cd6: df 91 pop r29 + cd8: cf 91 pop r28 + cda: 1f 91 pop r17 + cdc: 0f 91 pop r16 + cde: ff 90 pop r15 + ce0: ef 90 pop r14 + ce2: df 90 pop r13 + ce4: cf 90 pop r12 + ce6: bf 90 pop r11 + ce8: af 90 pop r10 + cea: 7f 90 pop r7 + cec: 6f 90 pop r6 + cee: 08 95 ret + +00000cf0 : + i2c_write(b); + i2c_stop(); + return 0; + } + return -1; +} + cf0: 0e 94 de 06 call 0xdbc ; 0xdbc + cf4: 83 e0 ldi r24, 0x03 ; 3 + cf6: 8a 95 dec r24 + cf8: f1 f7 brne .-4 ; 0xcf6 + cfa: 00 00 nop + cfc: 10 92 4b 03 sts 0x034B, r1 ; 0x80034b + d00: 08 95 ret + +00000d02 : + d02: 81 11 cpse r24, r1 + d04: 0e c0 rjmp .+28 ; 0xd22 + d06: 68 30 cpi r22, 0x08 ; 8 + d08: 70 f4 brcc .+28 ; 0xd26 + d0a: 80 91 4b 03 lds r24, 0x034B ; 0x80034b + d0e: 08 2e mov r0, r24 + d10: 00 0c add r0, r0 + d12: 99 0b sbc r25, r25 + d14: 02 c0 rjmp .+4 ; 0xd1a + d16: 95 95 asr r25 + d18: 87 95 ror r24 + d1a: 6a 95 dec r22 + d1c: e2 f7 brpl .-8 ; 0xd16 + d1e: 81 70 andi r24, 0x01 ; 1 + d20: 08 95 ret + d22: 8f ef ldi r24, 0xFF ; 255 + d24: 08 95 ret + d26: 8f ef ldi r24, 0xFF ; 255 + d28: 08 95 ret + +00000d2a : + d2a: cf 93 push r28 + d2c: 81 11 cpse r24, r1 + d2e: 0d c0 rjmp .+26 ; 0xd4a + d30: c6 2f mov r28, r22 + d32: 60 93 4b 03 sts 0x034B, r22 ; 0x80034b + d36: 8e e4 ldi r24, 0x4E ; 78 + d38: 0e 94 e4 06 call 0xdc8 ; 0xdc8 + d3c: 8c 2f mov r24, r28 + d3e: 0e 94 14 07 call 0xe28 ; 0xe28 + d42: 0e 94 0b 07 call 0xe16 ; 0xe16 + d46: 80 e0 ldi r24, 0x00 ; 0 + d48: 01 c0 rjmp .+2 ; 0xd4c + d4a: 8f ef ldi r24, 0xFF ; 255 + d4c: cf 91 pop r28 + d4e: 08 95 ret + +00000d50 : + +// настройка пинов вывода +int8_t pcf8574_setoutputpin(uint8_t deviceid, uint8_t pin, uint8_t data) { + d50: cf 93 push r28 + d52: df 93 push r29 + if((deviceid >= 0 && deviceid < PCF8574_MAXDEVICES) && (pin >= 0 && pin < PCF8574_MAXPINS)) { + d54: 81 11 cpse r24, r1 + d56: 24 c0 rjmp .+72 ; 0xda0 + d58: 68 30 cpi r22, 0x08 ; 8 + d5a: 20 f5 brcc .+72 ; 0xda4 + uint8_t b = 0; + b = pcf8574_pinstatus[deviceid]; + d5c: 80 91 4b 03 lds r24, 0x034B ; 0x80034b + b = (data != 0) ? (b | (1 << pin)) : (b & ~(1 << pin)); + d60: 44 23 and r20, r20 + d62: 49 f0 breq .+18 ; 0xd76 + d64: c1 e0 ldi r28, 0x01 ; 1 + d66: d0 e0 ldi r29, 0x00 ; 0 + d68: 02 c0 rjmp .+4 ; 0xd6e + d6a: cc 0f add r28, r28 + d6c: dd 1f adc r29, r29 + d6e: 6a 95 dec r22 + d70: e2 f7 brpl .-8 ; 0xd6a + d72: c8 2b or r28, r24 + d74: 09 c0 rjmp .+18 ; 0xd88 + d76: c1 e0 ldi r28, 0x01 ; 1 + d78: d0 e0 ldi r29, 0x00 ; 0 + d7a: 02 c0 rjmp .+4 ; 0xd80 + d7c: cc 0f add r28, r28 + d7e: dd 1f adc r29, r29 + d80: 6a 95 dec r22 + d82: e2 f7 brpl .-8 ; 0xd7c + d84: c0 95 com r28 + d86: c8 23 and r28, r24 + pcf8574_pinstatus[deviceid] = b; + d88: c0 93 4b 03 sts 0x034B, r28 ; 0x80034b + //рестартим + i2c_start(((PCF8574_ADDRBASE+deviceid)<<1) | I2C_WRITE); + d8c: 8e e4 ldi r24, 0x4E ; 78 + d8e: 0e 94 e4 06 call 0xdc8 ; 0xdc8 + i2c_write(b); + d92: 8c 2f mov r24, r28 + d94: 0e 94 14 07 call 0xe28 ; 0xe28 + i2c_stop(); + d98: 0e 94 0b 07 call 0xe16 ; 0xe16 + return 0; + d9c: 80 e0 ldi r24, 0x00 ; 0 + d9e: 03 c0 rjmp .+6 ; 0xda6 + } + return -1; + da0: 8f ef ldi r24, 0xFF ; 255 + da2: 01 c0 rjmp .+2 ; 0xda6 + da4: 8f ef ldi r24, 0xFF ; 255 +} + da6: df 91 pop r29 + da8: cf 91 pop r28 + daa: 08 95 ret + +00000dac : + +// установка высокого уровня на выходных пинах +int8_t pcf8574_setoutputpinhigh(uint8_t deviceid, uint8_t pin) { + return pcf8574_setoutputpin(deviceid, pin, 1); + dac: 41 e0 ldi r20, 0x01 ; 1 + dae: 0e 94 a8 06 call 0xd50 ; 0xd50 +} + db2: 08 95 ret + +00000db4 : + +// установка низкого уровня на выходных пинах +int8_t pcf8574_setoutputpinlow(uint8_t deviceid, uint8_t pin) { + return pcf8574_setoutputpin(deviceid, pin, 0); + db4: 40 e0 ldi r20, 0x00 ; 0 + db6: 0e 94 a8 06 call 0xd50 ; 0xd50 +} + dba: 08 95 ret + +00000dbc : + +// тупа повторяем условие СТАРТ +unsigned char i2c_rep_start(unsigned char address) +{ + return i2c_start(address); +} + dbc: 10 92 b9 00 sts 0x00B9, r1 ; 0x8000b9 <__DATA_REGION_ORIGIN__+0x59> + dc0: 8d ef ldi r24, 0xFD ; 253 + dc2: 80 93 b8 00 sts 0x00B8, r24 ; 0x8000b8 <__DATA_REGION_ORIGIN__+0x58> + dc6: 08 95 ret + +00000dc8 : + dc8: 94 ea ldi r25, 0xA4 ; 164 + dca: 90 93 bc 00 sts 0x00BC, r25 ; 0x8000bc <__DATA_REGION_ORIGIN__+0x5c> + dce: ec eb ldi r30, 0xBC ; 188 + dd0: f0 e0 ldi r31, 0x00 ; 0 + dd2: 90 81 ld r25, Z + dd4: 99 23 and r25, r25 + dd6: ec f7 brge .-6 ; 0xdd2 + dd8: 90 91 b9 00 lds r25, 0x00B9 ; 0x8000b9 <__DATA_REGION_ORIGIN__+0x59> + ddc: 98 7f andi r25, 0xF8 ; 248 + dde: 98 30 cpi r25, 0x08 ; 8 + de0: 11 f0 breq .+4 ; 0xde6 + de2: 90 31 cpi r25, 0x10 ; 16 + de4: a1 f4 brne .+40 ; 0xe0e + de6: 80 93 bb 00 sts 0x00BB, r24 ; 0x8000bb <__DATA_REGION_ORIGIN__+0x5b> + dea: 84 e8 ldi r24, 0x84 ; 132 + dec: 80 93 bc 00 sts 0x00BC, r24 ; 0x8000bc <__DATA_REGION_ORIGIN__+0x5c> + df0: ec eb ldi r30, 0xBC ; 188 + df2: f0 e0 ldi r31, 0x00 ; 0 + df4: 80 81 ld r24, Z + df6: 88 23 and r24, r24 + df8: ec f7 brge .-6 ; 0xdf4 + dfa: 90 91 b9 00 lds r25, 0x00B9 ; 0x8000b9 <__DATA_REGION_ORIGIN__+0x59> + dfe: 98 7f andi r25, 0xF8 ; 248 + e00: 98 31 cpi r25, 0x18 ; 24 + e02: 39 f0 breq .+14 ; 0xe12 + e04: 81 e0 ldi r24, 0x01 ; 1 + e06: 90 34 cpi r25, 0x40 ; 64 + e08: 29 f4 brne .+10 ; 0xe14 + e0a: 80 e0 ldi r24, 0x00 ; 0 + e0c: 08 95 ret + e0e: 81 e0 ldi r24, 0x01 ; 1 + e10: 08 95 ret + e12: 80 e0 ldi r24, 0x00 ; 0 + e14: 08 95 ret + +00000e16 : + +// передача условия СТОП на шину +void i2c_stop(void) +{ + // отправка условия СТОП + TWCR = (1< + // ждем выполнения условия остановки + while(TWCR & (1< +} + e26: 08 95 ret + +00000e28 : +unsigned char i2c_write( unsigned char data ) +{ + uint8_t twst; + + // отправляем данные на уст-во + TWDR = data; + e28: 80 93 bb 00 sts 0x00BB, r24 ; 0x8000bb <__DATA_REGION_ORIGIN__+0x5b> + TWCR = (1< + // ждем завершения передачи + while(!(TWCR & (1< + // записываем ответ от ведомого уст-ва + twst = TW_STATUS & 0xF8; + e3c: 90 91 b9 00 lds r25, 0x00B9 ; 0x8000b9 <__DATA_REGION_ORIGIN__+0x59> + e40: 98 7f andi r25, 0xF8 ; 248 + e42: 81 e0 ldi r24, 0x01 ; 1 + e44: 98 32 cpi r25, 0x28 ; 40 + e46: 09 f4 brne .+2 ; 0xe4a + e48: 80 e0 ldi r24, 0x00 ; 0 + if( twst != TW_MT_DATA_ACK) return 1; + return 0; +} + e4a: 08 95 ret + +00000e4c
: +#include "UART/uart.h" +#include "stdbool.h" +#include "LCD/lcd.h" +#include "Protocol/protocol.h" + +int main(void) { + e4c: 4f 92 push r4 + e4e: 5f 92 push r5 + e50: 6f 92 push r6 + e52: 7f 92 push r7 + e54: 8f 92 push r8 + e56: 9f 92 push r9 + e58: af 92 push r10 + e5a: bf 92 push r11 + e5c: cf 92 push r12 + e5e: df 92 push r13 + e60: ef 92 push r14 + e62: ff 92 push r15 + e64: 0f 93 push r16 + e66: 1f 93 push r17 + e68: cf 93 push r28 + e6a: df 93 push r29 + e6c: cd b7 in r28, 0x3d ; 61 + e6e: de b7 in r29, 0x3e ; 62 + e70: c3 50 subi r28, 0x03 ; 3 + e72: d2 40 sbci r29, 0x02 ; 2 + e74: 0f b6 in r0, 0x3f ; 63 + e76: f8 94 cli + e78: de bf out 0x3e, r29 ; 62 + e7a: 0f be out 0x3f, r0 ; 63 + e7c: cd bf out 0x3d, r28 ; 61 + struct Client hdlc; + bool flag_connection = false; + + Lcd_inciliation(); + e7e: 0e 94 93 05 call 0xb26 ; 0xb26 + UART_init(); + e82: 0e 94 9e 0a call 0x153c ; 0x153c + init_hdlc_client(&hdlc, 200); + e86: 68 ec ldi r22, 0xC8 ; 200 + e88: 70 e0 ldi r23, 0x00 ; 0 + e8a: ce 01 movw r24, r28 + e8c: 01 96 adiw r24, 0x01 ; 1 + e8e: 0e 94 53 00 call 0xa6 ; 0xa6 +// while(true){ +// if (!flag_connection){ +// } +// } + + hdlc_connect(&hdlc); + e92: ce 01 movw r24, r28 + e94: 01 96 adiw r24, 0x01 ; 1 + e96: 0e 94 6c 00 call 0xd8 ; 0xd8 + uint8_t buffer[10]; + + hdlc_get_raw_frame(&hdlc, buffer, sizeof buffer); + e9a: 4a e0 ldi r20, 0x0A ; 10 + e9c: 50 e0 ldi r21, 0x00 ; 0 + e9e: be 01 movw r22, r28 + ea0: 66 5e subi r22, 0xE6 ; 230 + ea2: 7f 4f sbci r23, 0xFF ; 255 + ea4: ce 01 movw r24, r28 + ea6: 01 96 adiw r24, 0x01 ; 1 + ea8: 0e 94 91 00 call 0x122 ; 0x122 + + UART_send(buffer, sizeof buffer); + eac: 6a e0 ldi r22, 0x0A ; 10 + eae: 70 e0 ldi r23, 0x00 ; 0 + eb0: ce 01 movw r24, r28 + eb2: 4a 96 adiw r24, 0x1a ; 26 + eb4: 0e 94 aa 0a call 0x1554 ; 0x1554 + + while(!flag_connection){ + uint8_t* buffer_recive[10]; + UART_receive(buffer_recive, sizeof buffer_recive); + eb8: 64 e1 ldi r22, 0x14 ; 20 + eba: 70 e0 ldi r23, 0x00 ; 0 + ebc: ce 01 movw r24, r28 + ebe: 80 51 subi r24, 0x10 ; 16 + ec0: 9e 4f sbci r25, 0xFE ; 254 + ec2: 0e 94 ce 0a call 0x159c ; 0x159c + + int err = hdlc_timeout_handler(&hdlc, 1); + ec6: 61 e0 ldi r22, 0x01 ; 1 + ec8: 70 e0 ldi r23, 0x00 ; 0 + eca: ce 01 movw r24, r28 + ecc: 01 96 adiw r24, 0x01 ; 1 + ece: 0e 94 a8 01 call 0x350 ; 0x350 + if (err == ERR_FRAME_TIME_OUT){ + ed2: 05 96 adiw r24, 0x05 ; 5 + ed4: 81 f4 brne .+32 ; 0xef6 + hdlc_get_raw_frame(&hdlc, buffer, sizeof buffer); + ed6: 4a e0 ldi r20, 0x0A ; 10 + ed8: 50 e0 ldi r21, 0x00 ; 0 + eda: be 01 movw r22, r28 + edc: 66 5e subi r22, 0xE6 ; 230 + ede: 7f 4f sbci r23, 0xFF ; 255 + ee0: ce 01 movw r24, r28 + ee2: 01 96 adiw r24, 0x01 ; 1 + ee4: 0e 94 91 00 call 0x122 ; 0x122 + UART_send(buffer, sizeof buffer); + ee8: 6a e0 ldi r22, 0x0A ; 10 + eea: 70 e0 ldi r23, 0x00 ; 0 + eec: ce 01 movw r24, r28 + eee: 4a 96 adiw r24, 0x1a ; 26 + ef0: 0e 94 aa 0a call 0x1554 ; 0x1554 + ef4: e1 cf rjmp .-62 ; 0xeb8 + continue; + } + + err = hdlc_decode_recived_raw_data(&hdlc, buffer_recive, sizeof buffer_recive, 0, 0); + ef6: 00 e0 ldi r16, 0x00 ; 0 + ef8: 10 e0 ldi r17, 0x00 ; 0 + efa: 20 e0 ldi r18, 0x00 ; 0 + efc: 30 e0 ldi r19, 0x00 ; 0 + efe: 44 e1 ldi r20, 0x14 ; 20 + f00: 50 e0 ldi r21, 0x00 ; 0 + f02: be 01 movw r22, r28 + f04: 60 51 subi r22, 0x10 ; 16 + f06: 7e 4f sbci r23, 0xFE ; 254 + f08: ce 01 movw r24, r28 + f0a: 01 96 adiw r24, 0x01 ; 1 + f0c: 0e 94 07 01 call 0x20e ; 0x20e + f10: 8c 01 movw r16, r24 + if (err < 0){ + f12: 99 23 and r25, r25 + f14: ac f4 brge .+42 ; 0xf40 + if (err == ERR_INVALID_SEQ_NUMBER_FRAME){ + f16: 0a 3f cpi r16, 0xFA ; 250 + f18: 8f ef ldi r24, 0xFF ; 255 + f1a: 18 07 cpc r17, r24 + f1c: b1 f4 brne .+44 ; 0xf4a + uint8_t* buffer_rej[10]; + hdlc_get_raw_frame(&hdlc, buffer_rej, sizeof buffer_rej); + f1e: 44 e1 ldi r20, 0x14 ; 20 + f20: 50 e0 ldi r21, 0x00 ; 0 + f22: be 01 movw r22, r28 + f24: 60 5a subi r22, 0xA0 ; 160 + f26: 7e 4f sbci r23, 0xFE ; 254 + f28: ce 01 movw r24, r28 + f2a: 01 96 adiw r24, 0x01 ; 1 + f2c: 0e 94 91 00 call 0x122 ; 0x122 + UART_send(buffer_rej, sizeof buffer_rej); + f30: 64 e1 ldi r22, 0x14 ; 20 + f32: 70 e0 ldi r23, 0x00 ; 0 + f34: ce 01 movw r24, r28 + f36: 80 5a subi r24, 0xA0 ; 160 + f38: 9e 4f sbci r25, 0xFE ; 254 + f3a: 0e 94 aa 0a call 0x1554 ; 0x1554 + f3e: 05 c0 rjmp .+10 ; 0xf4a + return err; + } + return err; + } + + if (hdlc.state == READY_STATE){ + f40: 89 81 ldd r24, Y+1 ; 0x01 + + hdlc_get_raw_frame(&hdlc, buffer, sizeof buffer); + + UART_send(buffer, sizeof buffer); + + while(!flag_connection){ + f42: 82 30 cpi r24, 0x02 ; 2 + f44: 09 f0 breq .+2 ; 0xf48 + f46: b8 cf rjmp .-144 ; 0xeb8 + f48: 03 c0 rjmp .+6 ; 0xf50 + hdlc_get_raw_frame(&hdlc, buffer, sizeof buffer); + UART_send(buffer, sizeof buffer); + continue; + } + + err = hdlc_decode_recived_raw_data(&hdlc, buffer_recive, sizeof buffer_recive, 0, 0); + f4a: 80 2f mov r24, r16 + f4c: 91 2f mov r25, r17 + f4e: fe c0 rjmp .+508 ; 0x114c + flag_connection = true; + } + } + + struct message mess; + mess.numbers[0] = 1.23; + f50: 84 ea ldi r24, 0xA4 ; 164 + f52: 90 e7 ldi r25, 0x70 ; 112 + f54: ad e9 ldi r26, 0x9D ; 157 + f56: bf e3 ldi r27, 0x3F ; 63 + f58: 8c a3 std Y+36, r24 ; 0x24 + f5a: 9d a3 std Y+37, r25 ; 0x25 + f5c: ae a3 std Y+38, r26 ; 0x26 + f5e: bf a3 std Y+39, r27 ; 0x27 + mess.numbers[1] = 22.1; + f60: 8d ec ldi r24, 0xCD ; 205 + f62: 9c ec ldi r25, 0xCC ; 204 + f64: a0 eb ldi r26, 0xB0 ; 176 + f66: b1 e4 ldi r27, 0x41 ; 65 + f68: 88 a7 std Y+40, r24 ; 0x28 + f6a: 99 a7 std Y+41, r25 ; 0x29 + f6c: aa a7 std Y+42, r26 ; 0x2a + f6e: bb a7 std Y+43, r27 ; 0x2b + mess.numbers[2] = 100; + f70: 80 e0 ldi r24, 0x00 ; 0 + f72: 90 e0 ldi r25, 0x00 ; 0 + f74: a8 ec ldi r26, 0xC8 ; 200 + f76: b2 e4 ldi r27, 0x42 ; 66 + f78: 8c a7 std Y+44, r24 ; 0x2c + f7a: 9d a7 std Y+45, r25 ; 0x2d + f7c: ae a7 std Y+46, r26 ; 0x2e + f7e: bf a7 std Y+47, r27 ; 0x2f + mess.len_numbers = 3; + f80: 83 e0 ldi r24, 0x03 ; 3 + f82: 90 e0 ldi r25, 0x00 ; 0 + f84: 99 ab std Y+49, r25 ; 0x31 + f86: 88 ab std Y+48, r24 ; 0x30 + mess.str = "word war in new world io ex"; + f88: 85 e2 ldi r24, 0x25 ; 37 + f8a: 93 e0 ldi r25, 0x03 ; 3 + f8c: 9b ab std Y+51, r25 ; 0x33 + f8e: 8a ab std Y+50, r24 ; 0x32 + mess.len_str = sizeof mess.str; + f90: 82 e0 ldi r24, 0x02 ; 2 + f92: 90 e0 ldi r25, 0x00 ; 0 + f94: 9d ab std Y+53, r25 ; 0x35 + f96: 8c ab std Y+52, r24 ; 0x34 + + uint8_t data[64]; + size_t len_data; + protocol_encode(mess, data, &len_data); + f98: 2e 01 movw r4, r28 + f9a: e6 e7 ldi r30, 0x76 ; 118 + f9c: 4e 0e add r4, r30 + f9e: 51 1c adc r5, r1 + fa0: 5f 92 push r5 + fa2: 4f 92 push r4 + fa4: 3e 01 movw r6, r28 + fa6: f6 e3 ldi r31, 0x36 ; 54 + fa8: 6f 0e add r6, r31 + faa: 71 1c adc r7, r1 + fac: 7f 92 push r7 + fae: 6f 92 push r6 + fb0: 8c a0 ldd r8, Y+36 ; 0x24 + fb2: 9d a0 ldd r9, Y+37 ; 0x25 + fb4: ae a0 ldd r10, Y+38 ; 0x26 + fb6: bf a0 ldd r11, Y+39 ; 0x27 + fb8: c8 a4 ldd r12, Y+40 ; 0x28 + fba: d9 a4 ldd r13, Y+41 ; 0x29 + fbc: ea a4 ldd r14, Y+42 ; 0x2a + fbe: fb a4 ldd r15, Y+43 ; 0x2b + fc0: 0c a5 ldd r16, Y+44 ; 0x2c + fc2: 1d a5 ldd r17, Y+45 ; 0x2d + fc4: 2e a5 ldd r18, Y+46 ; 0x2e + fc6: 3f a5 ldd r19, Y+47 ; 0x2f + fc8: 48 a9 ldd r20, Y+48 ; 0x30 + fca: 59 a9 ldd r21, Y+49 ; 0x31 + fcc: 6a a9 ldd r22, Y+50 ; 0x32 + fce: 7b a9 ldd r23, Y+51 ; 0x33 + fd0: 8c a9 ldd r24, Y+52 ; 0x34 + fd2: 9d a9 ldd r25, Y+53 ; 0x35 + fd4: 0e 94 5c 09 call 0x12b8 ; 0x12b8 + + hdlc_send_data(&hdlc, data, len_data); + fd8: f2 01 movw r30, r4 + fda: 40 81 ld r20, Z + fdc: 51 81 ldd r21, Z+1 ; 0x01 + fde: b3 01 movw r22, r6 + fe0: ce 01 movw r24, r28 + fe2: 01 96 adiw r24, 0x01 ; 1 + fe4: 0e 94 76 00 call 0xec ; 0xec + uint8_t buffer_data[72]; + hdlc_get_raw_frame(&hdlc, buffer_data, sizeof buffer_data); + fe8: 48 e4 ldi r20, 0x48 ; 72 + fea: 50 e0 ldi r21, 0x00 ; 0 + fec: be 01 movw r22, r28 + fee: 68 58 subi r22, 0x88 ; 136 + ff0: 7f 4f sbci r23, 0xFF ; 255 + ff2: ce 01 movw r24, r28 + ff4: 01 96 adiw r24, 0x01 ; 1 + ff6: 0e 94 91 00 call 0x122 ; 0x122 + + UART_send(buffer_data, sizeof buffer_data); + ffa: 68 e4 ldi r22, 0x48 ; 72 + ffc: 70 e0 ldi r23, 0x00 ; 0 + ffe: ce 01 movw r24, r28 + 1000: 88 58 subi r24, 0x88 ; 136 + 1002: 9f 4f sbci r25, 0xFF ; 255 + 1004: 0e 94 aa 0a call 0x1554 ; 0x1554 + 1008: 0f 90 pop r0 + 100a: 0f 90 pop r0 + 100c: 0f 90 pop r0 + 100e: 0f 90 pop r0 + bool flag_recive = false; + uint8_t data_recive[64]; + size_t len_data_recive; + while (!flag_recive){ + uint8_t* buffer_recive_data[72]; + UART_receive(buffer_recive_data, sizeof buffer_recive_data); + 1010: 60 e9 ldi r22, 0x90 ; 144 + 1012: 70 e0 ldi r23, 0x00 ; 0 + 1014: ce 01 movw r24, r28 + 1016: 80 5a subi r24, 0xA0 ; 160 + 1018: 9e 4f sbci r25, 0xFE ; 254 + 101a: 0e 94 ce 0a call 0x159c ; 0x159c + + int err = hdlc_timeout_handler(&hdlc, 1); + 101e: 61 e0 ldi r22, 0x01 ; 1 + 1020: 70 e0 ldi r23, 0x00 ; 0 + 1022: ce 01 movw r24, r28 + 1024: 01 96 adiw r24, 0x01 ; 1 + 1026: 0e 94 a8 01 call 0x350 ; 0x350 + if (err == ERR_FRAME_TIME_OUT){ + 102a: 05 96 adiw r24, 0x05 ; 5 + 102c: 89 f4 brne .+34 ; 0x1050 + hdlc_get_raw_frame(&hdlc, buffer_data, sizeof buffer_data); + 102e: 48 e4 ldi r20, 0x48 ; 72 + 1030: 50 e0 ldi r21, 0x00 ; 0 + 1032: be 01 movw r22, r28 + 1034: 68 58 subi r22, 0x88 ; 136 + 1036: 7f 4f sbci r23, 0xFF ; 255 + 1038: ce 01 movw r24, r28 + 103a: 01 96 adiw r24, 0x01 ; 1 + 103c: 0e 94 91 00 call 0x122 ; 0x122 + UART_send(buffer_data, sizeof buffer_data); + 1040: 68 e4 ldi r22, 0x48 ; 72 + 1042: 70 e0 ldi r23, 0x00 ; 0 + 1044: ce 01 movw r24, r28 + 1046: 88 58 subi r24, 0x88 ; 136 + 1048: 9f 4f sbci r25, 0xFF ; 255 + 104a: 0e 94 aa 0a call 0x1554 ; 0x1554 + 104e: e0 cf rjmp .-64 ; 0x1010 + continue; + } + + err = hdlc_decode_recived_raw_data(&hdlc, buffer_recive_data, sizeof buffer_recive_data, data_recive, &len_data_recive); + 1050: 8e 01 movw r16, r28 + 1052: 13 95 inc r17 + 1054: 9e 01 movw r18, r28 + 1056: 20 54 subi r18, 0x40 ; 64 + 1058: 3f 4f sbci r19, 0xFF ; 255 + 105a: 40 e9 ldi r20, 0x90 ; 144 + 105c: 50 e0 ldi r21, 0x00 ; 0 + 105e: be 01 movw r22, r28 + 1060: 60 5a subi r22, 0xA0 ; 160 + 1062: 7e 4f sbci r23, 0xFE ; 254 + 1064: ce 01 movw r24, r28 + 1066: 01 96 adiw r24, 0x01 ; 1 + 1068: 0e 94 07 01 call 0x20e ; 0x20e + 106c: 8c 01 movw r16, r24 + if (err < 0){ + 106e: 99 23 and r25, r25 + 1070: 9c f4 brge .+38 ; 0x1098 + if (err == ERR_INVALID_SEQ_NUMBER_FRAME){ + 1072: 06 96 adiw r24, 0x06 ; 6 + 1074: b1 f4 brne .+44 ; 0x10a2 + uint8_t* buffer_rej[10]; + hdlc_get_raw_frame(&hdlc, buffer_rej, sizeof buffer_rej); + 1076: 44 e1 ldi r20, 0x14 ; 20 + 1078: 50 e0 ldi r21, 0x00 ; 0 + 107a: be 01 movw r22, r28 + 107c: 60 51 subi r22, 0x10 ; 16 + 107e: 7e 4f sbci r23, 0xFE ; 254 + 1080: ce 01 movw r24, r28 + 1082: 01 96 adiw r24, 0x01 ; 1 + 1084: 0e 94 91 00 call 0x122 ; 0x122 + UART_send(buffer_rej, sizeof buffer_rej); + 1088: 64 e1 ldi r22, 0x14 ; 20 + 108a: 70 e0 ldi r23, 0x00 ; 0 + 108c: ce 01 movw r24, r28 + 108e: 80 51 subi r24, 0x10 ; 16 + 1090: 9e 4f sbci r25, 0xFE ; 254 + 1092: 0e 94 aa 0a call 0x1554 ; 0x1554 + 1096: 05 c0 rjmp .+10 ; 0x10a2 + return err; + } + return err; + } + + if (hdlc.state == SEND){ + 1098: 89 81 ldd r24, Y+1 ; 0x01 + UART_send(buffer_data, sizeof buffer_data); + + bool flag_recive = false; + uint8_t data_recive[64]; + size_t len_data_recive; + while (!flag_recive){ + 109a: 86 30 cpi r24, 0x06 ; 6 + 109c: 09 f0 breq .+2 ; 0x10a0 + 109e: b8 cf rjmp .-144 ; 0x1010 + 10a0: 03 c0 rjmp .+6 ; 0x10a8 + hdlc_get_raw_frame(&hdlc, buffer_data, sizeof buffer_data); + UART_send(buffer_data, sizeof buffer_data); + continue; + } + + err = hdlc_decode_recived_raw_data(&hdlc, buffer_recive_data, sizeof buffer_recive_data, data_recive, &len_data_recive); + 10a2: 80 2f mov r24, r16 + 10a4: 91 2f mov r25, r17 + 10a6: 52 c0 rjmp .+164 ; 0x114c + flag_recive = true; + } + } + + struct message resp; + protocol_decode(data_recive, len_data_recive, &resp); + 10a8: c0 50 subi r28, 0x00 ; 0 + 10aa: df 4f sbci r29, 0xFF ; 255 + 10ac: 68 81 ld r22, Y + 10ae: 79 81 ldd r23, Y+1 ; 0x01 + 10b0: c0 50 subi r28, 0x00 ; 0 + 10b2: d1 40 sbci r29, 0x01 ; 1 + 10b4: ae 01 movw r20, r28 + 10b6: 4e 5f subi r20, 0xFE ; 254 + 10b8: 5e 4f sbci r21, 0xFE ; 254 + 10ba: ce 01 movw r24, r28 + 10bc: 80 54 subi r24, 0x40 ; 64 + 10be: 9f 4f sbci r25, 0xFF ; 255 + 10c0: 0e 94 be 08 call 0x117c ; 0x117c + + struct DisplayData disp; + disp.value1 = resp.numbers[0]; + 10c4: ce 5f subi r28, 0xFE ; 254 + 10c6: de 4f sbci r29, 0xFE ; 254 + 10c8: 88 81 ld r24, Y + 10ca: 99 81 ldd r25, Y+1 ; 0x01 + 10cc: aa 81 ldd r26, Y+2 ; 0x02 + 10ce: bb 81 ldd r27, Y+3 ; 0x03 + 10d0: c2 50 subi r28, 0x02 ; 2 + 10d2: d1 40 sbci r29, 0x01 ; 1 + 10d4: cc 5a subi r28, 0xAC ; 172 + 10d6: de 4f sbci r29, 0xFE ; 254 + 10d8: 88 83 st Y, r24 + 10da: 99 83 std Y+1, r25 ; 0x01 + 10dc: aa 83 std Y+2, r26 ; 0x02 + 10de: bb 83 std Y+3, r27 ; 0x03 + 10e0: c4 55 subi r28, 0x54 ; 84 + 10e2: d1 40 sbci r29, 0x01 ; 1 + disp.value2 = resp.numbers[1]; + 10e4: ca 5f subi r28, 0xFA ; 250 + 10e6: de 4f sbci r29, 0xFE ; 254 + 10e8: 88 81 ld r24, Y + 10ea: 99 81 ldd r25, Y+1 ; 0x01 + 10ec: aa 81 ldd r26, Y+2 ; 0x02 + 10ee: bb 81 ldd r27, Y+3 ; 0x03 + 10f0: c6 50 subi r28, 0x06 ; 6 + 10f2: d1 40 sbci r29, 0x01 ; 1 + 10f4: c8 5a subi r28, 0xA8 ; 168 + 10f6: de 4f sbci r29, 0xFE ; 254 + 10f8: 88 83 st Y, r24 + 10fa: 99 83 std Y+1, r25 ; 0x01 + 10fc: aa 83 std Y+2, r26 ; 0x02 + 10fe: bb 83 std Y+3, r27 ; 0x03 + 1100: c8 55 subi r28, 0x58 ; 88 + 1102: d1 40 sbci r29, 0x01 ; 1 + disp.value3 = resp.numbers[2]; + 1104: c6 5f subi r28, 0xF6 ; 246 + 1106: de 4f sbci r29, 0xFE ; 254 + 1108: 88 81 ld r24, Y + 110a: 99 81 ldd r25, Y+1 ; 0x01 + 110c: aa 81 ldd r26, Y+2 ; 0x02 + 110e: bb 81 ldd r27, Y+3 ; 0x03 + 1110: ca 50 subi r28, 0x0A ; 10 + 1112: d1 40 sbci r29, 0x01 ; 1 + 1114: c4 5a subi r28, 0xA4 ; 164 + 1116: de 4f sbci r29, 0xFE ; 254 + 1118: 88 83 st Y, r24 + 111a: 99 83 std Y+1, r25 ; 0x01 + 111c: aa 83 std Y+2, r26 ; 0x02 + 111e: bb 83 std Y+3, r27 ; 0x03 + 1120: cc 55 subi r28, 0x5C ; 92 + 1122: d1 40 sbci r29, 0x01 ; 1 + //disp.topLine = *resp.str; + strncpy(disp.topLine, resp.str, sizeof(disp.topLine) - 1); + 1124: c0 5f subi r28, 0xF0 ; 240 + 1126: de 4f sbci r29, 0xFE ; 254 + 1128: 68 81 ld r22, Y + 112a: 79 81 ldd r23, Y+1 ; 0x01 + 112c: c0 51 subi r28, 0x10 ; 16 + 112e: d1 40 sbci r29, 0x01 ; 1 + 1130: 4f e3 ldi r20, 0x3F ; 63 + 1132: 50 e0 ldi r21, 0x00 ; 0 + 1134: ce 01 movw r24, r28 + 1136: 8c 5e subi r24, 0xEC ; 236 + 1138: 9e 4f sbci r25, 0xFE ; 254 + 113a: 0e 94 8a 0b call 0x1714 ; 0x1714 + + printLcd(&disp); + 113e: ce 01 movw r24, r28 + 1140: 8c 5e subi r24, 0xEC ; 236 + 1142: 9e 4f sbci r25, 0xFE ; 254 + 1144: 0e 94 08 06 call 0xc10 ; 0xc10 + + return 0; + 1148: 80 e0 ldi r24, 0x00 ; 0 + 114a: 90 e0 ldi r25, 0x00 ; 0 + 114c: cd 5f subi r28, 0xFD ; 253 + 114e: dd 4f sbci r29, 0xFD ; 253 + 1150: 0f b6 in r0, 0x3f ; 63 + 1152: f8 94 cli + 1154: de bf out 0x3e, r29 ; 62 + 1156: 0f be out 0x3f, r0 ; 63 + 1158: cd bf out 0x3d, r28 ; 61 + 115a: df 91 pop r29 + 115c: cf 91 pop r28 + 115e: 1f 91 pop r17 + 1160: 0f 91 pop r16 + 1162: ff 90 pop r15 + 1164: ef 90 pop r14 + 1166: df 90 pop r13 + 1168: cf 90 pop r12 + 116a: bf 90 pop r11 + 116c: af 90 pop r10 + 116e: 9f 90 pop r9 + 1170: 8f 90 pop r8 + 1172: 7f 90 pop r7 + 1174: 6f 90 pop r6 + 1176: 5f 90 pop r5 + 1178: 4f 90 pop r4 + 117a: 08 95 ret + +0000117c : +#include "protocol.h" + +void protocol_decode(uint8_t encode_message[], size_t len_encode_message, struct message* decode_message){ + 117c: 8f 92 push r8 + 117e: 9f 92 push r9 + 1180: af 92 push r10 + 1182: bf 92 push r11 + 1184: cf 92 push r12 + 1186: df 92 push r13 + 1188: ef 92 push r14 + 118a: ff 92 push r15 + 118c: 0f 93 push r16 + 118e: 1f 93 push r17 + 1190: cf 93 push r28 + 1192: df 93 push r29 + 1194: cd b7 in r28, 0x3d ; 61 + 1196: de b7 in r29, 0x3e ; 62 + 1198: c0 54 subi r28, 0x40 ; 64 + 119a: d1 09 sbc r29, r1 + 119c: 0f b6 in r0, 0x3f ; 63 + 119e: f8 94 cli + 11a0: de bf out 0x3e, r29 ; 62 + 11a2: 0f be out 0x3f, r0 ; 63 + 11a4: cd bf out 0x3d, r28 ; 61 + 11a6: 4b 01 movw r8, r22 + int count_number = 0; + for(int i = 0; i < len_encode_message; i++){ + 11a8: 67 2b or r22, r23 + 11aa: 09 f4 brne .+2 ; 0x11ae + 11ac: 6c c0 rjmp .+216 ; 0x1286 + 11ae: 20 e0 ldi r18, 0x00 ; 0 + 11b0: 30 e0 ldi r19, 0x00 ; 0 + 11b2: 60 e0 ldi r22, 0x00 ; 0 + 11b4: 70 e0 ldi r23, 0x00 ; 0 + 11b6: a1 2c mov r10, r1 + 11b8: b1 2c mov r11, r1 + 11ba: 6e 01 movw r12, r28 + 11bc: e5 e0 ldi r30, 0x05 ; 5 + 11be: ce 0e add r12, r30 + 11c0: d1 1c adc r13, r1 + 11c2: fe 01 movw r30, r28 + 11c4: 31 96 adiw r30, 0x01 ; 1 + 11c6: 7f 01 movw r14, r30 + if (encode_message[i] == FLAG_NUMBER){ + 11c8: fc 01 movw r30, r24 + 11ca: e2 0f add r30, r18 + 11cc: f3 1f adc r31, r19 + 11ce: 20 81 ld r18, Z + 11d0: 21 11 cpse r18, r1 + 11d2: 27 c0 rjmp .+78 ; 0x1222 + 11d4: db 01 movw r26, r22 + 11d6: 11 96 adiw r26, 0x01 ; 1 + 11d8: a8 0f add r26, r24 + 11da: b9 1f adc r27, r25 + 11dc: fe 01 movw r30, r28 + 11de: 31 96 adiw r30, 0x01 ; 1 + union convert_float sample; + for (int z = 0; z < sizeof sample.buf; z++){ + i++; + sample.buf[z] = encode_message[i]; + 11e0: 2d 91 ld r18, X+ + 11e2: 21 93 st Z+, r18 +void protocol_decode(uint8_t encode_message[], size_t len_encode_message, struct message* decode_message){ + int count_number = 0; + for(int i = 0; i < len_encode_message; i++){ + if (encode_message[i] == FLAG_NUMBER){ + union convert_float sample; + for (int z = 0; z < sizeof sample.buf; z++){ + 11e4: ec 15 cp r30, r12 + 11e6: fd 05 cpc r31, r13 + 11e8: d9 f7 brne .-10 ; 0x11e0 + 11ea: 6c 5f subi r22, 0xFC ; 252 + 11ec: 7f 4f sbci r23, 0xFF ; 255 + i++; + sample.buf[z] = encode_message[i]; + } + decode_message->numbers[count_number++] = sample.fVal; + 11ee: f5 01 movw r30, r10 + 11f0: ee 0f add r30, r30 + 11f2: ff 1f adc r31, r31 + 11f4: ee 0f add r30, r30 + 11f6: ff 1f adc r31, r31 + 11f8: e4 0f add r30, r20 + 11fa: f5 1f adc r31, r21 + 11fc: 09 81 ldd r16, Y+1 ; 0x01 + 11fe: 1a 81 ldd r17, Y+2 ; 0x02 + 1200: 2b 81 ldd r18, Y+3 ; 0x03 + 1202: 3c 81 ldd r19, Y+4 ; 0x04 + 1204: 00 83 st Z, r16 + 1206: 11 83 std Z+1, r17 ; 0x01 + 1208: 22 83 std Z+2, r18 ; 0x02 + 120a: 33 83 std Z+3, r19 ; 0x03 + decode_message->len_numbers++; + 120c: fa 01 movw r30, r20 + 120e: 24 85 ldd r18, Z+12 ; 0x0c + 1210: 35 85 ldd r19, Z+13 ; 0x0d + 1212: 2f 5f subi r18, 0xFF ; 255 + 1214: 3f 4f sbci r19, 0xFF ; 255 + 1216: 35 87 std Z+13, r19 ; 0x0d + 1218: 24 87 std Z+12, r18 ; 0x0c + union convert_float sample; + for (int z = 0; z < sizeof sample.buf; z++){ + i++; + sample.buf[z] = encode_message[i]; + } + decode_message->numbers[count_number++] = sample.fVal; + 121a: 95 01 movw r18, r10 + 121c: 2f 5f subi r18, 0xFF ; 255 + 121e: 3f 4f sbci r19, 0xFF ; 255 + 1220: 59 01 movw r10, r18 + decode_message->len_numbers++; + } + + + if (encode_message[i] == FLAG_WORD){ + 1222: fc 01 movw r30, r24 + 1224: e6 0f add r30, r22 + 1226: f7 1f adc r31, r23 + 1228: 20 81 ld r18, Z + 122a: 21 30 cpi r18, 0x01 ; 1 + 122c: 21 f5 brne .+72 ; 0x1276 + int count_word = 0; + i++; + 122e: 9b 01 movw r18, r22 + 1230: 2f 5f subi r18, 0xFF ; 255 + 1232: 3f 4f sbci r19, 0xFF ; 255 + union convert_char sample; + for (int z = 0; z < encode_message[i]; z++){ + 1234: fc 01 movw r30, r24 + 1236: e2 0f add r30, r18 + 1238: f3 1f adc r31, r19 + 123a: e0 81 ld r30, Z + 123c: ee 23 and r30, r30 + 123e: 99 f0 breq .+38 ; 0x1266 + 1240: 6e 5f subi r22, 0xFE ; 254 + 1242: 7f 4f sbci r23, 0xFF ; 255 + 1244: dc 01 movw r26, r24 + 1246: a6 0f add r26, r22 + 1248: b7 1f adc r27, r23 + 124a: f7 01 movw r30, r14 + 124c: b9 01 movw r22, r18 + i++; + 124e: 6f 5f subi r22, 0xFF ; 255 + 1250: 7f 4f sbci r23, 0xFF ; 255 + sample.buf[z] = encode_message[i]; + 1252: 2d 91 ld r18, X+ + 1254: 21 93 st Z+, r18 + + if (encode_message[i] == FLAG_WORD){ + int count_word = 0; + i++; + union convert_char sample; + for (int z = 0; z < encode_message[i]; z++){ + 1256: 30 e0 ldi r19, 0x00 ; 0 + 1258: 8f 01 movw r16, r30 + 125a: 0e 19 sub r16, r14 + 125c: 1f 09 sbc r17, r15 + 125e: 02 17 cp r16, r18 + 1260: 13 07 cpc r17, r19 + 1262: ac f3 brlt .-22 ; 0x124e + 1264: 01 c0 rjmp .+2 ; 0x1268 + } + + + if (encode_message[i] == FLAG_WORD){ + int count_word = 0; + i++; + 1266: b9 01 movw r22, r18 + union convert_char sample; + for (int z = 0; z < encode_message[i]; z++){ + i++; + sample.buf[z] = encode_message[i]; + } + decode_message->str = sample.cVal; + 1268: 29 81 ldd r18, Y+1 ; 0x01 + 126a: 3a 81 ldd r19, Y+2 ; 0x02 + 126c: fa 01 movw r30, r20 + 126e: 37 87 std Z+15, r19 ; 0x0f + 1270: 26 87 std Z+14, r18 ; 0x0e + decode_message->len_str = count_word; + 1272: 11 8a std Z+17, r1 ; 0x11 + 1274: 10 8a std Z+16, r1 ; 0x10 +#include "protocol.h" + +void protocol_decode(uint8_t encode_message[], size_t len_encode_message, struct message* decode_message){ + int count_number = 0; + for(int i = 0; i < len_encode_message; i++){ + 1276: 6f 5f subi r22, 0xFF ; 255 + 1278: 7f 4f sbci r23, 0xFF ; 255 + 127a: 9b 01 movw r18, r22 + 127c: 68 15 cp r22, r8 + 127e: 79 05 cpc r23, r9 + 1280: 08 f4 brcc .+2 ; 0x1284 + 1282: a2 cf rjmp .-188 ; 0x11c8 + 1284: 02 c0 rjmp .+4 ; 0x128a +#include "protocol.h" + +void protocol_decode(uint8_t encode_message[], size_t len_encode_message, struct message* decode_message){ + int count_number = 0; + 1286: a1 2c mov r10, r1 + 1288: b1 2c mov r11, r1 + } + decode_message->str = sample.cVal; + decode_message->len_str = count_word; + } + } + decode_message->len_numbers = count_number; + 128a: fa 01 movw r30, r20 + 128c: b5 86 std Z+13, r11 ; 0x0d + 128e: a4 86 std Z+12, r10 ; 0x0c +} + 1290: c0 5c subi r28, 0xC0 ; 192 + 1292: df 4f sbci r29, 0xFF ; 255 + 1294: 0f b6 in r0, 0x3f ; 63 + 1296: f8 94 cli + 1298: de bf out 0x3e, r29 ; 62 + 129a: 0f be out 0x3f, r0 ; 63 + 129c: cd bf out 0x3d, r28 ; 61 + 129e: df 91 pop r29 + 12a0: cf 91 pop r28 + 12a2: 1f 91 pop r17 + 12a4: 0f 91 pop r16 + 12a6: ff 90 pop r15 + 12a8: ef 90 pop r14 + 12aa: df 90 pop r13 + 12ac: cf 90 pop r12 + 12ae: bf 90 pop r11 + 12b0: af 90 pop r10 + 12b2: 9f 90 pop r9 + 12b4: 8f 90 pop r8 + 12b6: 08 95 ret + +000012b8 : + +void protocol_encode(struct message message, uint8_t encode_message[], size_t* len_encode_message){ + 12b8: 4f 92 push r4 + 12ba: 5f 92 push r5 + 12bc: 6f 92 push r6 + 12be: 7f 92 push r7 + 12c0: 8f 92 push r8 + 12c2: 9f 92 push r9 + 12c4: af 92 push r10 + 12c6: bf 92 push r11 + 12c8: cf 92 push r12 + 12ca: df 92 push r13 + 12cc: ef 92 push r14 + 12ce: ff 92 push r15 + 12d0: 0f 93 push r16 + 12d2: 1f 93 push r17 + 12d4: cf 93 push r28 + 12d6: df 93 push r29 + 12d8: cd b7 in r28, 0x3d ; 61 + 12da: de b7 in r29, 0x3e ; 62 + 12dc: c2 55 subi r28, 0x52 ; 82 + 12de: d1 09 sbc r29, r1 + 12e0: 0f b6 in r0, 0x3f ; 63 + 12e2: f8 94 cli + 12e4: de bf out 0x3e, r29 ; 62 + 12e6: 0f be out 0x3f, r0 ; 63 + 12e8: cd bf out 0x3d, r28 ; 61 + 12ea: 22 96 adiw r28, 0x02 ; 2 + 12ec: 8f ae std Y+63, r8 ; 0x3f + 12ee: 22 97 sbiw r28, 0x02 ; 2 + 12f0: 23 96 adiw r28, 0x03 ; 3 + 12f2: 9f ae std Y+63, r9 ; 0x3f + 12f4: 23 97 sbiw r28, 0x03 ; 3 + 12f6: 24 96 adiw r28, 0x04 ; 4 + 12f8: af ae std Y+63, r10 ; 0x3f + 12fa: 24 97 sbiw r28, 0x04 ; 4 + 12fc: 25 96 adiw r28, 0x05 ; 5 + 12fe: bf ae std Y+63, r11 ; 0x3f + 1300: 25 97 sbiw r28, 0x05 ; 5 + 1302: 26 96 adiw r28, 0x06 ; 6 + 1304: cf ae std Y+63, r12 ; 0x3f + 1306: 26 97 sbiw r28, 0x06 ; 6 + 1308: 27 96 adiw r28, 0x07 ; 7 + 130a: df ae std Y+63, r13 ; 0x3f + 130c: 27 97 sbiw r28, 0x07 ; 7 + 130e: 28 96 adiw r28, 0x08 ; 8 + 1310: ef ae std Y+63, r14 ; 0x3f + 1312: 28 97 sbiw r28, 0x08 ; 8 + 1314: 29 96 adiw r28, 0x09 ; 9 + 1316: ff ae std Y+63, r15 ; 0x3f + 1318: 29 97 sbiw r28, 0x09 ; 9 + 131a: 2a 96 adiw r28, 0x0a ; 10 + 131c: 0f af std Y+63, r16 ; 0x3f + 131e: 2a 97 sbiw r28, 0x0a ; 10 + 1320: 2b 96 adiw r28, 0x0b ; 11 + 1322: 1f af std Y+63, r17 ; 0x3f + 1324: 2b 97 sbiw r28, 0x0b ; 11 + 1326: 2c 96 adiw r28, 0x0c ; 12 + 1328: 2f af std Y+63, r18 ; 0x3f + 132a: 2c 97 sbiw r28, 0x0c ; 12 + 132c: 2d 96 adiw r28, 0x0d ; 13 + 132e: 3f af std Y+63, r19 ; 0x3f + 1330: 2d 97 sbiw r28, 0x0d ; 13 + 1332: 2e 96 adiw r28, 0x0e ; 14 + 1334: 4f af std Y+63, r20 ; 0x3f + 1336: 2e 97 sbiw r28, 0x0e ; 14 + 1338: 2f 96 adiw r28, 0x0f ; 15 + 133a: 5f af std Y+63, r21 ; 0x3f + 133c: 2f 97 sbiw r28, 0x0f ; 15 + 133e: 60 96 adiw r28, 0x10 ; 16 + 1340: 6f af std Y+63, r22 ; 0x3f + 1342: 60 97 sbiw r28, 0x10 ; 16 + 1344: 61 96 adiw r28, 0x11 ; 17 + 1346: 7f af std Y+63, r23 ; 0x3f + 1348: 61 97 sbiw r28, 0x11 ; 17 + 134a: 62 96 adiw r28, 0x12 ; 18 + 134c: 8f af std Y+63, r24 ; 0x3f + 134e: 62 97 sbiw r28, 0x12 ; 18 + 1350: 63 96 adiw r28, 0x13 ; 19 + 1352: 9f af std Y+63, r25 ; 0x3f + 1354: 63 97 sbiw r28, 0x13 ; 19 + 1356: a7 96 adiw r28, 0x27 ; 39 + 1358: 0e ad ldd r16, Y+62 ; 0x3e + 135a: 1f ad ldd r17, Y+63 ; 0x3f + 135c: a7 97 sbiw r28, 0x27 ; 39 + 135e: 2f 96 adiw r28, 0x0f ; 15 + 1360: ce ac ldd r12, Y+62 ; 0x3e + 1362: df ac ldd r13, Y+63 ; 0x3f + 1364: 2f 97 sbiw r28, 0x0f ; 15 + 1366: 63 96 adiw r28, 0x13 ; 19 + 1368: 6e ad ldd r22, Y+62 ; 0x3e + 136a: 7f ad ldd r23, Y+63 ; 0x3f + 136c: 63 97 sbiw r28, 0x13 ; 19 + size_t count = 0; + if (message.len_numbers > 0){ + 136e: c1 14 cp r12, r1 + 1370: d1 04 cpc r13, r1 + 1372: 09 f4 brne .+2 ; 0x1376 + 1374: 66 c0 rjmp .+204 ; 0x1442 + 1376: 78 01 movw r14, r16 + 1378: ce 01 movw r24, r28 + 137a: 8f 5b subi r24, 0xBF ; 191 + 137c: 9f 4f sbci r25, 0xFF ; 255 + 137e: 56 01 movw r10, r12 + 1380: aa 0c add r10, r10 + 1382: bb 1c adc r11, r11 + 1384: aa 0c add r10, r10 + 1386: bb 1c adc r11, r11 + 1388: a8 0e add r10, r24 + 138a: b9 1e adc r11, r25 + 138c: ae 01 movw r20, r28 + 138e: 4b 5f subi r20, 0xFB ; 251 + 1390: 5f 4f sbci r21, 0xFF ; 255 + for (int i = 0; i < message.len_numbers; i++){ + encode_message[count++] = FLAG_NUMBER; + 1392: f7 01 movw r30, r14 + 1394: 11 92 st Z+, r1 + union convert_float sample; + sample.fVal = message.numbers[i]; + 1396: dc 01 movw r26, r24 + 1398: 4d 90 ld r4, X+ + 139a: 5d 90 ld r5, X+ + 139c: 6d 90 ld r6, X+ + 139e: 7d 90 ld r7, X+ + 13a0: cd 01 movw r24, r26 + 13a2: 49 82 std Y+1, r4 ; 0x01 + 13a4: 5a 82 std Y+2, r5 ; 0x02 + 13a6: 6b 82 std Y+3, r6 ; 0x03 + 13a8: 7c 82 std Y+4, r7 ; 0x04 + 13aa: de 01 movw r26, r28 + 13ac: 11 96 adiw r26, 0x01 ; 1 + for (int z = 0; z < sizeof sample.buf; z++){ + encode_message[count++] = sample.buf[z]; + 13ae: 3d 91 ld r19, X+ + 13b0: 31 93 st Z+, r19 + if (message.len_numbers > 0){ + for (int i = 0; i < message.len_numbers; i++){ + encode_message[count++] = FLAG_NUMBER; + union convert_float sample; + sample.fVal = message.numbers[i]; + for (int z = 0; z < sizeof sample.buf; z++){ + 13b2: a4 17 cp r26, r20 + 13b4: b5 07 cpc r27, r21 + 13b6: d9 f7 brne .-10 ; 0x13ae + 13b8: b5 e0 ldi r27, 0x05 ; 5 + 13ba: eb 0e add r14, r27 + 13bc: f1 1c adc r15, r1 +} + +void protocol_encode(struct message message, uint8_t encode_message[], size_t* len_encode_message){ + size_t count = 0; + if (message.len_numbers > 0){ + for (int i = 0; i < message.len_numbers; i++){ + 13be: 8a 15 cp r24, r10 + 13c0: 9b 05 cpc r25, r11 + 13c2: 39 f7 brne .-50 ; 0x1392 + 13c4: 96 01 movw r18, r12 + 13c6: 22 0f add r18, r18 + 13c8: 33 1f adc r19, r19 + 13ca: 22 0f add r18, r18 + 13cc: 33 1f adc r19, r19 + 13ce: 2c 0d add r18, r12 + 13d0: 3d 1d adc r19, r13 + encode_message[count++] = sample.buf[z]; + } + } + } + + if (message.len_str > 0){ + 13d2: 61 15 cp r22, r1 + 13d4: 71 05 cpc r23, r1 + 13d6: 09 f1 breq .+66 ; 0x141a + encode_message[count++] = FLAG_WORD; + 13d8: d8 01 movw r26, r16 + 13da: a2 0f add r26, r18 + 13dc: b3 1f adc r27, r19 + 13de: 81 e0 ldi r24, 0x01 ; 1 + 13e0: 8c 93 st X, r24 + encode_message[count++] = message.len_str; + 13e2: d9 01 movw r26, r18 + 13e4: 11 96 adiw r26, 0x01 ; 1 + 13e6: a0 0f add r26, r16 + 13e8: b1 1f adc r27, r17 + 13ea: 2e 5f subi r18, 0xFE ; 254 + 13ec: 3f 4f sbci r19, 0xFF ; 255 + 13ee: 6c 93 st X, r22 + union convert_char sample; + sample.cVal = message.str; + 13f0: 61 96 adiw r28, 0x11 ; 17 + 13f2: 8e ad ldd r24, Y+62 ; 0x3e + 13f4: 9f ad ldd r25, Y+63 ; 0x3f + 13f6: 61 97 sbiw r28, 0x11 ; 17 + 13f8: 9a 83 std Y+2, r25 ; 0x02 + 13fa: 89 83 std Y+1, r24 ; 0x01 + 13fc: de 01 movw r26, r28 + 13fe: 11 96 adiw r26, 0x01 ; 1 + 1400: f8 01 movw r30, r16 + 1402: e2 0f add r30, r18 + 1404: f3 1f adc r31, r19 + } + } + + if (message.len_str > 0){ + encode_message[count++] = FLAG_WORD; + encode_message[count++] = message.len_str; + 1406: 80 e0 ldi r24, 0x00 ; 0 + 1408: 90 e0 ldi r25, 0x00 ; 0 + union convert_char sample; + sample.cVal = message.str; + for (int i = 0; i < message.len_str; i++){ + encode_message[count++] = sample.buf[i]; + 140a: 2f 5f subi r18, 0xFF ; 255 + 140c: 3f 4f sbci r19, 0xFF ; 255 + 140e: 4d 91 ld r20, X+ + 1410: 41 93 st Z+, r20 + if (message.len_str > 0){ + encode_message[count++] = FLAG_WORD; + encode_message[count++] = message.len_str; + union convert_char sample; + sample.cVal = message.str; + for (int i = 0; i < message.len_str; i++){ + 1412: 01 96 adiw r24, 0x01 ; 1 + 1414: 86 17 cp r24, r22 + 1416: 97 07 cpc r25, r23 + 1418: c0 f3 brcs .-16 ; 0x140a + encode_message[count++] = sample.buf[i]; + } + } + + *len_encode_message = count; + 141a: a9 96 adiw r28, 0x29 ; 41 + 141c: ee ad ldd r30, Y+62 ; 0x3e + 141e: ff ad ldd r31, Y+63 ; 0x3f + 1420: a9 97 sbiw r28, 0x29 ; 41 + 1422: 31 83 std Z+1, r19 ; 0x01 + 1424: 20 83 st Z, r18 + 1426: 13 c0 rjmp .+38 ; 0x144e + } + } + } + + if (message.len_str > 0){ + encode_message[count++] = FLAG_WORD; + 1428: 81 e0 ldi r24, 0x01 ; 1 + 142a: f8 01 movw r30, r16 + 142c: 80 83 st Z, r24 + encode_message[count++] = message.len_str; + 142e: 61 83 std Z+1, r22 ; 0x01 + union convert_char sample; + sample.cVal = message.str; + 1430: 61 96 adiw r28, 0x11 ; 17 + 1432: 8e ad ldd r24, Y+62 ; 0x3e + 1434: 9f ad ldd r25, Y+63 ; 0x3f + 1436: 61 97 sbiw r28, 0x11 ; 17 + 1438: 9a 83 std Y+2, r25 ; 0x02 + 143a: 89 83 std Y+1, r24 ; 0x01 + } + } + + if (message.len_str > 0){ + encode_message[count++] = FLAG_WORD; + encode_message[count++] = message.len_str; + 143c: 22 e0 ldi r18, 0x02 ; 2 + 143e: 30 e0 ldi r19, 0x00 ; 0 + 1440: dd cf rjmp .-70 ; 0x13fc + encode_message[count++] = sample.buf[z]; + } + } + } + + if (message.len_str > 0){ + 1442: 61 15 cp r22, r1 + 1444: 71 05 cpc r23, r1 + 1446: 81 f7 brne .-32 ; 0x1428 + } + decode_message->len_numbers = count_number; +} + +void protocol_encode(struct message message, uint8_t encode_message[], size_t* len_encode_message){ + size_t count = 0; + 1448: 20 e0 ldi r18, 0x00 ; 0 + 144a: 30 e0 ldi r19, 0x00 ; 0 + 144c: e6 cf rjmp .-52 ; 0x141a + encode_message[count++] = sample.buf[i]; + } + } + + *len_encode_message = count; + 144e: ce 5a subi r28, 0xAE ; 174 + 1450: df 4f sbci r29, 0xFF ; 255 + 1452: 0f b6 in r0, 0x3f ; 63 + 1454: f8 94 cli + 1456: de bf out 0x3e, r29 ; 62 + 1458: 0f be out 0x3f, r0 ; 63 + 145a: cd bf out 0x3d, r28 ; 61 + 145c: df 91 pop r29 + 145e: cf 91 pop r28 + 1460: 1f 91 pop r17 + 1462: 0f 91 pop r16 + 1464: ff 90 pop r15 + 1466: ef 90 pop r14 + 1468: df 90 pop r13 + 146a: cf 90 pop r12 + 146c: bf 90 pop r11 + 146e: af 90 pop r10 + 1470: 9f 90 pop r9 + 1472: 8f 90 pop r8 + 1474: 7f 90 pop r7 + 1476: 6f 90 pop r6 + 1478: 5f 90 pop r5 + 147a: 4f 90 pop r4 + 147c: 08 95 ret + +0000147e : +void initialize_buffer(struct circular_buffer* cb) { + cb->buf_head = 0; + cb->buf_tail = 0; +} +// Проверка, пустой ли буфер +int buffer_empty(const struct circular_buffer* cb) { + 147e: fc 01 movw r30, r24 + return cb->buf_head == cb->buf_tail; + 1480: 81 e0 ldi r24, 0x01 ; 1 + 1482: 90 e0 ldi r25, 0x00 ; 0 + 1484: 30 a1 ldd r19, Z+32 ; 0x20 + 1486: 21 a1 ldd r18, Z+33 ; 0x21 + 1488: 32 17 cp r19, r18 + 148a: 11 f0 breq .+4 ; 0x1490 + 148c: 80 e0 ldi r24, 0x00 ; 0 + 148e: 90 e0 ldi r25, 0x00 ; 0 +} + 1490: 08 95 ret + +00001492 : +// Проверка, заполнен ли буфер +int buffer_full(const struct circular_buffer* cb) { + return (cb->buf_tail + 1) % BUFFER_SIZE == cb->buf_head; //проверяем следующее число, если оно будет совпадать с индексом головы то будет false, при совпадении вывод true + 1492: fc 01 movw r30, r24 + 1494: 21 a1 ldd r18, Z+33 ; 0x21 + 1496: 30 e0 ldi r19, 0x00 ; 0 + 1498: 2f 5f subi r18, 0xFF ; 255 + 149a: 3f 4f sbci r19, 0xFF ; 255 + 149c: 2f 71 andi r18, 0x1F ; 31 + 149e: 30 78 andi r19, 0x80 ; 128 + 14a0: 33 23 and r19, r19 + 14a2: 34 f4 brge .+12 ; 0x14b0 + 14a4: 21 50 subi r18, 0x01 ; 1 + 14a6: 31 09 sbc r19, r1 + 14a8: 20 6e ori r18, 0xE0 ; 224 + 14aa: 3f 6f ori r19, 0xFF ; 255 + 14ac: 2f 5f subi r18, 0xFF ; 255 + 14ae: 3f 4f sbci r19, 0xFF ; 255 + 14b0: fc 01 movw r30, r24 + 14b2: 40 a1 ldd r20, Z+32 ; 0x20 + 14b4: 50 e0 ldi r21, 0x00 ; 0 + 14b6: 81 e0 ldi r24, 0x01 ; 1 + 14b8: 90 e0 ldi r25, 0x00 ; 0 + 14ba: 24 17 cp r18, r20 + 14bc: 35 07 cpc r19, r21 + 14be: 11 f0 breq .+4 ; 0x14c4 + 14c0: 80 e0 ldi r24, 0x00 ; 0 + 14c2: 90 e0 ldi r25, 0x00 ; 0 +} + 14c4: 08 95 ret + +000014c6 : +// Запись в буфер +void write_buffer(struct circular_buffer* cb, int value) { + 14c6: 1f 93 push r17 + 14c8: cf 93 push r28 + 14ca: df 93 push r29 + 14cc: ec 01 movw r28, r24 + 14ce: 16 2f mov r17, r22 + if (buffer_full(cb)) { // проверяем, заполнен ли буфер + 14d0: 0e 94 49 0a call 0x1492 ; 0x1492 + 14d4: 89 2b or r24, r25 + 14d6: 81 f4 brne .+32 ; 0x14f8 + return; + } + cb->buffer[cb->buf_tail] = value;// записываем значение в элемент массива в хвост + 14d8: 89 a1 ldd r24, Y+33 ; 0x21 + 14da: 90 e0 ldi r25, 0x00 ; 0 + 14dc: fe 01 movw r30, r28 + 14de: e8 0f add r30, r24 + 14e0: f9 1f adc r31, r25 + 14e2: 10 83 st Z, r17 + cb->buf_tail = (cb->buf_tail + 1) % BUFFER_SIZE;// присваивается cb->buf_tail, обновляется его значение на следующий индекс в буфере + 14e4: 01 96 adiw r24, 0x01 ; 1 + 14e6: 8f 71 andi r24, 0x1F ; 31 + 14e8: 90 78 andi r25, 0x80 ; 128 + 14ea: 99 23 and r25, r25 + 14ec: 24 f4 brge .+8 ; 0x14f6 + 14ee: 01 97 sbiw r24, 0x01 ; 1 + 14f0: 80 6e ori r24, 0xE0 ; 224 + 14f2: 9f 6f ori r25, 0xFF ; 255 + 14f4: 01 96 adiw r24, 0x01 ; 1 + 14f6: 89 a3 std Y+33, r24 ; 0x21 +} + 14f8: df 91 pop r29 + 14fa: cf 91 pop r28 + 14fc: 1f 91 pop r17 + 14fe: 08 95 ret + +00001500 : +// Чтение элемента +int read_buffer(struct circular_buffer* cb) { + 1500: fc 01 movw r30, r24 + cb->buf_head = 0; + cb->buf_tail = 0; +} +// Проверка, пустой ли буфер +int buffer_empty(const struct circular_buffer* cb) { + return cb->buf_head == cb->buf_tail; + 1502: 20 a1 ldd r18, Z+32 ; 0x20 + cb->buffer[cb->buf_tail] = value;// записываем значение в элемент массива в хвост + cb->buf_tail = (cb->buf_tail + 1) % BUFFER_SIZE;// присваивается cb->buf_tail, обновляется его значение на следующий индекс в буфере +} +// Чтение элемента +int read_buffer(struct circular_buffer* cb) { + if (buffer_empty(cb)) { // проверка на пустоту + 1504: 81 a1 ldd r24, Z+33 ; 0x21 + 1506: 28 17 cp r18, r24 + 1508: b1 f0 breq .+44 ; 0x1536 + return -1;// -1 как индикатор в случае ошибки + } + int value = cb->buffer[cb->buf_head]; // чтение по индексу головы + 150a: 30 e0 ldi r19, 0x00 ; 0 + 150c: df 01 movw r26, r30 + 150e: a2 0f add r26, r18 + 1510: b3 1f adc r27, r19 + 1512: 4c 91 ld r20, X + 1514: 50 e0 ldi r21, 0x00 ; 0 + cb->buf_head = (cb->buf_head + 1) % BUFFER_SIZE; // увеличиваем индекс на 1 + 1516: 2f 5f subi r18, 0xFF ; 255 + 1518: 3f 4f sbci r19, 0xFF ; 255 + 151a: 2f 71 andi r18, 0x1F ; 31 + 151c: 30 78 andi r19, 0x80 ; 128 + 151e: 33 23 and r19, r19 + 1520: 34 f4 brge .+12 ; 0x152e + 1522: 21 50 subi r18, 0x01 ; 1 + 1524: 31 09 sbc r19, r1 + 1526: 20 6e ori r18, 0xE0 ; 224 + 1528: 3f 6f ori r19, 0xFF ; 255 + 152a: 2f 5f subi r18, 0xFF ; 255 + 152c: 3f 4f sbci r19, 0xFF ; 255 + 152e: 20 a3 std Z+32, r18 ; 0x20 + return value; + 1530: 84 2f mov r24, r20 + 1532: 95 2f mov r25, r21 + 1534: 08 95 ret + cb->buf_tail = (cb->buf_tail + 1) % BUFFER_SIZE;// присваивается cb->buf_tail, обновляется его значение на следующий индекс в буфере +} +// Чтение элемента +int read_buffer(struct circular_buffer* cb) { + if (buffer_empty(cb)) { // проверка на пустоту + return -1;// -1 как индикатор в случае ошибки + 1536: 8f ef ldi r24, 0xFF ; 255 + 1538: 9f ef ldi r25, 0xFF ; 255 + } + int value = cb->buffer[cb->buf_head]; // чтение по индексу головы + cb->buf_head = (cb->buf_head + 1) % BUFFER_SIZE; // увеличиваем индекс на 1 + return value; +} + 153a: 08 95 ret + +0000153c : + +struct circular_buffer uartRxBuffer; +struct circular_buffer uartTxBuffer; + +void UART_init(void) { + UCSR0B = (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0) | (1< + UCSR0C = (1 << UCSZ01) | (1 << UCSZ00); + 1542: 86 e0 ldi r24, 0x06 ; 6 + 1544: 80 93 c2 00 sts 0x00C2, r24 ; 0x8000c2 <__DATA_REGION_ORIGIN__+0x62> + UBRR0H = 0; + 1548: 10 92 c5 00 sts 0x00C5, r1 ; 0x8000c5 <__DATA_REGION_ORIGIN__+0x65> + UBRR0L = 103; + 154c: 87 e6 ldi r24, 0x67 ; 103 + 154e: 80 93 c4 00 sts 0x00C4, r24 ; 0x8000c4 <__DATA_REGION_ORIGIN__+0x64> + 1552: 08 95 ret + +00001554 : +} + +void UART_send(uint8_t* data, size_t length) { + 1554: 0f 93 push r16 + 1556: 1f 93 push r17 + 1558: cf 93 push r28 + 155a: df 93 push r29 + for (size_t i = 0; i < length; i++) { + 155c: 61 15 cp r22, r1 + 155e: 71 05 cpc r23, r1 + 1560: 99 f0 breq .+38 ; 0x1588 + 1562: 8c 01 movw r16, r24 + 1564: ec 01 movw r28, r24 + 1566: 06 0f add r16, r22 + 1568: 17 1f adc r17, r23 + if (!buffer_full(&uartTxBuffer)) { + 156a: 8e e6 ldi r24, 0x6E ; 110 + 156c: 93 e0 ldi r25, 0x03 ; 3 + 156e: 0e 94 49 0a call 0x1492 ; 0x1492 + 1572: 89 2b or r24, r25 + 1574: 49 f4 brne .+18 ; 0x1588 + write_buffer(&uartTxBuffer, data[i]); + 1576: 69 91 ld r22, Y+ + 1578: 70 e0 ldi r23, 0x00 ; 0 + 157a: 8e e6 ldi r24, 0x6E ; 110 + 157c: 93 e0 ldi r25, 0x03 ; 3 + 157e: 0e 94 63 0a call 0x14c6 ; 0x14c6 + UBRR0H = 0; + UBRR0L = 103; +} + +void UART_send(uint8_t* data, size_t length) { + for (size_t i = 0; i < length; i++) { + 1582: c0 17 cp r28, r16 + 1584: d1 07 cpc r29, r17 + 1586: 89 f7 brne .-30 ; 0x156a + write_buffer(&uartTxBuffer, data[i]); + } else { + break; // если буфер передачи заполнен, то отправка прерывается + } + } + UCSR0B |= (1 << TXCIE0); // включаем прерывание по завершении передачи + 1588: e1 ec ldi r30, 0xC1 ; 193 + 158a: f0 e0 ldi r31, 0x00 ; 0 + 158c: 80 81 ld r24, Z + 158e: 80 64 ori r24, 0x40 ; 64 + 1590: 80 83 st Z, r24 +} + 1592: df 91 pop r29 + 1594: cf 91 pop r28 + 1596: 1f 91 pop r17 + 1598: 0f 91 pop r16 + 159a: 08 95 ret + +0000159c : + +// Получение данных из буфера +int UART_receive(uint8_t* data, size_t length) { + 159c: 8f 92 push r8 + 159e: 9f 92 push r9 + 15a0: af 92 push r10 + 15a2: bf 92 push r11 + 15a4: cf 92 push r12 + 15a6: df 92 push r13 + 15a8: ef 92 push r14 + 15aa: ff 92 push r15 + 15ac: 0f 93 push r16 + 15ae: 1f 93 push r17 + 15b0: cf 93 push r28 + 15b2: df 93 push r29 + 15b4: 8b 01 movw r16, r22 + 15b6: ec 01 movw r28, r24 + char overflow = 0; // Флаг переполнения, который устанавливается, если превышен размер массива + uint32_t byteCount = 0; // Счетчик байтов, принятых из буфера приема + 15b8: c1 2c mov r12, r1 + 15ba: d1 2c mov r13, r1 + 15bc: 76 01 movw r14, r12 + // Пока буфер приема не пуст и не превышен лимит длины массива, + // функция продолжает читать байты из буфера и сохранять их в массив data. + while (!buffer_empty(&uartRxBuffer) && byteCount < length) { + 15be: 4b 01 movw r8, r22 + 15c0: a1 2c mov r10, r1 + 15c2: b1 2c mov r11, r1 + 15c4: 0a c0 rjmp .+20 ; 0x15da + int reader = read_buffer(&uartRxBuffer); // Прием и запись символа в переменную + 15c6: 8c e4 ldi r24, 0x4C ; 76 + 15c8: 93 e0 ldi r25, 0x03 ; 3 + 15ca: 0e 94 80 0a call 0x1500 ; 0x1500 + data[byteCount] = reader; // Запись в массив с индексом byteCount + 15ce: 89 93 st Y+, r24 + byteCount++; + 15d0: 8f ef ldi r24, 0xFF ; 255 + 15d2: c8 1a sub r12, r24 + 15d4: d8 0a sbc r13, r24 + 15d6: e8 0a sbc r14, r24 + 15d8: f8 0a sbc r15, r24 +int UART_receive(uint8_t* data, size_t length) { + char overflow = 0; // Флаг переполнения, который устанавливается, если превышен размер массива + uint32_t byteCount = 0; // Счетчик байтов, принятых из буфера приема + // Пока буфер приема не пуст и не превышен лимит длины массива, + // функция продолжает читать байты из буфера и сохранять их в массив data. + while (!buffer_empty(&uartRxBuffer) && byteCount < length) { + 15da: 8c e4 ldi r24, 0x4C ; 76 + 15dc: 93 e0 ldi r25, 0x03 ; 3 + 15de: 0e 94 3f 0a call 0x147e ; 0x147e + 15e2: 89 2b or r24, r25 + 15e4: 29 f4 brne .+10 ; 0x15f0 + 15e6: c8 14 cp r12, r8 + 15e8: d9 04 cpc r13, r9 + 15ea: ea 04 cpc r14, r10 + 15ec: fb 04 cpc r15, r11 + 15ee: 58 f3 brcs .-42 ; 0x15c6 + } + // Проверка переполнения + if (byteCount > length) { + overflow = 1; + } + return overflow ? -1 : byteCount; // Возвращает количество успешно принятых байт или -1 в случае переполнения + 15f0: 20 e0 ldi r18, 0x00 ; 0 + 15f2: 30 e0 ldi r19, 0x00 ; 0 + 15f4: 0c 15 cp r16, r12 + 15f6: 1d 05 cpc r17, r13 + 15f8: 2e 05 cpc r18, r14 + 15fa: 3f 05 cpc r19, r15 + 15fc: 10 f0 brcs .+4 ; 0x1602 + 15fe: c6 01 movw r24, r12 + 1600: 02 c0 rjmp .+4 ; 0x1606 + 1602: 8f ef ldi r24, 0xFF ; 255 + 1604: 9f ef ldi r25, 0xFF ; 255 +} + 1606: df 91 pop r29 + 1608: cf 91 pop r28 + 160a: 1f 91 pop r17 + 160c: 0f 91 pop r16 + 160e: ff 90 pop r15 + 1610: ef 90 pop r14 + 1612: df 90 pop r13 + 1614: cf 90 pop r12 + 1616: bf 90 pop r11 + 1618: af 90 pop r10 + 161a: 9f 90 pop r9 + 161c: 8f 90 pop r8 + 161e: 08 95 ret + +00001620 <__vector_18>: + +// прерывание по завершению приема +ISR(USART_RX_vect) { + 1620: 1f 92 push r1 + 1622: 0f 92 push r0 + 1624: 0f b6 in r0, 0x3f ; 63 + 1626: 0f 92 push r0 + 1628: 11 24 eor r1, r1 + 162a: 2f 93 push r18 + 162c: 3f 93 push r19 + 162e: 4f 93 push r20 + 1630: 5f 93 push r21 + 1632: 6f 93 push r22 + 1634: 7f 93 push r23 + 1636: 8f 93 push r24 + 1638: 9f 93 push r25 + 163a: af 93 push r26 + 163c: bf 93 push r27 + 163e: cf 93 push r28 + 1640: ef 93 push r30 + 1642: ff 93 push r31 + uint8_t data = UDR0; // читаем из регистра UDR0 + 1644: c0 91 c6 00 lds r28, 0x00C6 ; 0x8000c6 <__DATA_REGION_ORIGIN__+0x66> + if (!buffer_full(&uartRxBuffer)) { + 1648: 8c e4 ldi r24, 0x4C ; 76 + 164a: 93 e0 ldi r25, 0x03 ; 3 + 164c: 0e 94 49 0a call 0x1492 ; 0x1492 + 1650: 89 2b or r24, r25 + 1652: 31 f4 brne .+12 ; 0x1660 <__vector_18+0x40> + write_buffer(&uartRxBuffer, data);// записываем символ в буфер приема + 1654: 6c 2f mov r22, r28 + 1656: 70 e0 ldi r23, 0x00 ; 0 + 1658: 8c e4 ldi r24, 0x4C ; 76 + 165a: 93 e0 ldi r25, 0x03 ; 3 + 165c: 0e 94 63 0a call 0x14c6 ; 0x14c6 + } +} + 1660: ff 91 pop r31 + 1662: ef 91 pop r30 + 1664: cf 91 pop r28 + 1666: bf 91 pop r27 + 1668: af 91 pop r26 + 166a: 9f 91 pop r25 + 166c: 8f 91 pop r24 + 166e: 7f 91 pop r23 + 1670: 6f 91 pop r22 + 1672: 5f 91 pop r21 + 1674: 4f 91 pop r20 + 1676: 3f 91 pop r19 + 1678: 2f 91 pop r18 + 167a: 0f 90 pop r0 + 167c: 0f be out 0x3f, r0 ; 63 + 167e: 0f 90 pop r0 + 1680: 1f 90 pop r1 + 1682: 18 95 reti + +00001684 <__vector_20>: + +ISR(USART_TX_vect) { + 1684: 1f 92 push r1 + 1686: 0f 92 push r0 + 1688: 0f b6 in r0, 0x3f ; 63 + 168a: 0f 92 push r0 + 168c: 11 24 eor r1, r1 + 168e: 2f 93 push r18 + 1690: 3f 93 push r19 + 1692: 4f 93 push r20 + 1694: 5f 93 push r21 + 1696: 6f 93 push r22 + 1698: 7f 93 push r23 + 169a: 8f 93 push r24 + 169c: 9f 93 push r25 + 169e: af 93 push r26 + 16a0: bf 93 push r27 + 16a2: ef 93 push r30 + 16a4: ff 93 push r31 + if (!buffer_empty(&uartTxBuffer)) { + 16a6: 8e e6 ldi r24, 0x6E ; 110 + 16a8: 93 e0 ldi r25, 0x03 ; 3 + 16aa: 0e 94 3f 0a call 0x147e ; 0x147e + 16ae: 89 2b or r24, r25 + 16b0: 39 f4 brne .+14 ; 0x16c0 <__vector_20+0x3c> + UDR0 = read_buffer(&uartTxBuffer); + 16b2: 8e e6 ldi r24, 0x6E ; 110 + 16b4: 93 e0 ldi r25, 0x03 ; 3 + 16b6: 0e 94 80 0a call 0x1500 ; 0x1500 + 16ba: 80 93 c6 00 sts 0x00C6, r24 ; 0x8000c6 <__DATA_REGION_ORIGIN__+0x66> + 16be: 05 c0 rjmp .+10 ; 0x16ca <__vector_20+0x46> + } else { + UCSR0B &= ~(1 << TXCIE0); // отключаем прерывание, когда все данные отправлены + 16c0: e1 ec ldi r30, 0xC1 ; 193 + 16c2: f0 e0 ldi r31, 0x00 ; 0 + 16c4: 80 81 ld r24, Z + 16c6: 8f 7b andi r24, 0xBF ; 191 + 16c8: 80 83 st Z, r24 + } + 16ca: ff 91 pop r31 + 16cc: ef 91 pop r30 + 16ce: bf 91 pop r27 + 16d0: af 91 pop r26 + 16d2: 9f 91 pop r25 + 16d4: 8f 91 pop r24 + 16d6: 7f 91 pop r23 + 16d8: 6f 91 pop r22 + 16da: 5f 91 pop r21 + 16dc: 4f 91 pop r20 + 16de: 3f 91 pop r19 + 16e0: 2f 91 pop r18 + 16e2: 0f 90 pop r0 + 16e4: 0f be out 0x3f, r0 ; 63 + 16e6: 0f 90 pop r0 + 16e8: 1f 90 pop r1 + 16ea: 18 95 reti + +000016ec <__udivmodhi4>: + 16ec: aa 1b sub r26, r26 + 16ee: bb 1b sub r27, r27 + 16f0: 51 e1 ldi r21, 0x11 ; 17 + 16f2: 07 c0 rjmp .+14 ; 0x1702 <__udivmodhi4_ep> + +000016f4 <__udivmodhi4_loop>: + 16f4: aa 1f adc r26, r26 + 16f6: bb 1f adc r27, r27 + 16f8: a6 17 cp r26, r22 + 16fa: b7 07 cpc r27, r23 + 16fc: 10 f0 brcs .+4 ; 0x1702 <__udivmodhi4_ep> + 16fe: a6 1b sub r26, r22 + 1700: b7 0b sbc r27, r23 + +00001702 <__udivmodhi4_ep>: + 1702: 88 1f adc r24, r24 + 1704: 99 1f adc r25, r25 + 1706: 5a 95 dec r21 + 1708: a9 f7 brne .-22 ; 0x16f4 <__udivmodhi4_loop> + 170a: 80 95 com r24 + 170c: 90 95 com r25 + 170e: bc 01 movw r22, r24 + 1710: cd 01 movw r24, r26 + 1712: 08 95 ret + +00001714 : + 1714: fb 01 movw r30, r22 + 1716: dc 01 movw r26, r24 + 1718: 41 50 subi r20, 0x01 ; 1 + 171a: 50 40 sbci r21, 0x00 ; 0 + 171c: 48 f0 brcs .+18 ; 0x1730 + 171e: 01 90 ld r0, Z+ + 1720: 0d 92 st X+, r0 + 1722: 00 20 and r0, r0 + 1724: c9 f7 brne .-14 ; 0x1718 + 1726: 01 c0 rjmp .+2 ; 0x172a + 1728: 1d 92 st X+, r1 + 172a: 41 50 subi r20, 0x01 ; 1 + 172c: 50 40 sbci r21, 0x00 ; 0 + 172e: e0 f7 brcc .-8 ; 0x1728 + 1730: 08 95 ret + +00001732 : + 1732: a0 e0 ldi r26, 0x00 ; 0 + 1734: b0 e0 ldi r27, 0x00 ; 0 + 1736: ef e9 ldi r30, 0x9F ; 159 + 1738: fb e0 ldi r31, 0x0B ; 11 + 173a: 0c 94 80 0e jmp 0x1d00 ; 0x1d00 <__prologue_saves__+0x20> + 173e: ae 01 movw r20, r28 + 1740: 4b 5f subi r20, 0xFB ; 251 + 1742: 5f 4f sbci r21, 0xFF ; 255 + 1744: fa 01 movw r30, r20 + 1746: 61 91 ld r22, Z+ + 1748: 71 91 ld r23, Z+ + 174a: af 01 movw r20, r30 + 174c: 80 91 92 03 lds r24, 0x0392 ; 0x800392 <__iob+0x2> + 1750: 90 91 93 03 lds r25, 0x0393 ; 0x800393 <__iob+0x3> + 1754: 0e 94 df 0b call 0x17be ; 0x17be + 1758: e2 e0 ldi r30, 0x02 ; 2 + 175a: 0c 94 9c 0e jmp 0x1d38 ; 0x1d38 <__epilogue_restores__+0x20> + +0000175e : + 175e: ae e0 ldi r26, 0x0E ; 14 + 1760: b0 e0 ldi r27, 0x00 ; 0 + 1762: e5 eb ldi r30, 0xB5 ; 181 + 1764: fb e0 ldi r31, 0x0B ; 11 + 1766: 0c 94 7e 0e jmp 0x1cfc ; 0x1cfc <__prologue_saves__+0x1c> + 176a: 0d 89 ldd r16, Y+21 ; 0x15 + 176c: 1e 89 ldd r17, Y+22 ; 0x16 + 176e: 8f 89 ldd r24, Y+23 ; 0x17 + 1770: 98 8d ldd r25, Y+24 ; 0x18 + 1772: 26 e0 ldi r18, 0x06 ; 6 + 1774: 2c 83 std Y+4, r18 ; 0x04 + 1776: 1a 83 std Y+2, r17 ; 0x02 + 1778: 09 83 std Y+1, r16 ; 0x01 + 177a: 97 ff sbrs r25, 7 + 177c: 02 c0 rjmp .+4 ; 0x1782 + 177e: 80 e0 ldi r24, 0x00 ; 0 + 1780: 90 e8 ldi r25, 0x80 ; 128 + 1782: 01 97 sbiw r24, 0x01 ; 1 + 1784: 9e 83 std Y+6, r25 ; 0x06 + 1786: 8d 83 std Y+5, r24 ; 0x05 + 1788: ae 01 movw r20, r28 + 178a: 45 5e subi r20, 0xE5 ; 229 + 178c: 5f 4f sbci r21, 0xFF ; 255 + 178e: 69 8d ldd r22, Y+25 ; 0x19 + 1790: 7a 8d ldd r23, Y+26 ; 0x1a + 1792: ce 01 movw r24, r28 + 1794: 01 96 adiw r24, 0x01 ; 1 + 1796: 0e 94 df 0b call 0x17be ; 0x17be + 179a: 4d 81 ldd r20, Y+5 ; 0x05 + 179c: 5e 81 ldd r21, Y+6 ; 0x06 + 179e: 57 fd sbrc r21, 7 + 17a0: 0a c0 rjmp .+20 ; 0x17b6 + 17a2: 2f 81 ldd r18, Y+7 ; 0x07 + 17a4: 38 85 ldd r19, Y+8 ; 0x08 + 17a6: 42 17 cp r20, r18 + 17a8: 53 07 cpc r21, r19 + 17aa: 0c f4 brge .+2 ; 0x17ae + 17ac: 9a 01 movw r18, r20 + 17ae: f8 01 movw r30, r16 + 17b0: e2 0f add r30, r18 + 17b2: f3 1f adc r31, r19 + 17b4: 10 82 st Z, r1 + 17b6: 2e 96 adiw r28, 0x0e ; 14 + 17b8: e4 e0 ldi r30, 0x04 ; 4 + 17ba: 0c 94 9a 0e jmp 0x1d34 ; 0x1d34 <__epilogue_restores__+0x1c> + +000017be : + 17be: ab e0 ldi r26, 0x0B ; 11 + 17c0: b0 e0 ldi r27, 0x00 ; 0 + 17c2: e5 ee ldi r30, 0xE5 ; 229 + 17c4: fb e0 ldi r31, 0x0B ; 11 + 17c6: 0c 94 70 0e jmp 0x1ce0 ; 0x1ce0 <__prologue_saves__> + 17ca: 6c 01 movw r12, r24 + 17cc: 7b 01 movw r14, r22 + 17ce: 8a 01 movw r16, r20 + 17d0: fc 01 movw r30, r24 + 17d2: 17 82 std Z+7, r1 ; 0x07 + 17d4: 16 82 std Z+6, r1 ; 0x06 + 17d6: 83 81 ldd r24, Z+3 ; 0x03 + 17d8: 81 ff sbrs r24, 1 + 17da: cc c1 rjmp .+920 ; 0x1b74 + 17dc: ce 01 movw r24, r28 + 17de: 01 96 adiw r24, 0x01 ; 1 + 17e0: 3c 01 movw r6, r24 + 17e2: f6 01 movw r30, r12 + 17e4: 93 81 ldd r25, Z+3 ; 0x03 + 17e6: f7 01 movw r30, r14 + 17e8: 93 fd sbrc r25, 3 + 17ea: 85 91 lpm r24, Z+ + 17ec: 93 ff sbrs r25, 3 + 17ee: 81 91 ld r24, Z+ + 17f0: 7f 01 movw r14, r30 + 17f2: 88 23 and r24, r24 + 17f4: 09 f4 brne .+2 ; 0x17f8 + 17f6: ba c1 rjmp .+884 ; 0x1b6c + 17f8: 85 32 cpi r24, 0x25 ; 37 + 17fa: 39 f4 brne .+14 ; 0x180a + 17fc: 93 fd sbrc r25, 3 + 17fe: 85 91 lpm r24, Z+ + 1800: 93 ff sbrs r25, 3 + 1802: 81 91 ld r24, Z+ + 1804: 7f 01 movw r14, r30 + 1806: 85 32 cpi r24, 0x25 ; 37 + 1808: 29 f4 brne .+10 ; 0x1814 + 180a: b6 01 movw r22, r12 + 180c: 90 e0 ldi r25, 0x00 ; 0 + 180e: 0e 94 d6 0d call 0x1bac ; 0x1bac + 1812: e7 cf rjmp .-50 ; 0x17e2 + 1814: 91 2c mov r9, r1 + 1816: 21 2c mov r2, r1 + 1818: 31 2c mov r3, r1 + 181a: ff e1 ldi r31, 0x1F ; 31 + 181c: f3 15 cp r31, r3 + 181e: d8 f0 brcs .+54 ; 0x1856 + 1820: 8b 32 cpi r24, 0x2B ; 43 + 1822: 79 f0 breq .+30 ; 0x1842 + 1824: 38 f4 brcc .+14 ; 0x1834 + 1826: 80 32 cpi r24, 0x20 ; 32 + 1828: 79 f0 breq .+30 ; 0x1848 + 182a: 83 32 cpi r24, 0x23 ; 35 + 182c: a1 f4 brne .+40 ; 0x1856 + 182e: 23 2d mov r18, r3 + 1830: 20 61 ori r18, 0x10 ; 16 + 1832: 1d c0 rjmp .+58 ; 0x186e + 1834: 8d 32 cpi r24, 0x2D ; 45 + 1836: 61 f0 breq .+24 ; 0x1850 + 1838: 80 33 cpi r24, 0x30 ; 48 + 183a: 69 f4 brne .+26 ; 0x1856 + 183c: 23 2d mov r18, r3 + 183e: 21 60 ori r18, 0x01 ; 1 + 1840: 16 c0 rjmp .+44 ; 0x186e + 1842: 83 2d mov r24, r3 + 1844: 82 60 ori r24, 0x02 ; 2 + 1846: 38 2e mov r3, r24 + 1848: e3 2d mov r30, r3 + 184a: e4 60 ori r30, 0x04 ; 4 + 184c: 3e 2e mov r3, r30 + 184e: 2a c0 rjmp .+84 ; 0x18a4 + 1850: f3 2d mov r31, r3 + 1852: f8 60 ori r31, 0x08 ; 8 + 1854: 1d c0 rjmp .+58 ; 0x1890 + 1856: 37 fc sbrc r3, 7 + 1858: 2d c0 rjmp .+90 ; 0x18b4 + 185a: 20 ed ldi r18, 0xD0 ; 208 + 185c: 28 0f add r18, r24 + 185e: 2a 30 cpi r18, 0x0A ; 10 + 1860: 40 f0 brcs .+16 ; 0x1872 + 1862: 8e 32 cpi r24, 0x2E ; 46 + 1864: b9 f4 brne .+46 ; 0x1894 + 1866: 36 fc sbrc r3, 6 + 1868: 81 c1 rjmp .+770 ; 0x1b6c + 186a: 23 2d mov r18, r3 + 186c: 20 64 ori r18, 0x40 ; 64 + 186e: 32 2e mov r3, r18 + 1870: 19 c0 rjmp .+50 ; 0x18a4 + 1872: 36 fe sbrs r3, 6 + 1874: 06 c0 rjmp .+12 ; 0x1882 + 1876: 8a e0 ldi r24, 0x0A ; 10 + 1878: 98 9e mul r9, r24 + 187a: 20 0d add r18, r0 + 187c: 11 24 eor r1, r1 + 187e: 92 2e mov r9, r18 + 1880: 11 c0 rjmp .+34 ; 0x18a4 + 1882: ea e0 ldi r30, 0x0A ; 10 + 1884: 2e 9e mul r2, r30 + 1886: 20 0d add r18, r0 + 1888: 11 24 eor r1, r1 + 188a: 22 2e mov r2, r18 + 188c: f3 2d mov r31, r3 + 188e: f0 62 ori r31, 0x20 ; 32 + 1890: 3f 2e mov r3, r31 + 1892: 08 c0 rjmp .+16 ; 0x18a4 + 1894: 8c 36 cpi r24, 0x6C ; 108 + 1896: 21 f4 brne .+8 ; 0x18a0 + 1898: 83 2d mov r24, r3 + 189a: 80 68 ori r24, 0x80 ; 128 + 189c: 38 2e mov r3, r24 + 189e: 02 c0 rjmp .+4 ; 0x18a4 + 18a0: 88 36 cpi r24, 0x68 ; 104 + 18a2: 41 f4 brne .+16 ; 0x18b4 + 18a4: f7 01 movw r30, r14 + 18a6: 93 fd sbrc r25, 3 + 18a8: 85 91 lpm r24, Z+ + 18aa: 93 ff sbrs r25, 3 + 18ac: 81 91 ld r24, Z+ + 18ae: 7f 01 movw r14, r30 + 18b0: 81 11 cpse r24, r1 + 18b2: b3 cf rjmp .-154 ; 0x181a + 18b4: 98 2f mov r25, r24 + 18b6: 9f 7d andi r25, 0xDF ; 223 + 18b8: 95 54 subi r25, 0x45 ; 69 + 18ba: 93 30 cpi r25, 0x03 ; 3 + 18bc: 28 f4 brcc .+10 ; 0x18c8 + 18be: 0c 5f subi r16, 0xFC ; 252 + 18c0: 1f 4f sbci r17, 0xFF ; 255 + 18c2: 9f e3 ldi r25, 0x3F ; 63 + 18c4: 99 83 std Y+1, r25 ; 0x01 + 18c6: 0d c0 rjmp .+26 ; 0x18e2 + 18c8: 83 36 cpi r24, 0x63 ; 99 + 18ca: 31 f0 breq .+12 ; 0x18d8 + 18cc: 83 37 cpi r24, 0x73 ; 115 + 18ce: 71 f0 breq .+28 ; 0x18ec + 18d0: 83 35 cpi r24, 0x53 ; 83 + 18d2: 09 f0 breq .+2 ; 0x18d6 + 18d4: 59 c0 rjmp .+178 ; 0x1988 + 18d6: 21 c0 rjmp .+66 ; 0x191a + 18d8: f8 01 movw r30, r16 + 18da: 80 81 ld r24, Z + 18dc: 89 83 std Y+1, r24 ; 0x01 + 18de: 0e 5f subi r16, 0xFE ; 254 + 18e0: 1f 4f sbci r17, 0xFF ; 255 + 18e2: 88 24 eor r8, r8 + 18e4: 83 94 inc r8 + 18e6: 91 2c mov r9, r1 + 18e8: 53 01 movw r10, r6 + 18ea: 13 c0 rjmp .+38 ; 0x1912 + 18ec: 28 01 movw r4, r16 + 18ee: f2 e0 ldi r31, 0x02 ; 2 + 18f0: 4f 0e add r4, r31 + 18f2: 51 1c adc r5, r1 + 18f4: f8 01 movw r30, r16 + 18f6: a0 80 ld r10, Z + 18f8: b1 80 ldd r11, Z+1 ; 0x01 + 18fa: 36 fe sbrs r3, 6 + 18fc: 03 c0 rjmp .+6 ; 0x1904 + 18fe: 69 2d mov r22, r9 + 1900: 70 e0 ldi r23, 0x00 ; 0 + 1902: 02 c0 rjmp .+4 ; 0x1908 + 1904: 6f ef ldi r22, 0xFF ; 255 + 1906: 7f ef ldi r23, 0xFF ; 255 + 1908: c5 01 movw r24, r10 + 190a: 0e 94 cb 0d call 0x1b96 ; 0x1b96 + 190e: 4c 01 movw r8, r24 + 1910: 82 01 movw r16, r4 + 1912: f3 2d mov r31, r3 + 1914: ff 77 andi r31, 0x7F ; 127 + 1916: 3f 2e mov r3, r31 + 1918: 16 c0 rjmp .+44 ; 0x1946 + 191a: 28 01 movw r4, r16 + 191c: 22 e0 ldi r18, 0x02 ; 2 + 191e: 42 0e add r4, r18 + 1920: 51 1c adc r5, r1 + 1922: f8 01 movw r30, r16 + 1924: a0 80 ld r10, Z + 1926: b1 80 ldd r11, Z+1 ; 0x01 + 1928: 36 fe sbrs r3, 6 + 192a: 03 c0 rjmp .+6 ; 0x1932 + 192c: 69 2d mov r22, r9 + 192e: 70 e0 ldi r23, 0x00 ; 0 + 1930: 02 c0 rjmp .+4 ; 0x1936 + 1932: 6f ef ldi r22, 0xFF ; 255 + 1934: 7f ef ldi r23, 0xFF ; 255 + 1936: c5 01 movw r24, r10 + 1938: 0e 94 c0 0d call 0x1b80 ; 0x1b80 + 193c: 4c 01 movw r8, r24 + 193e: f3 2d mov r31, r3 + 1940: f0 68 ori r31, 0x80 ; 128 + 1942: 3f 2e mov r3, r31 + 1944: 82 01 movw r16, r4 + 1946: 33 fc sbrc r3, 3 + 1948: 1b c0 rjmp .+54 ; 0x1980 + 194a: 82 2d mov r24, r2 + 194c: 90 e0 ldi r25, 0x00 ; 0 + 194e: 88 16 cp r8, r24 + 1950: 99 06 cpc r9, r25 + 1952: b0 f4 brcc .+44 ; 0x1980 + 1954: b6 01 movw r22, r12 + 1956: 80 e2 ldi r24, 0x20 ; 32 + 1958: 90 e0 ldi r25, 0x00 ; 0 + 195a: 0e 94 d6 0d call 0x1bac ; 0x1bac + 195e: 2a 94 dec r2 + 1960: f4 cf rjmp .-24 ; 0x194a + 1962: f5 01 movw r30, r10 + 1964: 37 fc sbrc r3, 7 + 1966: 85 91 lpm r24, Z+ + 1968: 37 fe sbrs r3, 7 + 196a: 81 91 ld r24, Z+ + 196c: 5f 01 movw r10, r30 + 196e: b6 01 movw r22, r12 + 1970: 90 e0 ldi r25, 0x00 ; 0 + 1972: 0e 94 d6 0d call 0x1bac ; 0x1bac + 1976: 21 10 cpse r2, r1 + 1978: 2a 94 dec r2 + 197a: 21 e0 ldi r18, 0x01 ; 1 + 197c: 82 1a sub r8, r18 + 197e: 91 08 sbc r9, r1 + 1980: 81 14 cp r8, r1 + 1982: 91 04 cpc r9, r1 + 1984: 71 f7 brne .-36 ; 0x1962 + 1986: e8 c0 rjmp .+464 ; 0x1b58 + 1988: 84 36 cpi r24, 0x64 ; 100 + 198a: 11 f0 breq .+4 ; 0x1990 + 198c: 89 36 cpi r24, 0x69 ; 105 + 198e: 41 f5 brne .+80 ; 0x19e0 + 1990: f8 01 movw r30, r16 + 1992: 37 fe sbrs r3, 7 + 1994: 07 c0 rjmp .+14 ; 0x19a4 + 1996: 60 81 ld r22, Z + 1998: 71 81 ldd r23, Z+1 ; 0x01 + 199a: 82 81 ldd r24, Z+2 ; 0x02 + 199c: 93 81 ldd r25, Z+3 ; 0x03 + 199e: 0c 5f subi r16, 0xFC ; 252 + 19a0: 1f 4f sbci r17, 0xFF ; 255 + 19a2: 08 c0 rjmp .+16 ; 0x19b4 + 19a4: 60 81 ld r22, Z + 19a6: 71 81 ldd r23, Z+1 ; 0x01 + 19a8: 07 2e mov r0, r23 + 19aa: 00 0c add r0, r0 + 19ac: 88 0b sbc r24, r24 + 19ae: 99 0b sbc r25, r25 + 19b0: 0e 5f subi r16, 0xFE ; 254 + 19b2: 1f 4f sbci r17, 0xFF ; 255 + 19b4: f3 2d mov r31, r3 + 19b6: ff 76 andi r31, 0x6F ; 111 + 19b8: 3f 2e mov r3, r31 + 19ba: 97 ff sbrs r25, 7 + 19bc: 09 c0 rjmp .+18 ; 0x19d0 + 19be: 90 95 com r25 + 19c0: 80 95 com r24 + 19c2: 70 95 com r23 + 19c4: 61 95 neg r22 + 19c6: 7f 4f sbci r23, 0xFF ; 255 + 19c8: 8f 4f sbci r24, 0xFF ; 255 + 19ca: 9f 4f sbci r25, 0xFF ; 255 + 19cc: f0 68 ori r31, 0x80 ; 128 + 19ce: 3f 2e mov r3, r31 + 19d0: 2a e0 ldi r18, 0x0A ; 10 + 19d2: 30 e0 ldi r19, 0x00 ; 0 + 19d4: a3 01 movw r20, r6 + 19d6: 0e 94 12 0e call 0x1c24 ; 0x1c24 <__ultoa_invert> + 19da: 88 2e mov r8, r24 + 19dc: 86 18 sub r8, r6 + 19de: 45 c0 rjmp .+138 ; 0x1a6a + 19e0: 85 37 cpi r24, 0x75 ; 117 + 19e2: 31 f4 brne .+12 ; 0x19f0 + 19e4: 23 2d mov r18, r3 + 19e6: 2f 7e andi r18, 0xEF ; 239 + 19e8: b2 2e mov r11, r18 + 19ea: 2a e0 ldi r18, 0x0A ; 10 + 19ec: 30 e0 ldi r19, 0x00 ; 0 + 19ee: 25 c0 rjmp .+74 ; 0x1a3a + 19f0: 93 2d mov r25, r3 + 19f2: 99 7f andi r25, 0xF9 ; 249 + 19f4: b9 2e mov r11, r25 + 19f6: 8f 36 cpi r24, 0x6F ; 111 + 19f8: c1 f0 breq .+48 ; 0x1a2a + 19fa: 18 f4 brcc .+6 ; 0x1a02 + 19fc: 88 35 cpi r24, 0x58 ; 88 + 19fe: 79 f0 breq .+30 ; 0x1a1e + 1a00: b5 c0 rjmp .+362 ; 0x1b6c + 1a02: 80 37 cpi r24, 0x70 ; 112 + 1a04: 19 f0 breq .+6 ; 0x1a0c + 1a06: 88 37 cpi r24, 0x78 ; 120 + 1a08: 21 f0 breq .+8 ; 0x1a12 + 1a0a: b0 c0 rjmp .+352 ; 0x1b6c + 1a0c: e9 2f mov r30, r25 + 1a0e: e0 61 ori r30, 0x10 ; 16 + 1a10: be 2e mov r11, r30 + 1a12: b4 fe sbrs r11, 4 + 1a14: 0d c0 rjmp .+26 ; 0x1a30 + 1a16: fb 2d mov r31, r11 + 1a18: f4 60 ori r31, 0x04 ; 4 + 1a1a: bf 2e mov r11, r31 + 1a1c: 09 c0 rjmp .+18 ; 0x1a30 + 1a1e: 34 fe sbrs r3, 4 + 1a20: 0a c0 rjmp .+20 ; 0x1a36 + 1a22: 29 2f mov r18, r25 + 1a24: 26 60 ori r18, 0x06 ; 6 + 1a26: b2 2e mov r11, r18 + 1a28: 06 c0 rjmp .+12 ; 0x1a36 + 1a2a: 28 e0 ldi r18, 0x08 ; 8 + 1a2c: 30 e0 ldi r19, 0x00 ; 0 + 1a2e: 05 c0 rjmp .+10 ; 0x1a3a + 1a30: 20 e1 ldi r18, 0x10 ; 16 + 1a32: 30 e0 ldi r19, 0x00 ; 0 + 1a34: 02 c0 rjmp .+4 ; 0x1a3a + 1a36: 20 e1 ldi r18, 0x10 ; 16 + 1a38: 32 e0 ldi r19, 0x02 ; 2 + 1a3a: f8 01 movw r30, r16 + 1a3c: b7 fe sbrs r11, 7 + 1a3e: 07 c0 rjmp .+14 ; 0x1a4e + 1a40: 60 81 ld r22, Z + 1a42: 71 81 ldd r23, Z+1 ; 0x01 + 1a44: 82 81 ldd r24, Z+2 ; 0x02 + 1a46: 93 81 ldd r25, Z+3 ; 0x03 + 1a48: 0c 5f subi r16, 0xFC ; 252 + 1a4a: 1f 4f sbci r17, 0xFF ; 255 + 1a4c: 06 c0 rjmp .+12 ; 0x1a5a + 1a4e: 60 81 ld r22, Z + 1a50: 71 81 ldd r23, Z+1 ; 0x01 + 1a52: 80 e0 ldi r24, 0x00 ; 0 + 1a54: 90 e0 ldi r25, 0x00 ; 0 + 1a56: 0e 5f subi r16, 0xFE ; 254 + 1a58: 1f 4f sbci r17, 0xFF ; 255 + 1a5a: a3 01 movw r20, r6 + 1a5c: 0e 94 12 0e call 0x1c24 ; 0x1c24 <__ultoa_invert> + 1a60: 88 2e mov r8, r24 + 1a62: 86 18 sub r8, r6 + 1a64: fb 2d mov r31, r11 + 1a66: ff 77 andi r31, 0x7F ; 127 + 1a68: 3f 2e mov r3, r31 + 1a6a: 36 fe sbrs r3, 6 + 1a6c: 0d c0 rjmp .+26 ; 0x1a88 + 1a6e: 23 2d mov r18, r3 + 1a70: 2e 7f andi r18, 0xFE ; 254 + 1a72: a2 2e mov r10, r18 + 1a74: 89 14 cp r8, r9 + 1a76: 58 f4 brcc .+22 ; 0x1a8e + 1a78: 34 fe sbrs r3, 4 + 1a7a: 0b c0 rjmp .+22 ; 0x1a92 + 1a7c: 32 fc sbrc r3, 2 + 1a7e: 09 c0 rjmp .+18 ; 0x1a92 + 1a80: 83 2d mov r24, r3 + 1a82: 8e 7e andi r24, 0xEE ; 238 + 1a84: a8 2e mov r10, r24 + 1a86: 05 c0 rjmp .+10 ; 0x1a92 + 1a88: b8 2c mov r11, r8 + 1a8a: a3 2c mov r10, r3 + 1a8c: 03 c0 rjmp .+6 ; 0x1a94 + 1a8e: b8 2c mov r11, r8 + 1a90: 01 c0 rjmp .+2 ; 0x1a94 + 1a92: b9 2c mov r11, r9 + 1a94: a4 fe sbrs r10, 4 + 1a96: 0f c0 rjmp .+30 ; 0x1ab6 + 1a98: fe 01 movw r30, r28 + 1a9a: e8 0d add r30, r8 + 1a9c: f1 1d adc r31, r1 + 1a9e: 80 81 ld r24, Z + 1aa0: 80 33 cpi r24, 0x30 ; 48 + 1aa2: 21 f4 brne .+8 ; 0x1aac + 1aa4: 9a 2d mov r25, r10 + 1aa6: 99 7e andi r25, 0xE9 ; 233 + 1aa8: a9 2e mov r10, r25 + 1aaa: 09 c0 rjmp .+18 ; 0x1abe + 1aac: a2 fe sbrs r10, 2 + 1aae: 06 c0 rjmp .+12 ; 0x1abc + 1ab0: b3 94 inc r11 + 1ab2: b3 94 inc r11 + 1ab4: 04 c0 rjmp .+8 ; 0x1abe + 1ab6: 8a 2d mov r24, r10 + 1ab8: 86 78 andi r24, 0x86 ; 134 + 1aba: 09 f0 breq .+2 ; 0x1abe + 1abc: b3 94 inc r11 + 1abe: a3 fc sbrc r10, 3 + 1ac0: 11 c0 rjmp .+34 ; 0x1ae4 + 1ac2: a0 fe sbrs r10, 0 + 1ac4: 06 c0 rjmp .+12 ; 0x1ad2 + 1ac6: b2 14 cp r11, r2 + 1ac8: 88 f4 brcc .+34 ; 0x1aec + 1aca: 28 0c add r2, r8 + 1acc: 92 2c mov r9, r2 + 1ace: 9b 18 sub r9, r11 + 1ad0: 0e c0 rjmp .+28 ; 0x1aee + 1ad2: b2 14 cp r11, r2 + 1ad4: 60 f4 brcc .+24 ; 0x1aee + 1ad6: b6 01 movw r22, r12 + 1ad8: 80 e2 ldi r24, 0x20 ; 32 + 1ada: 90 e0 ldi r25, 0x00 ; 0 + 1adc: 0e 94 d6 0d call 0x1bac ; 0x1bac + 1ae0: b3 94 inc r11 + 1ae2: f7 cf rjmp .-18 ; 0x1ad2 + 1ae4: b2 14 cp r11, r2 + 1ae6: 18 f4 brcc .+6 ; 0x1aee + 1ae8: 2b 18 sub r2, r11 + 1aea: 02 c0 rjmp .+4 ; 0x1af0 + 1aec: 98 2c mov r9, r8 + 1aee: 21 2c mov r2, r1 + 1af0: a4 fe sbrs r10, 4 + 1af2: 10 c0 rjmp .+32 ; 0x1b14 + 1af4: b6 01 movw r22, r12 + 1af6: 80 e3 ldi r24, 0x30 ; 48 + 1af8: 90 e0 ldi r25, 0x00 ; 0 + 1afa: 0e 94 d6 0d call 0x1bac ; 0x1bac + 1afe: a2 fe sbrs r10, 2 + 1b00: 17 c0 rjmp .+46 ; 0x1b30 + 1b02: a1 fc sbrc r10, 1 + 1b04: 03 c0 rjmp .+6 ; 0x1b0c + 1b06: 88 e7 ldi r24, 0x78 ; 120 + 1b08: 90 e0 ldi r25, 0x00 ; 0 + 1b0a: 02 c0 rjmp .+4 ; 0x1b10 + 1b0c: 88 e5 ldi r24, 0x58 ; 88 + 1b0e: 90 e0 ldi r25, 0x00 ; 0 + 1b10: b6 01 movw r22, r12 + 1b12: 0c c0 rjmp .+24 ; 0x1b2c + 1b14: 8a 2d mov r24, r10 + 1b16: 86 78 andi r24, 0x86 ; 134 + 1b18: 59 f0 breq .+22 ; 0x1b30 + 1b1a: a1 fe sbrs r10, 1 + 1b1c: 02 c0 rjmp .+4 ; 0x1b22 + 1b1e: 8b e2 ldi r24, 0x2B ; 43 + 1b20: 01 c0 rjmp .+2 ; 0x1b24 + 1b22: 80 e2 ldi r24, 0x20 ; 32 + 1b24: a7 fc sbrc r10, 7 + 1b26: 8d e2 ldi r24, 0x2D ; 45 + 1b28: b6 01 movw r22, r12 + 1b2a: 90 e0 ldi r25, 0x00 ; 0 + 1b2c: 0e 94 d6 0d call 0x1bac ; 0x1bac + 1b30: 89 14 cp r8, r9 + 1b32: 38 f4 brcc .+14 ; 0x1b42 + 1b34: b6 01 movw r22, r12 + 1b36: 80 e3 ldi r24, 0x30 ; 48 + 1b38: 90 e0 ldi r25, 0x00 ; 0 + 1b3a: 0e 94 d6 0d call 0x1bac ; 0x1bac + 1b3e: 9a 94 dec r9 + 1b40: f7 cf rjmp .-18 ; 0x1b30 + 1b42: 8a 94 dec r8 + 1b44: f3 01 movw r30, r6 + 1b46: e8 0d add r30, r8 + 1b48: f1 1d adc r31, r1 + 1b4a: 80 81 ld r24, Z + 1b4c: b6 01 movw r22, r12 + 1b4e: 90 e0 ldi r25, 0x00 ; 0 + 1b50: 0e 94 d6 0d call 0x1bac ; 0x1bac + 1b54: 81 10 cpse r8, r1 + 1b56: f5 cf rjmp .-22 ; 0x1b42 + 1b58: 22 20 and r2, r2 + 1b5a: 09 f4 brne .+2 ; 0x1b5e + 1b5c: 42 ce rjmp .-892 ; 0x17e2 + 1b5e: b6 01 movw r22, r12 + 1b60: 80 e2 ldi r24, 0x20 ; 32 + 1b62: 90 e0 ldi r25, 0x00 ; 0 + 1b64: 0e 94 d6 0d call 0x1bac ; 0x1bac + 1b68: 2a 94 dec r2 + 1b6a: f6 cf rjmp .-20 ; 0x1b58 + 1b6c: f6 01 movw r30, r12 + 1b6e: 86 81 ldd r24, Z+6 ; 0x06 + 1b70: 97 81 ldd r25, Z+7 ; 0x07 + 1b72: 02 c0 rjmp .+4 ; 0x1b78 + 1b74: 8f ef ldi r24, 0xFF ; 255 + 1b76: 9f ef ldi r25, 0xFF ; 255 + 1b78: 2b 96 adiw r28, 0x0b ; 11 + 1b7a: e2 e1 ldi r30, 0x12 ; 18 + 1b7c: 0c 94 8c 0e jmp 0x1d18 ; 0x1d18 <__epilogue_restores__> + +00001b80 : + 1b80: fc 01 movw r30, r24 + 1b82: 05 90 lpm r0, Z+ + 1b84: 61 50 subi r22, 0x01 ; 1 + 1b86: 70 40 sbci r23, 0x00 ; 0 + 1b88: 01 10 cpse r0, r1 + 1b8a: d8 f7 brcc .-10 ; 0x1b82 + 1b8c: 80 95 com r24 + 1b8e: 90 95 com r25 + 1b90: 8e 0f add r24, r30 + 1b92: 9f 1f adc r25, r31 + 1b94: 08 95 ret + +00001b96 : + 1b96: fc 01 movw r30, r24 + 1b98: 61 50 subi r22, 0x01 ; 1 + 1b9a: 70 40 sbci r23, 0x00 ; 0 + 1b9c: 01 90 ld r0, Z+ + 1b9e: 01 10 cpse r0, r1 + 1ba0: d8 f7 brcc .-10 ; 0x1b98 + 1ba2: 80 95 com r24 + 1ba4: 90 95 com r25 + 1ba6: 8e 0f add r24, r30 + 1ba8: 9f 1f adc r25, r31 + 1baa: 08 95 ret + +00001bac : + 1bac: 0f 93 push r16 + 1bae: 1f 93 push r17 + 1bb0: cf 93 push r28 + 1bb2: df 93 push r29 + 1bb4: fb 01 movw r30, r22 + 1bb6: 23 81 ldd r18, Z+3 ; 0x03 + 1bb8: 21 fd sbrc r18, 1 + 1bba: 03 c0 rjmp .+6 ; 0x1bc2 + 1bbc: 8f ef ldi r24, 0xFF ; 255 + 1bbe: 9f ef ldi r25, 0xFF ; 255 + 1bc0: 2c c0 rjmp .+88 ; 0x1c1a + 1bc2: 22 ff sbrs r18, 2 + 1bc4: 16 c0 rjmp .+44 ; 0x1bf2 + 1bc6: 46 81 ldd r20, Z+6 ; 0x06 + 1bc8: 57 81 ldd r21, Z+7 ; 0x07 + 1bca: 24 81 ldd r18, Z+4 ; 0x04 + 1bcc: 35 81 ldd r19, Z+5 ; 0x05 + 1bce: 42 17 cp r20, r18 + 1bd0: 53 07 cpc r21, r19 + 1bd2: 44 f4 brge .+16 ; 0x1be4 + 1bd4: a0 81 ld r26, Z + 1bd6: b1 81 ldd r27, Z+1 ; 0x01 + 1bd8: 9d 01 movw r18, r26 + 1bda: 2f 5f subi r18, 0xFF ; 255 + 1bdc: 3f 4f sbci r19, 0xFF ; 255 + 1bde: 31 83 std Z+1, r19 ; 0x01 + 1be0: 20 83 st Z, r18 + 1be2: 8c 93 st X, r24 + 1be4: 26 81 ldd r18, Z+6 ; 0x06 + 1be6: 37 81 ldd r19, Z+7 ; 0x07 + 1be8: 2f 5f subi r18, 0xFF ; 255 + 1bea: 3f 4f sbci r19, 0xFF ; 255 + 1bec: 37 83 std Z+7, r19 ; 0x07 + 1bee: 26 83 std Z+6, r18 ; 0x06 + 1bf0: 14 c0 rjmp .+40 ; 0x1c1a + 1bf2: 8b 01 movw r16, r22 + 1bf4: ec 01 movw r28, r24 + 1bf6: fb 01 movw r30, r22 + 1bf8: 00 84 ldd r0, Z+8 ; 0x08 + 1bfa: f1 85 ldd r31, Z+9 ; 0x09 + 1bfc: e0 2d mov r30, r0 + 1bfe: 09 95 icall + 1c00: 89 2b or r24, r25 + 1c02: e1 f6 brne .-72 ; 0x1bbc + 1c04: d8 01 movw r26, r16 + 1c06: 16 96 adiw r26, 0x06 ; 6 + 1c08: 8d 91 ld r24, X+ + 1c0a: 9c 91 ld r25, X + 1c0c: 17 97 sbiw r26, 0x07 ; 7 + 1c0e: 01 96 adiw r24, 0x01 ; 1 + 1c10: 17 96 adiw r26, 0x07 ; 7 + 1c12: 9c 93 st X, r25 + 1c14: 8e 93 st -X, r24 + 1c16: 16 97 sbiw r26, 0x06 ; 6 + 1c18: ce 01 movw r24, r28 + 1c1a: df 91 pop r29 + 1c1c: cf 91 pop r28 + 1c1e: 1f 91 pop r17 + 1c20: 0f 91 pop r16 + 1c22: 08 95 ret + +00001c24 <__ultoa_invert>: + 1c24: fa 01 movw r30, r20 + 1c26: aa 27 eor r26, r26 + 1c28: 28 30 cpi r18, 0x08 ; 8 + 1c2a: 51 f1 breq .+84 ; 0x1c80 <__ultoa_invert+0x5c> + 1c2c: 20 31 cpi r18, 0x10 ; 16 + 1c2e: 81 f1 breq .+96 ; 0x1c90 <__ultoa_invert+0x6c> + 1c30: e8 94 clt + 1c32: 6f 93 push r22 + 1c34: 6e 7f andi r22, 0xFE ; 254 + 1c36: 6e 5f subi r22, 0xFE ; 254 + 1c38: 7f 4f sbci r23, 0xFF ; 255 + 1c3a: 8f 4f sbci r24, 0xFF ; 255 + 1c3c: 9f 4f sbci r25, 0xFF ; 255 + 1c3e: af 4f sbci r26, 0xFF ; 255 + 1c40: b1 e0 ldi r27, 0x01 ; 1 + 1c42: 3e d0 rcall .+124 ; 0x1cc0 <__ultoa_invert+0x9c> + 1c44: b4 e0 ldi r27, 0x04 ; 4 + 1c46: 3c d0 rcall .+120 ; 0x1cc0 <__ultoa_invert+0x9c> + 1c48: 67 0f add r22, r23 + 1c4a: 78 1f adc r23, r24 + 1c4c: 89 1f adc r24, r25 + 1c4e: 9a 1f adc r25, r26 + 1c50: a1 1d adc r26, r1 + 1c52: 68 0f add r22, r24 + 1c54: 79 1f adc r23, r25 + 1c56: 8a 1f adc r24, r26 + 1c58: 91 1d adc r25, r1 + 1c5a: a1 1d adc r26, r1 + 1c5c: 6a 0f add r22, r26 + 1c5e: 71 1d adc r23, r1 + 1c60: 81 1d adc r24, r1 + 1c62: 91 1d adc r25, r1 + 1c64: a1 1d adc r26, r1 + 1c66: 20 d0 rcall .+64 ; 0x1ca8 <__ultoa_invert+0x84> + 1c68: 09 f4 brne .+2 ; 0x1c6c <__ultoa_invert+0x48> + 1c6a: 68 94 set + 1c6c: 3f 91 pop r19 + 1c6e: 2a e0 ldi r18, 0x0A ; 10 + 1c70: 26 9f mul r18, r22 + 1c72: 11 24 eor r1, r1 + 1c74: 30 19 sub r19, r0 + 1c76: 30 5d subi r19, 0xD0 ; 208 + 1c78: 31 93 st Z+, r19 + 1c7a: de f6 brtc .-74 ; 0x1c32 <__ultoa_invert+0xe> + 1c7c: cf 01 movw r24, r30 + 1c7e: 08 95 ret + 1c80: 46 2f mov r20, r22 + 1c82: 47 70 andi r20, 0x07 ; 7 + 1c84: 40 5d subi r20, 0xD0 ; 208 + 1c86: 41 93 st Z+, r20 + 1c88: b3 e0 ldi r27, 0x03 ; 3 + 1c8a: 0f d0 rcall .+30 ; 0x1caa <__ultoa_invert+0x86> + 1c8c: c9 f7 brne .-14 ; 0x1c80 <__ultoa_invert+0x5c> + 1c8e: f6 cf rjmp .-20 ; 0x1c7c <__ultoa_invert+0x58> + 1c90: 46 2f mov r20, r22 + 1c92: 4f 70 andi r20, 0x0F ; 15 + 1c94: 40 5d subi r20, 0xD0 ; 208 + 1c96: 4a 33 cpi r20, 0x3A ; 58 + 1c98: 18 f0 brcs .+6 ; 0x1ca0 <__ultoa_invert+0x7c> + 1c9a: 49 5d subi r20, 0xD9 ; 217 + 1c9c: 31 fd sbrc r19, 1 + 1c9e: 40 52 subi r20, 0x20 ; 32 + 1ca0: 41 93 st Z+, r20 + 1ca2: 02 d0 rcall .+4 ; 0x1ca8 <__ultoa_invert+0x84> + 1ca4: a9 f7 brne .-22 ; 0x1c90 <__ultoa_invert+0x6c> + 1ca6: ea cf rjmp .-44 ; 0x1c7c <__ultoa_invert+0x58> + 1ca8: b4 e0 ldi r27, 0x04 ; 4 + 1caa: a6 95 lsr r26 + 1cac: 97 95 ror r25 + 1cae: 87 95 ror r24 + 1cb0: 77 95 ror r23 + 1cb2: 67 95 ror r22 + 1cb4: ba 95 dec r27 + 1cb6: c9 f7 brne .-14 ; 0x1caa <__ultoa_invert+0x86> + 1cb8: 00 97 sbiw r24, 0x00 ; 0 + 1cba: 61 05 cpc r22, r1 + 1cbc: 71 05 cpc r23, r1 + 1cbe: 08 95 ret + 1cc0: 9b 01 movw r18, r22 + 1cc2: ac 01 movw r20, r24 + 1cc4: 0a 2e mov r0, r26 + 1cc6: 06 94 lsr r0 + 1cc8: 57 95 ror r21 + 1cca: 47 95 ror r20 + 1ccc: 37 95 ror r19 + 1cce: 27 95 ror r18 + 1cd0: ba 95 dec r27 + 1cd2: c9 f7 brne .-14 ; 0x1cc6 <__ultoa_invert+0xa2> + 1cd4: 62 0f add r22, r18 + 1cd6: 73 1f adc r23, r19 + 1cd8: 84 1f adc r24, r20 + 1cda: 95 1f adc r25, r21 + 1cdc: a0 1d adc r26, r0 + 1cde: 08 95 ret + +00001ce0 <__prologue_saves__>: + 1ce0: 2f 92 push r2 + 1ce2: 3f 92 push r3 + 1ce4: 4f 92 push r4 + 1ce6: 5f 92 push r5 + 1ce8: 6f 92 push r6 + 1cea: 7f 92 push r7 + 1cec: 8f 92 push r8 + 1cee: 9f 92 push r9 + 1cf0: af 92 push r10 + 1cf2: bf 92 push r11 + 1cf4: cf 92 push r12 + 1cf6: df 92 push r13 + 1cf8: ef 92 push r14 + 1cfa: ff 92 push r15 + 1cfc: 0f 93 push r16 + 1cfe: 1f 93 push r17 + 1d00: cf 93 push r28 + 1d02: df 93 push r29 + 1d04: cd b7 in r28, 0x3d ; 61 + 1d06: de b7 in r29, 0x3e ; 62 + 1d08: ca 1b sub r28, r26 + 1d0a: db 0b sbc r29, r27 + 1d0c: 0f b6 in r0, 0x3f ; 63 + 1d0e: f8 94 cli + 1d10: de bf out 0x3e, r29 ; 62 + 1d12: 0f be out 0x3f, r0 ; 63 + 1d14: cd bf out 0x3d, r28 ; 61 + 1d16: 09 94 ijmp + +00001d18 <__epilogue_restores__>: + 1d18: 2a 88 ldd r2, Y+18 ; 0x12 + 1d1a: 39 88 ldd r3, Y+17 ; 0x11 + 1d1c: 48 88 ldd r4, Y+16 ; 0x10 + 1d1e: 5f 84 ldd r5, Y+15 ; 0x0f + 1d20: 6e 84 ldd r6, Y+14 ; 0x0e + 1d22: 7d 84 ldd r7, Y+13 ; 0x0d + 1d24: 8c 84 ldd r8, Y+12 ; 0x0c + 1d26: 9b 84 ldd r9, Y+11 ; 0x0b + 1d28: aa 84 ldd r10, Y+10 ; 0x0a + 1d2a: b9 84 ldd r11, Y+9 ; 0x09 + 1d2c: c8 84 ldd r12, Y+8 ; 0x08 + 1d2e: df 80 ldd r13, Y+7 ; 0x07 + 1d30: ee 80 ldd r14, Y+6 ; 0x06 + 1d32: fd 80 ldd r15, Y+5 ; 0x05 + 1d34: 0c 81 ldd r16, Y+4 ; 0x04 + 1d36: 1b 81 ldd r17, Y+3 ; 0x03 + 1d38: aa 81 ldd r26, Y+2 ; 0x02 + 1d3a: b9 81 ldd r27, Y+1 ; 0x01 + 1d3c: ce 0f add r28, r30 + 1d3e: d1 1d adc r29, r1 + 1d40: 0f b6 in r0, 0x3f ; 63 + 1d42: f8 94 cli + 1d44: de bf out 0x3e, r29 ; 62 + 1d46: 0f be out 0x3f, r0 ; 63 + 1d48: cd bf out 0x3d, r28 ; 61 + 1d4a: ed 01 movw r28, r26 + 1d4c: 08 95 ret + +00001d4e <_exit>: + 1d4e: f8 94 cli + +00001d50 <__stop_program>: + 1d50: ff cf rjmp .-2 ; 0x1d50 <__stop_program> diff --git a/hdlc_screen/Debug/hdlc_screen.map b/hdlc_screen/Debug/hdlc_screen.map new file mode 100644 index 0000000..4d6d650 --- /dev/null +++ b/hdlc_screen/Debug/hdlc_screen.map @@ -0,0 +1,953 @@ +Archive member included to satisfy reference by file (symbol) + +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + LCD/Lcd_print.o (__udivmodhi4) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o (exit) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + hdlc/client.o (__do_copy_data) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + hdlc/client.o (__do_clear_bss) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strncpy.o) + LCD/Lcd_print.o (strncpy) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o) + hdlc/client.o (printf) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(snprintf.o) + LCD/Lcd_print.o (snprintf) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o) (vfprintf) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen_P.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (strnlen_P) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (strnlen) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(fputc.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (fputc) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(iob.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o) (__iob) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(ultoa_invert.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) (__ultoa_invert) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o) (__prologue_saves__) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o) (__epilogue_restores__) + +Allocating common symbols +Common symbol size file + +uartRxBuffer 0x22 UART/uart.o +pcf8574_pinstatus 0x1 LCD/pcf8574.o +textCounter 0x6 LCD/Lcd_print.o +uartTxBuffer 0x22 UART/uart.o +__iob 0x6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(iob.o) +connecting_frame_timeout_bf + 0x2 hdlc/client.o + +Discarded input sections + + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + .text 0x00000000 0x0 hdlc/client.o + .data 0x00000000 0x0 hdlc/client.o + .bss 0x00000000 0x0 hdlc/client.o + .text 0x00000000 0x0 hdlc/fcs.o + .data 0x00000000 0x0 hdlc/fcs.o + .bss 0x00000000 0x0 hdlc/fcs.o + .text 0x00000000 0x0 hdlc/hdlc.o + .data 0x00000000 0x0 hdlc/hdlc.o + .bss 0x00000000 0x0 hdlc/hdlc.o + .text.hdlc_set_state + 0x00000000 0x20 hdlc/hdlc.o + .text.hdlc_get_state + 0x00000000 0x20 hdlc/hdlc.o + .text.hdlc_get_data_reset + 0x00000000 0xa hdlc/hdlc.o + .text.hdlc_get_data + 0x00000000 0x24 hdlc/hdlc.o + .data.hdlc_state + 0x00000000 0xb hdlc/hdlc.o + .text 0x00000000 0x0 LCD/lcdpcf8574.o + .data 0x00000000 0x0 LCD/lcdpcf8574.o + .bss 0x00000000 0x0 LCD/lcdpcf8574.o + .text.lcd_data + 0x00000000 0x14 LCD/lcdpcf8574.o + .text.lcd_getxy + 0x00000000 0x8 LCD/lcdpcf8574.o + .text.lcd_puts_p + 0x00000000 0x24 LCD/lcdpcf8574.o + .text 0x00000000 0x0 LCD/Lcd_print.o + .data 0x00000000 0x0 LCD/Lcd_print.o + .bss 0x00000000 0x0 LCD/Lcd_print.o + .text 0x00000000 0x0 LCD/pcf8574.o + .data 0x00000000 0x0 LCD/pcf8574.o + .bss 0x00000000 0x0 LCD/pcf8574.o + .text.pcf8574_getoutput + 0x00000000 0xe LCD/pcf8574.o + .text.pcf8574_setoutputpins + 0x00000000 0x80 LCD/pcf8574.o + .text.pcf8574_getinput + 0x00000000 0x22 LCD/pcf8574.o + .text.pcf8574_getinputpin + 0x00000000 0x32 LCD/pcf8574.o + .text 0x00000000 0x0 LCD/twimaster.o + .data 0x00000000 0x0 LCD/twimaster.o + .bss 0x00000000 0x0 LCD/twimaster.o + .text.i2c_start_wait + 0x00000000 0x50 LCD/twimaster.o + .text.i2c_rep_start + 0x00000000 0x6 LCD/twimaster.o + .text.i2c_readAck + 0x00000000 0x16 LCD/twimaster.o + .text.i2c_readNak + 0x00000000 0x16 LCD/twimaster.o + .text 0x00000000 0x0 main.o + .data 0x00000000 0x0 main.o + .bss 0x00000000 0x0 main.o + .text 0x00000000 0x0 protocol/protocol.o + .data 0x00000000 0x0 protocol/protocol.o + .bss 0x00000000 0x0 protocol/protocol.o + .text 0x00000000 0x0 UART/circular_buf.o + .data 0x00000000 0x0 UART/circular_buf.o + .bss 0x00000000 0x0 UART/circular_buf.o + .text.initialize_buffer + 0x00000000 0x8 UART/circular_buf.o + .text 0x00000000 0x0 UART/uart.o + .data 0x00000000 0x0 UART/uart.o + .bss 0x00000000 0x0 UART/uart.o + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strncpy.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strncpy.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strncpy.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(snprintf.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(snprintf.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(snprintf.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen_P.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen_P.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen_P.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(fputc.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(fputc.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(fputc.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(iob.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(iob.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(iob.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(ultoa_invert.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(ultoa_invert.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(ultoa_invert.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000003 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +user_signatures 0x00850000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o +LOAD hdlc/client.o +LOAD hdlc/fcs.o +LOAD hdlc/hdlc.o +LOAD LCD/lcdpcf8574.o +LOAD LCD/Lcd_print.o +LOAD LCD/pcf8574.o +LOAD LCD/twimaster.o +LOAD main.o +LOAD protocol/protocol.o +LOAD UART/circular_buf.o +LOAD UART/uart.o +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a +END GROUP +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5\libatmega328p.a +END GROUP + 0x00000000 __TEXT_REGION_ORIGIN__ = DEFINED (__TEXT_REGION_ORIGIN__)?__TEXT_REGION_ORIGIN__:0x0 + 0x00800060 __DATA_REGION_ORIGIN__ = DEFINED (__DATA_REGION_ORIGIN__)?__DATA_REGION_ORIGIN__:0x800060 + 0x00020000 __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x20000 + 0x0000ffa0 __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xffa0 + 0x00010000 __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000 + [0x00000003] __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400 + 0x00000400 __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400 + 0x00000400 __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400 + 0x00000400 __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400 + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x1d52 + *(.vectors) + .vectors 0x00000000 0x68 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + 0x00000000 __vector_default + 0x00000000 __vectors + *(.vectors) + *(.progmem.gcc*) + 0x00000068 . = ALIGN (0x2) + 0x00000068 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000068 0x0 linker stubs + *(.trampolines*) + 0x00000068 __trampolines_end = . + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + 0x00000068 . = ALIGN (0x2) + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000068 __ctors_start = . + *(.ctors) + 0x00000068 __ctors_end = . + 0x00000068 __dtors_start = . + *(.dtors) + 0x00000068 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000068 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + 0x00000068 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000068 0xc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000074 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + 0x00000074 __do_copy_data + .init4 0x0000008a 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + 0x0000008a __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x0000009a 0x8 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + *(.init9) + *(.text) + .text 0x000000a2 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + 0x000000a2 __vector_22 + 0x000000a2 __vector_1 + 0x000000a2 __vector_24 + 0x000000a2 __vector_12 + 0x000000a2 __bad_interrupt + 0x000000a2 __vector_6 + 0x000000a2 __vector_3 + 0x000000a2 __vector_23 + 0x000000a2 __vector_25 + 0x000000a2 __vector_11 + 0x000000a2 __vector_13 + 0x000000a2 __vector_17 + 0x000000a2 __vector_19 + 0x000000a2 __vector_7 + 0x000000a2 __vector_5 + 0x000000a2 __vector_4 + 0x000000a2 __vector_9 + 0x000000a2 __vector_2 + 0x000000a2 __vector_21 + 0x000000a2 __vector_15 + 0x000000a2 __vector_8 + 0x000000a2 __vector_14 + 0x000000a2 __vector_10 + 0x000000a2 __vector_16 + 0x000000a6 . = ALIGN (0x2) + *(.text.*) + .text.init_hdlc_client + 0x000000a6 0x32 hdlc/client.o + 0x000000a6 init_hdlc_client + .text.hdlc_connect + 0x000000d8 0x14 hdlc/client.o + 0x000000d8 hdlc_connect + .text.hdlc_send_data + 0x000000ec 0x36 hdlc/client.o + 0x000000ec hdlc_send_data + .text.hdlc_get_raw_frame + 0x00000122 0xec hdlc/client.o + 0x00000122 hdlc_get_raw_frame + .text.hdlc_decode_recived_raw_data + 0x0000020e 0x142 hdlc/client.o + 0x0000020e hdlc_decode_recived_raw_data + .text.hdlc_timeout_handler + 0x00000350 0x20 hdlc/client.o + 0x00000350 hdlc_timeout_handler + .text.calc_fcs + 0x00000370 0x1c hdlc/fcs.o + 0x00000370 calc_fcs + .text.hdlc_escape_value + 0x0000038c 0x3e hdlc/hdlc.o + 0x0000038c hdlc_escape_value + .text.hdlc_get_control_type + 0x000003ca 0x26 hdlc/hdlc.o + 0x000003ca hdlc_get_control_type + .text.hdlc_frame_control_type + 0x000003f0 0x36 hdlc/hdlc.o + 0x000003f0 hdlc_frame_control_type + .text.hdlc_get_data_reset_with_state + 0x00000426 0x1e hdlc/hdlc.o + 0x00000426 hdlc_get_data_reset_with_state + .text.hdlc_get_data_with_state + 0x00000444 0x24c hdlc/hdlc.o + 0x00000444 hdlc_get_data_with_state + .text.hdlc_frame_data + 0x00000690 0x14a hdlc/hdlc.o + 0x00000690 hdlc_frame_data + .text.lcd_read + 0x000007da 0x76 LCD/lcdpcf8574.o + .text.lcd_waitbusy + 0x00000850 0x14 LCD/lcdpcf8574.o + .text.toggle_e + 0x00000864 0x14 LCD/lcdpcf8574.o + .text.lcd_write + 0x00000878 0x144 LCD/lcdpcf8574.o + .text.lcd_command + 0x000009bc 0x14 LCD/lcdpcf8574.o + 0x000009bc lcd_command + .text.lcd_gotoxy + 0x000009d0 0x14 LCD/lcdpcf8574.o + 0x000009d0 lcd_gotoxy + .text.lcd_clrscr + 0x000009e4 0x8 LCD/lcdpcf8574.o + 0x000009e4 lcd_clrscr + .text.lcd_led 0x000009ec 0x26 LCD/lcdpcf8574.o + 0x000009ec lcd_led + .text.lcd_home + 0x00000a12 0x8 LCD/lcdpcf8574.o + 0x00000a12 lcd_home + .text.lcd_putc + 0x00000a1a 0x48 LCD/lcdpcf8574.o + 0x00000a1a lcd_putc + .text.lcd_puts + 0x00000a62 0x20 LCD/lcdpcf8574.o + 0x00000a62 lcd_puts + .text.lcd_init + 0x00000a82 0xa4 LCD/lcdpcf8574.o + 0x00000a82 lcd_init + .text.Lcd_inciliation + 0x00000b26 0x12 LCD/Lcd_print.o + 0x00000b26 Lcd_inciliation + .text.fillBuffer1 + 0x00000b38 0x7a LCD/Lcd_print.o + 0x00000b38 fillBuffer1 + .text.fillBuffer2 + 0x00000bb2 0x5e LCD/Lcd_print.o + 0x00000bb2 fillBuffer2 + .text.printLcd + 0x00000c10 0xe0 LCD/Lcd_print.o + 0x00000c10 printLcd + .text.pcf8574_init + 0x00000cf0 0x12 LCD/pcf8574.o + 0x00000cf0 pcf8574_init + .text.pcf8574_getoutputpin + 0x00000d02 0x28 LCD/pcf8574.o + 0x00000d02 pcf8574_getoutputpin + .text.pcf8574_setoutput + 0x00000d2a 0x26 LCD/pcf8574.o + 0x00000d2a pcf8574_setoutput + .text.pcf8574_setoutputpin + 0x00000d50 0x5c LCD/pcf8574.o + 0x00000d50 pcf8574_setoutputpin + .text.pcf8574_setoutputpinhigh + 0x00000dac 0x8 LCD/pcf8574.o + 0x00000dac pcf8574_setoutputpinhigh + .text.pcf8574_setoutputpinlow + 0x00000db4 0x8 LCD/pcf8574.o + 0x00000db4 pcf8574_setoutputpinlow + .text.i2c_init + 0x00000dbc 0xc LCD/twimaster.o + 0x00000dbc i2c_init + .text.i2c_start + 0x00000dc8 0x4e LCD/twimaster.o + 0x00000dc8 i2c_start + .text.i2c_stop + 0x00000e16 0x12 LCD/twimaster.o + 0x00000e16 i2c_stop + .text.i2c_write + 0x00000e28 0x24 LCD/twimaster.o + 0x00000e28 i2c_write + .text.main 0x00000e4c 0x330 main.o + 0x00000e4c main + .text.protocol_decode + 0x0000117c 0x13c protocol/protocol.o + 0x0000117c protocol_decode + .text.protocol_encode + 0x000012b8 0x1c6 protocol/protocol.o + 0x000012b8 protocol_encode + .text.buffer_empty + 0x0000147e 0x14 UART/circular_buf.o + 0x0000147e buffer_empty + .text.buffer_full + 0x00001492 0x34 UART/circular_buf.o + 0x00001492 buffer_full + .text.write_buffer + 0x000014c6 0x3a UART/circular_buf.o + 0x000014c6 write_buffer + .text.read_buffer + 0x00001500 0x3c UART/circular_buf.o + 0x00001500 read_buffer + .text.UART_init + 0x0000153c 0x18 UART/uart.o + 0x0000153c UART_init + .text.UART_send + 0x00001554 0x48 UART/uart.o + 0x00001554 UART_send + .text.UART_receive + 0x0000159c 0x84 UART/uart.o + 0x0000159c UART_receive + .text.__vector_18 + 0x00001620 0x64 UART/uart.o + 0x00001620 __vector_18 + .text.__vector_20 + 0x00001684 0x68 UART/uart.o + 0x00001684 __vector_20 + .text.libgcc.div + 0x000016ec 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + 0x000016ec __udivmodhi4 + .text.avr-libc + 0x00001714 0x1e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strncpy.o) + 0x00001714 strncpy + .text.avr-libc + 0x00001732 0x2c c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o) + 0x00001732 printf + .text.avr-libc + 0x0000175e 0x60 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(snprintf.o) + 0x0000175e snprintf + .text.avr-libc + 0x000017be 0x3c2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) + 0x000017be vfprintf + .text.avr-libc + 0x00001b80 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen_P.o) + 0x00001b80 strnlen_P + .text.avr-libc + 0x00001b96 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(strnlen.o) + 0x00001b96 strnlen + .text.avr-libc + 0x00001bac 0x78 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(fputc.o) + 0x00001bac fputc + .text.avr-libc + 0x00001c24 0xbc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(ultoa_invert.o) + 0x00001c24 __ultoa_invert + .text.libgcc.prologue + 0x00001ce0 0x38 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_prologue.o) + 0x00001ce0 __prologue_saves__ + .text.libgcc.prologue + 0x00001d18 0x36 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_epilogue.o) + 0x00001d18 __epilogue_restores__ + 0x00001d4e . = ALIGN (0x2) + *(.fini9) + .fini9 0x00001d4e 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + 0x00001d4e _exit + 0x00001d4e exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00001d4e 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + *(.fini0) + 0x00001d52 _etext = . + +.data 0x00800100 0x242 load address 0x00001d52 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + *(.data*) + *(.gnu.linkonce.d*) + *(.rodata) + *(.rodata*) + .rodata.str1.1 + 0x00800100 0x16 hdlc/client.o + .rodata.fcstab + 0x00800116 0x200 hdlc/fcs.o + .rodata.str1.1 + 0x00800316 0xf LCD/Lcd_print.o + .rodata.str1.1 + 0x00800325 0x1c main.o + *(.gnu.linkonce.r*) + 0x00800342 . = ALIGN (0x2) + *fill* 0x00800341 0x1 + 0x00800342 _edata = . + 0x00800342 PROVIDE (__data_end, .) + +.bss 0x00800342 0x54 + 0x00800342 PROVIDE (__bss_start, .) + *(.bss) + *(.bss*) + .bss.dataport 0x00800342 0x1 LCD/lcdpcf8574.o + 0x00800342 dataport + *(COMMON) + COMMON 0x00800343 0x2 hdlc/client.o + 0x00800343 connecting_frame_timeout_bf + COMMON 0x00800345 0x6 LCD/Lcd_print.o + 0x00800345 textCounter + COMMON 0x0080034b 0x1 LCD/pcf8574.o + 0x0080034b pcf8574_pinstatus + COMMON 0x0080034c 0x44 UART/uart.o + 0x0080034c uartRxBuffer + 0x0080036e uartTxBuffer + COMMON 0x00800390 0x6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(iob.o) + 0x00800390 __iob + 0x00800396 PROVIDE (__bss_end, .) + 0x00001d52 __data_load_start = LOADADDR (.data) + 0x00001f94 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800396 0x0 + [!provide] PROVIDE (__noinit_start, .) + *(.noinit*) + [!provide] PROVIDE (__noinit_end, .) + 0x00800396 _end = . + [!provide] PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.user_signatures + *(.user_signatures*) + +.stab + *(.stab) + +.stabstr + *(.stabstr) + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment 0x00000000 0x8c + *(.comment) + .comment 0x00000000 0x30 hdlc/client.o + 0x31 (size before relaxing) + .comment 0x00000030 0x30 hdlc/fcs.o + 0x31 (size before relaxing) + .comment 0x00000060 0x31 hdlc/hdlc.o + .comment 0x00000060 0x31 LCD/lcdpcf8574.o + .comment 0x00000060 0x31 LCD/Lcd_print.o + .comment 0x00000060 0x31 LCD/pcf8574.o + .comment 0x00000060 0x31 LCD/twimaster.o + .comment 0x00000060 0x31 main.o + .comment 0x00000060 0x31 protocol/protocol.o + .comment 0x00000060 0x31 UART/circular_buf.o + .comment 0x00000060 0x31 UART/uart.o + .comment 0x00000060 0x31 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(printf.o) + .comment 0x00000060 0x31 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(snprintf.o) + .comment 0x00000060 0x2c c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(vfprintf_std.o) + 0x2d (size before relaxing) + .comment 0x0000008c 0x31 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(fputc.o) + .comment 0x0000008c 0x31 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(iob.o) + +.note.gnu.avr.deviceinfo + 0x00000000 0x40 + .note.gnu.avr.deviceinfo + 0x00000000 0x40 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + +.note.gnu.build-id + *(.note.gnu.build-id) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x320 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x48 hdlc/client.o + .debug_aranges + 0x00000048 0x20 hdlc/fcs.o + .debug_aranges + 0x00000068 0x68 hdlc/hdlc.o + .debug_aranges + 0x000000d0 0x90 LCD/lcdpcf8574.o + .debug_aranges + 0x00000160 0x38 LCD/Lcd_print.o + .debug_aranges + 0x00000198 0x68 LCD/pcf8574.o + .debug_aranges + 0x00000200 0x58 LCD/twimaster.o + .debug_aranges + 0x00000258 0x20 main.o + .debug_aranges + 0x00000278 0x28 protocol/protocol.o + .debug_aranges + 0x000002a0 0x40 UART/circular_buf.o + .debug_aranges + 0x000002e0 0x40 UART/uart.o + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x00000000 0x378f + *(.debug_info .gnu.linkonce.wi.*) + .debug_info 0x00000000 0x5f4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + .debug_info 0x000005f4 0x5e7 hdlc/client.o + .debug_info 0x00000bdb 0xa5 hdlc/fcs.o + .debug_info 0x00000c80 0x685 hdlc/hdlc.o + .debug_info 0x00001305 0x7d2 LCD/lcdpcf8574.o + .debug_info 0x00001ad7 0x45c LCD/Lcd_print.o + .debug_info 0x00001f33 0x54c LCD/pcf8574.o + .debug_info 0x0000247f 0x1c4 LCD/twimaster.o + .debug_info 0x00002643 0x91f main.o + .debug_info 0x00002f62 0x30c protocol/protocol.o + .debug_info 0x0000326e 0x1fc UART/circular_buf.o + .debug_info 0x0000346a 0x325 UART/uart.o + +.debug_abbrev 0x00000000 0x1589 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x5a2 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + .debug_abbrev 0x000005a2 0x1fc hdlc/client.o + .debug_abbrev 0x0000079e 0x83 hdlc/fcs.o + .debug_abbrev 0x00000821 0x194 hdlc/hdlc.o + .debug_abbrev 0x000009b5 0x266 LCD/lcdpcf8574.o + .debug_abbrev 0x00000c1b 0x163 LCD/Lcd_print.o + .debug_abbrev 0x00000d7e 0x1b6 LCD/pcf8574.o + .debug_abbrev 0x00000f34 0xe5 LCD/twimaster.o + .debug_abbrev 0x00001019 0x17c main.o + .debug_abbrev 0x00001195 0x137 protocol/protocol.o + .debug_abbrev 0x000012cc 0x175 UART/circular_buf.o + .debug_abbrev 0x00001441 0x148 UART/uart.o + +.debug_line 0x00000000 0x1e37 + *(.debug_line .debug_line.* .debug_line_end) + .debug_line 0x00000000 0x133 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + .debug_line 0x00000133 0x32b hdlc/client.o + .debug_line 0x0000045e 0x47 hdlc/fcs.o + .debug_line 0x000004a5 0x497 hdlc/hdlc.o + .debug_line 0x0000093c 0x4bb LCD/lcdpcf8574.o + .debug_line 0x00000df7 0x1e8 LCD/Lcd_print.o + .debug_line 0x00000fdf 0x36c LCD/pcf8574.o + .debug_line 0x0000134b 0x2bf LCD/twimaster.o + .debug_line 0x0000160a 0x2af main.o + .debug_line 0x000018b9 0x25e protocol/protocol.o + .debug_line 0x00001b17 0xfa UART/circular_buf.o + .debug_line 0x00001c11 0x226 UART/uart.o + +.debug_frame 0x00000000 0x9a0 + *(.debug_frame) + .debug_frame 0x00000000 0x104 hdlc/client.o + .debug_frame 0x00000104 0x24 hdlc/fcs.o + .debug_frame 0x00000128 0x178 hdlc/hdlc.o + .debug_frame 0x000002a0 0x154 LCD/lcdpcf8574.o + .debug_frame 0x000003f4 0x124 LCD/Lcd_print.o + .debug_frame 0x00000518 0xe0 LCD/pcf8574.o + .debug_frame 0x000005f8 0xa0 LCD/twimaster.o + .debug_frame 0x00000698 0x7c main.o + .debug_frame 0x00000714 0xd0 protocol/protocol.o + .debug_frame 0x000007e4 0x74 UART/circular_buf.o + .debug_frame 0x00000858 0x148 UART/uart.o + +.debug_str 0x00000000 0xcc5 + *(.debug_str) + .debug_str 0x00000000 0x208 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.2.209/gcc/dev/atmega328p/avr5/crtatmega328p.o + .debug_str 0x00000208 0x387 hdlc/client.o + 0x412 (size before relaxing) + .debug_str 0x0000058f 0x41 hdlc/fcs.o + 0x11c (size before relaxing) + .debug_str 0x000005d0 0xcf hdlc/hdlc.o + 0x302 (size before relaxing) + .debug_str 0x0000069f 0x17f LCD/lcdpcf8574.o + 0x2ca (size before relaxing) + .debug_str 0x0000081e 0xfe LCD/Lcd_print.o + 0x287 (size before relaxing) + .debug_str 0x0000091c 0x123 LCD/pcf8574.o + 0x2e3 (size before relaxing) + .debug_str 0x00000a3f 0x49 LCD/twimaster.o + 0x1c6 (size before relaxing) + .debug_str 0x00000a88 0xe8 main.o + 0x4ac (size before relaxing) + .debug_str 0x00000b70 0x7d protocol/protocol.o + 0x232 (size before relaxing) + .debug_str 0x00000bed 0x7d UART/circular_buf.o + 0x1d1 (size before relaxing) + .debug_str 0x00000c6a 0x5b UART/uart.o + 0x242 (size before relaxing) + +.debug_loc 0x00000000 0x2fe7 + *(.debug_loc) + .debug_loc 0x00000000 0x534 hdlc/client.o + .debug_loc 0x00000534 0x26 hdlc/fcs.o + .debug_loc 0x0000055a 0xb7e hdlc/hdlc.o + .debug_loc 0x000010d8 0x5b5 LCD/lcdpcf8574.o + .debug_loc 0x0000168d 0x4ac LCD/Lcd_print.o + .debug_loc 0x00001b39 0x69d LCD/pcf8574.o + .debug_loc 0x000021d6 0x12d LCD/twimaster.o + .debug_loc 0x00002303 0x21a main.o + .debug_loc 0x0000251d 0x578 protocol/protocol.o + .debug_loc 0x00002a95 0x140 UART/circular_buf.o + .debug_loc 0x00002bd5 0x412 UART/uart.o + +.debug_macinfo + *(.debug_macinfo) + +.debug_weaknames + *(.debug_weaknames) + +.debug_funcnames + *(.debug_funcnames) + +.debug_typenames + *(.debug_typenames) + +.debug_varnames + *(.debug_varnames) + +.debug_pubtypes + *(.debug_pubtypes) + +.debug_ranges 0x00000000 0x2e8 + *(.debug_ranges) + .debug_ranges 0x00000000 0x50 hdlc/client.o + .debug_ranges 0x00000050 0x10 hdlc/fcs.o + .debug_ranges 0x00000060 0x58 hdlc/hdlc.o + .debug_ranges 0x000000b8 0x98 LCD/lcdpcf8574.o + .debug_ranges 0x00000150 0x28 LCD/Lcd_print.o + .debug_ranges 0x00000178 0x58 LCD/pcf8574.o + .debug_ranges 0x000001d0 0x48 LCD/twimaster.o + .debug_ranges 0x00000218 0x40 main.o + .debug_ranges 0x00000258 0x30 protocol/protocol.o + .debug_ranges 0x00000288 0x30 UART/circular_buf.o + .debug_ranges 0x000002b8 0x30 UART/uart.o + +.debug_macro + *(.debug_macro) +OUTPUT(hdlc_screen.elf elf32-avr) +LOAD linker stubs diff --git a/hdlc_screen/Debug/hdlc_screen.srec b/hdlc_screen/Debug/hdlc_screen.srec new file mode 100644 index 0000000..33acdeb --- /dev/null +++ b/hdlc_screen/Debug/hdlc_screen.srec @@ -0,0 +1,509 @@ +S013000068646C635F73637265656E2E7372656397 +S11300000C9434000C9451000C9451000C94510045 +S11300100C9451000C9451000C9451000C94510018 +S11300200C9451000C9451000C9451000C94510008 +S11300300C9451000C9451000C9451000C945100F8 +S11300400C9451000C9451000C94100B0C9451001E +S11300500C94420B0C9451000C9451000C945100DC +S11300600C9451000C94510011241FBECFEFD8E022 +S1130070DEBFCDBF13E0A0E0B1E0E2E5FDE102C0E8 +S113008005900D92A234B107D9F723E0A2E4B3E0BE +S113009001C01D92A639B207E1F70E9426070C940D +S11300A0A70E0C940000FC0181E0808372836183BD +S11300B0709344036093430384E1838314828FEF3A +S11300C09FEF9683858390878783928781871486A1 +S11300D01386168615860895FC0183E08083808943 +S11300E0887F808B81E0878713820895FC0180815B +S11300F0823089F485E080834134510578F4828923 +S1130100887F828B118A748B638B568B458B138209 +S113011080E090E008958CEF9FEF08958FEF9FEFBC +S11301200895CF92DF92EF92FF920F931F93CF9394 +S1130130DF9300D0CDB7DEB77C016B015A834983CE +S1130140FC0180818530D1F445895689638974899D +S11301508E010F5F1F4F9601C70141960E9448030D +S1130160992364F49F938F9380E091E09F938F93FE +S11301700E94990B0F900F900F900F90F7018081C0 +S11301808330D1F48E010F5F1F4F960140E050E0A1 +S113019060E070E0C7010F960E944803992364F45D +S11301A09F938F9380E091E09F938F930E94990B8C +S11301B00F900F900F900F90F70180818430D1F44D +S11301C08E010F5F1F4F960140E050E060E070E049 +S11301D0C70147960E944803992364F49F938F9321 +S11301E080E091E09F938F930E94990B0F900F9062 +S11301F00F900F9080E090E00F900F90DF91CF91DF +S11302001F910F91FF90EF90DF90CF9008952F9260 +S11302103F924F925F926F927F928F929F92AF9292 +S1130220BF92CF92DF92EF92FF920F931F93CF93DF +S1130230DF9300D000D0CDB7DEB75C015C834B8385 +S1130240222E332E38018DB69EB6C42ED52E8DB7F0 +S11302509EB78C199D090FB6F8949EBF0FBE8DBF33 +S1130260EDB7FEB731962F01CE0103967C018F01C5 +S11302709601AB01BE016F5F7F4FC50104960E94DA +S1130280220299230CF448C08A81877090E0F5011A +S1130290238130E08217930751F084E08083808DBE +S11302A0887F808F82E0878B8AEF9FEF35C08981BA +S11302B0813049F018F08230D9F025C0F2E0CF1A2D +S11302C0D10829F40EC082E0F50180831CC0F2013C +S11302D0A22DB32D4C0C5D1C81918D93E415F50575 +S11302E0D9F7F301D182C08286E0F50180830BC087 +S11302F084E0F5018083808D887F808F82E0878B06 +S11303008AEF9FEF09C08091430390914403F50164 +S11303109283818380E090E00FB6F8949EBE0FBE76 +S11303208DBE0F900F900F900F90DF91CF911F9182 +S11303300F91FF90EF90DF90CF90BF90AF909F9080 +S11303408F907F906F905F904F903F902F90089583 +S1130350FC0121813281261B370B32832183121643 +S113036013061CF480E090E008958BEF9FEF08954E +S1130370FC01E627FF27EE0FFF1FEA5EFE4F892FE1 +S1130380992720813181822793270895FA0193E8E0 +S1130390980F923070F420813181A9014F5F5F4F33 +S11303A051834083DB01A20FB31F9DE79C9390E22E +S11303B0892720813181A9014F5F5F4F5183408399 +S11303C0FB01E20FF31F80830895982F80FF0BC079 +S11303D086958695837011F082E001C081E0929544 +S11303E09695977003C09695977080E097700895DE +S11303F0FC019081913049F018F0923061F011C005 +S113040081818770880F8061089581818295880F2A +S1130410807E8160089581818295880F807E8960C5 +S1130420089580E00895FC018FEF9FEF928381830C +S1130430968385839483838312861186108617821C +S1130440108208953F924F925F926F927F928F92A3 +S11304509F92AF92BF92CF92DF92EF92FF920F934F +S11304601F93CF93DF9300D000D0CDB7DEB70097B2 +S113047009F4EAC06115710509F4E9C04115510593 +S113048009F4E8C00115110509F4E7C0E114F10409 +S113049009F4E6C0380149017A8369839C838B831C +S11304A02115310509F499C08A01C12CD12C689415 +S11304B0442445F833243394590121E0A21AB108A5 +S11304C0AB81BC8113968D919C91149799239CF4D4 +S11304D0F80180818E3709F070C0CA14DB0420F45F +S11304E081818E3709F470C0EB81FC81878190850E +S11304F09483838362C0F80150802EE7521219C09E +S1130500CA14DB0420F421812E3709F45DC0AB81C9 +S1130510BC8117962D913C911897AC014F5F5F4FAA +S11305204217530709F450C016963C932E9315971F +S11305305DC0BDE75B1204C0EB81FC8130823DC02D +S1130540AB81BC818C91882319F01C925080542477 +S1130550652DEB81FC81818192810E94B801AB8180 +S1130560BC8112969C938E93119717962D913C9172 +S1130570189713968D919C91149702962817390712 +S113058041F4852D0E94E501E981FA8191838083FC +S113059014C0821793078CF4AB81BC8119968D919A +S11305A09C911A979C012F5F3F4F1A963C932E9370 +S11305B01997F301E80FF91F5082EB81FC818781C1 +S11305C09085019690878783FFEFCF1ADF0A0F5F2C +S11305D01F4F8C149D0409F073CFAB81BC8113961B +S11305E08D919C91149799233CF06401EB81FC81DB +S11305F025813681332334F4D7011D921C928EE079 +S113060092ED30C00496281739073CF0EB81FC8149 +S113061081819281883B904F31F0D701CD92DC9259 +S11306200EE012ED0AC0EB81FC8181859285029770 +S1130630D7018D939C930C2D1D2D8B819C810E9441 +S11306401302802F912F0EC08EE092ED0BC08EE02E +S113065092ED08C08EE092ED05C08EE092ED02C0EE +S11306608EE092ED0F900F900F900F90DF91CF914D +S11306701F910F91FF90EF90DF90CF90BF90AF90BC +S11306809F908F907F906F905F904F903F900895D0 +S11306905F926F927F928F929F92AF92BF92CF920E +S11306A0DF92EF92FF920F931F93CF93DF9300D0CB +S11306B0CDB7DEB7009709F473C06115710521F455 +S11306C04115510509F06FC02115310509F46EC0BB +S11306D00115110509F46DC0380179015A014B0166 +S11306E08C0181E090E09A8389838EE7F90180830D +S11306F06FEF8FEF9FEF0E94B8016C01AE014F5F67 +S11307005F4FB7018FEF0E94C601C8010E94F80134 +S1130710582E682FC6010E94B8016C01AE014F5FCC +S11307205F4FB701852D0E94C601F80180818111B8 +S113073019C0A114B104B1F084018A0C9B1C5801A6 +S1130740F80161918F01C6010E94B8016C01AE01EC +S11307504F5F5F4FB701F50180810E94C60180168B +S1130760910669F7C094D094AE014F5F5F4FB70113 +S11307708C2D0E94C601AE014F5F5F4FB7018D2DD6 +S11307800E94C60189819A81F701E80FF91F2EE7BB +S113079020830196F3019183808380E090E00BC075 +S11307A08EE092ED08C08EE092ED05C08EE092EDF1 +S11307B002C08EE092ED0F900F90DF91CF911F91C8 +S11307C00F91FF90EF90DF90CF90BF90AF909F90EC +S11307D08F907F906F905F900895CF93882331F02E +S11307E08091420381608093420305C0809142035B +S11307F08E7F809342038091420382608093420300 +S11308006091420380E00E94950662E080E00E94CD +S1130810D60600C064E080E00E948106C82F62E032 +S113082080E00E94DA0600C062E080E00E94D60602 +S113083000C064E080E00E948106C295C07F8F7092 +S1130840C82B62E080E00E94DA068C2FCF910895D5 +S113085080E00E94ED038823DCF300C080E00E9466 +S1130860ED03089562E080E00E94D60600C062E0D5 +S113087080E00E94DA060895CF93C82F662331F0F2 +S11308808091420381608093420305C080914203BA +S11308908E7F80934203809142038D7F8093420335 +S11308A06091420380E00E949506809142038F7715 +S11308B080934203809142038F7B80934203809113 +S11308C042038F7D80934203809142038F7E809305 +S11308D04203CC232CF4809142038068809342032A +S11308E0C6FF05C080914203806480934203C5FF24 +S11308F005C080914203806280934203C4FF05C017 +S1130900809142038061809342036091420380E0BE +S11309100E9495060E943204809142038F7780934F +S11309204203809142038F7B809342038091420370 +S11309308F7D80934203809142038F7E8093420394 +S1130940C3FF05C080914203806880934203C2FFC5 +S113095005C080914203806480934203C1FF05C0B7 +S113096080914203806280934203C0FF05C080915E +S113097042038061809342036091420380E00E94BD +S113098095060E9432048091420380618093420361 +S11309908091420380628093420380914203806489 +S11309A08093420380914203806880934203609164 +S11309B0420380E00E949506CF910895CF93C82FFB +S11309C00E94280460E08C2F0E943C04CF9108957B +S11309D0611104C080580E94DE04089580540E946E +S11309E0DE04089581E00E94DE040895882331F036 +S11309F080914203877F8093420305C08091420324 +S1130A008860809342036091420380E00E949506CF +S1130A10089582E00E94DE040895CF93C82F0E94B7 +S1130A202804CA3049F4803410F080E001C080E426 +S1130A3080580E94DE0413C0803129F460E080EC09 +S1130A400E943C0406C0803521F460E080E80E94E6 +S1130A503C040E94280461E08C2F0E943C04CF9146 +S1130A600895CF93DF93EC012196FC0180818823C4 +S1130A7029F00E940D0589918111FBCFDF91CF915F +S1130A8008951F93CF93DF93182F0E947806109236 +S1130A9042036091420380E00E94950680EA9FE051 +S1130AA00197F1F780914203806280934203809121 +S1130AB042038061809342036091420380E00E947C +S1130AC095060E94320480EE94E00197F1F70E94AB +S1130AD03204C0E1D0E0CE010197F1F70E94320464 +S1130AE0CE010197F1F7809142038F7E80934203F8 +S1130AF06091420380E00E9495060E94320421978F +S1130B00F1F788E20E94DE0488E00E94DE040E947D +S1130B10F20486E00E94DE04812F0E94DE04DF914D +S1130B20CF911F9108958DE00E9441050E9409050F +S1130B3080E00E94F6040895CF92DF92EF92FF9234 +S1130B400F931F93CF93DF938C017B01C901F801AD +S1130B5001900020E9F73197BF01601B710B0E94DF +S1130B60760B670120E1C20ED11CE7019C012E190E +S1130B703F09F80101900020E9F73197BF01601B9C +S1130B80710BC9018C0F9D1F0E94760BF801E80FB1 +S1130B90F91F80818993CC15DD0559F7F701108A77 +S1130BA0DF91CF911F910F91FF90EF90DF90CF9045 +S1130BB00895AF92BF92CF92DF92EF92FF920F937C +S1130BC01F931F930F93FF92EF925F934F933F9363 +S1130BD02F939F938F937F936F9386E193E09F93DB +S1130BE08F93BF92AF92DF92CF920E94AF0B8DB7DB +S1130BF09EB742960FB6F8949EBF0FBE8DBF1F914D +S1130C000F91FF90EF90DF90CF90BF90AF90089539 +S1130C106F927F92AF92BF92CF92DF92EF92FF9248 +S1130C200F931F93CF93DF93CDB7DEB7C254D1098F +S1130C300FB6F894DEBF0FBECDBF3C01209149032F +S1130C4030914A0341E150E0BE016F5F7F4F0E9443 +S1130C509C05F301E85BFF4FE080F1800281138182 +S1130C60349720813181428153813497608171812D +S1130C70828193810F2EF1E1AF2EB12CF02DFE0174 +S1130C8072966F010E94D90540E150E0BE016F5F8A +S1130C907F4FCE0183960E948A0B40E150E0B6015B +S1130CA0CE01C3960E948A0B60E080E00E94E804B3 +S1130CB0CE0183960E94310561E080E00E94E80441 +S1130CC0CE01C3960E943105CE5BDF4F0FB6F89478 +S1130CD0DEBF0FBECDBFDF91CF911F910F91FF906B +S1130CE0EF90DF90CF90BF90AF907F906F9008957A +S1130CF00E94DE0683E08A95F1F7000010924B0310 +S1130D00089581110EC0683070F480914B03082E51 +S1130D10000C990B02C0959587956A95E2F781704E +S1130D2008958FEF08958FEF0895CF9381110DC02B +S1130D30C62F60934B038EE40E94E4068C2F0E941E +S1130D4014070E940B0780E001C08FEFCF91089534 +S1130D50CF93DF93811124C0683020F580914B0339 +S1130D60442349F0C1E0D0E002C0CC0FDD1F6A95F6 +S1130D70E2F7C82B09C0C1E0D0E002C0CC0FDD1FF0 +S1130D806A95E2F7C095C823C0934B038EE40E9492 +S1130D90E4068C2F0E9414070E940B0780E003C016 +S1130DA08FEF01C08FEFDF91CF91089541E00E9452 +S1130DB0A806089540E00E94A80608951092B9007C +S1130DC08DEF8093B800089594EA9093BC00ECEB07 +S1130DD0F0E090819923ECF79091B900987F9830D6 +S1130DE011F09031A1F48093BB0084E88093BC009F +S1130DF0ECEBF0E080818823ECF79091B900987FC8 +S1130E00983139F081E0903429F480E0089581E04C +S1130E10089580E0089584E98093BC00ECEBF0E051 +S1130E20808184FDFDCF08958093BB0084E8809386 +S1130E30BC00ECEBF0E080818823ECF79091B900E2 +S1130E40987F81E0983209F480E008954F925F9290 +S1130E506F927F928F929F92AF92BF92CF92DF92C6 +S1130E60EF92FF920F931F93CF93DF93CDB7DEB72B +S1130E70C350D2400FB6F894DEBF0FBECDBF0E9460 +S1130E8093050E949E0A68EC70E0CE0101960E94D0 +S1130E905300CE0101960E946C004AE050E0BE016E +S1130EA0665E7F4FCE0101960E9491006AE070E079 +S1130EB0CE014A960E94AA0A64E170E0CE018051F4 +S1130EC09E4F0E94CE0A61E070E0CE0101960E941E +S1130ED0A801059681F44AE050E0BE01665E7F4FAA +S1130EE0CE0101960E9491006AE070E0CE014A961C +S1130EF00E94AA0AE1CF00E010E020E030E044E1E3 +S1130F0050E0BE0160517E4FCE0101960E94070160 +S1130F108C019923ACF40A3F8FEF1807B1F444E134 +S1130F2050E0BE01605A7E4FCE0101960E949100AE +S1130F3064E170E0CE01805A9E4F0E94AA0A05C067 +S1130F408981823009F0B8CF03C0802F912FFEC071 +S1130F5084EA90E7ADE9BFE38CA39DA3AEA3BFA34E +S1130F608DEC9CECA0EBB1E488A799A7AAA7BBA73A +S1130F7080E090E0A8ECB2E48CA79DA7AEA7BFA741 +S1130F8083E090E099AB88AB85E293E09BAB8AABBE +S1130F9082E090E09DAB8CAB2E01E6E74E0E511C37 +S1130FA05F924F923E01F6E36F0E711C7F926F9237 +S1130FB08CA09DA0AEA0BFA0C8A4D9A4EAA4FBA401 +S1130FC00CA51DA52EA53FA548A959A96AA97BA9C9 +S1130FD08CA99DA90E945C09F20140815181B30151 +S1130FE0CE0101960E94760048E450E0BE016858A4 +S1130FF07F4FCE0101960E94910068E470E0CE011B +S113100088589F4F0E94AA0A0F900F900F900F903C +S113101060E970E0CE01805A9E4F0E94CE0A61E0E2 +S113102070E0CE0101960E94A801059689F448E477 +S113103050E0BE0168587F4FCE0101960E94910096 +S113104068E470E0CE0188589F4F0E94AA0AE0CF5E +S11310508E0113959E0120543F4F40E950E0BE019C +S1131060605A7E4FCE0101960E9407018C0199239C +S11310709CF40696B1F444E150E0BE0160517E4F09 +S1131080CE0101960E94910064E170E0CE0180518E +S11310909E4F0E94AA0A05C08981863009F0B8CF04 +S11310A003C0802F912F52C0C050DF4F68817981D7 +S11310B0C050D140AE014E5F5E4FCE0180549F4F71 +S11310C00E94BE08CE5FDE4F88819981AA81BB81D0 +S11310D0C250D140CC5ADE4F88839983AA83BB8304 +S11310E0C455D140CA5FDE4F88819981AA81BB81F2 +S11310F0C650D140C85ADE4F88839983AA83BB83E4 +S1131100C855D140C65FDE4F88819981AA81BB81D1 +S1131110CA50D140C45ADE4F88839983AA83BB83C3 +S1131120CC55D140C05FDE4F68817981C051D14038 +S11311304FE350E0CE018C5E9E4F0E948A0BCE019D +S11311408C5E9E4F0E94080680E090E0CD5FDD4FEC +S11311500FB6F894DEBF0FBECDBFDF91CF911F91C4 +S11311600F91FF90EF90DF90CF90BF90AF909F9042 +S11311708F907F906F905F904F9008958F929F9281 +S1131180AF92BF92CF92DF92EF92FF920F931F9391 +S1131190CF93DF93CDB7DEB7C054D1090FB6F8941F +S11311A0DEBF0FBECDBF4B01672B09F46CC020E03E +S11311B030E060E070E0A12CB12C6E01E5E0CE0ED1 +S11311C0D11CFE0131967F01FC01E20FF31F208147 +S11311D0211127C0DB011196A80FB91FFE0131961A +S11311E02D912193EC15FD05D9F76C5F7F4FF50127 +S11311F0EE0FFF1FEE0FFF1FE40FF51F09811A8189 +S11312002B813C810083118322833383FA0124855B +S113121035852F5F3F4F3587248795012F5F3F4FDB +S11312205901FC01E60FF71F2081213021F59B01B4 +S11312302F5F3F4FFC01E20FF31FE081EE2399F093 +S11312406E5F7F4FDC01A60FB71FF701B9016F5F17 +S11312507F4F2D91219330E08F010E191F09021742 +S11312601307ACF301C0B90129813A81FA01378728 +S11312702687118A108A6F5F7F4F9B016815790555 +S113128008F4A2CF02C0A12CB12CFA01B586A48621 +S1131290C05CDF4F0FB6F894DEBF0FBECDBFDF9149 +S11312A0CF911F910F91FF90EF90DF90CF90BF905F +S11312B0AF909F908F9008954F925F926F927F921C +S11312C08F929F92AF92BF92CF92DF92EF92FF9252 +S11312D00F931F93CF93DF93CDB7DEB7C255D109D8 +S11312E00FB6F894DEBF0FBECDBF22968FAE229705 +S11312F023969FAE23972496AFAE24972596BFAE30 +S113130025972696CFAE26972796DFAE2797289661 +S1131310EFAE28972996FFAE29972A960FAF2A9702 +S11313202B961FAF2B972C962FAF2C972D963FAF54 +S11313302D972E964FAF2E972F965FAF2F976096CF +S11313406FAF609761967FAF619762968FAF629738 +S113135063969FAF6397A7960EAD1FADA7972F9681 +S1131360CEACDFAC2F9763966EAD7FAD6397C1149F +S1131370D10409F466C07801CE018F5B9F4F5601FA +S1131380AA0CBB1CAA0CBB1CA80EB91EAE014B5F59 +S11313905F4FF7011192DC014D905D906D907D904F +S11313A0CD0149825A826B827C82DE0111963D9185 +S11313B03193A417B507D9F7B5E0EB0EF11C8A15E4 +S11313C09B0539F79601220F331F220F331F2C0D73 +S11313D03D1D6115710509F1D801A20FB31F81E00C +S11313E08C93D9011196A00FB11F2E5F3F4F6C93C0 +S11313F061968EAD9FAD61979A838983DE011196C4 +S1131400F801E20FF31F80E090E02F5F3F4F4D9112 +S11314104193019686179707C0F3A996EEADFFADE9 +S1131420A9973183208313C081E0F801808361830D +S113143061968EAD9FAD61979A83898322E030E0F7 +S1131440DDCF6115710581F720E030E0E6CFCE5A9B +S1131450DF4F0FB6F894DEBF0FBECDBFDF91CF9143 +S11314601F910F91FF90EF90DF90CF90BF90AF90BE +S11314709F908F907F906F905F904F900895FC01A4 +S113148081E090E030A121A1321711F080E090E0DA +S11314900895FC0121A130E02F5F3F4F2F71307878 +S11314A0332334F421503109206E3F6F2F5F3F4FB7 +S11314B0FC0140A150E081E090E02417350711F0D1 +S11314C080E090E008951F93CF93DF93EC01162FF3 +S11314D00E94490A892B81F489A190E0FE01E80F5A +S11314E0F91F108301968F719078992324F4019742 +S11314F0806E9F6F019689A3DF91CF911F9108950C +S1131500FC0120A181A12817B1F030E0DF01A20F76 +S1131510B31F4C9150E02F5F3F4F2F71307833232E +S113152034F421503109206E3F6F2F5F3F4F20A3C9 +S1131530842F952F08958FEF9FEF089588EF809360 +S1131540C10086E08093C2001092C50087E68093B4 +S1131550C40008950F931F93CF93DF936115710512 +S113156099F08C01EC01060F171F8EE693E00E94A0 +S1131570490A892B49F4699170E08EE693E00E9450 +S1131580630AC017D10789F7E1ECF0E08081806439 +S11315908083DF91CF911F910F9108958F929F9235 +S11315A0AF92BF92CF92DF92EF92FF920F931F936D +S11315B0CF93DF938B01EC01C12CD12C76014B012D +S11315C0A12CB12C0AC08CE493E00E94800A899378 +S11315D08FEFC81AD80AE80AF80A8CE493E00E944C +S11315E03F0A892B29F4C814D904EA04FB0458F3EC +S11315F020E030E00C151D052E053F0510F0C60156 +S113160002C08FEF9FEFDF91CF911F910F91FF9059 +S1131610EF90DF90CF90BF90AF909F908F90089500 +S11316201F920F920FB60F9211242F933F934F9353 +S11316305F936F937F938F939F93AF93BF93CF9356 +S1131640EF93FF93C091C6008CE493E00E94490A93 +S1131650892B31F46C2F70E08CE493E00E94630AD0 +S1131660FF91EF91CF91BF91AF919F918F917F9116 +S11316706F915F914F913F912F910F900FBE0F90FB +S11316801F9018951F920F920FB60F9211242F934B +S11316903F934F935F936F937F938F939F93AF93F6 +S11316A0BF93EF93FF938EE693E00E943F0A892B4A +S11316B039F48EE693E00E94800A8093C60005C048 +S11316C0E1ECF0E080818F7B8083FF91EF91BF910B +S11316D0AF919F918F917F916F915F914F913F91C6 +S11316E02F910F900FBE0F901F901895AA1BBB1B34 +S11316F051E107C0AA1FBB1FA617B70710F0A61B0E +S1131700B70B881F991F5A95A9F780959095BC012E +S1131710CD010895FB01DC014150504048F0019097 +S11317200D920020C9F701C01D9241505040E0F7CE +S11317300895A0E0B0E0EFE9FBE00C94800EAE0168 +S11317404B5F5F4FFA0161917191AF0180919203F8 +S1131750909193030E94DF0BE2E00C949C0EAEE0A8 +S1131760B0E0E5EBFBE00C947E0E0D891E898F89B9 +S1131770988D26E02C831A83098397FF02C080E0AA +S113178090E801979E838D83AE01455E5F4F698D1E +S11317907A8DCE0101960E94DF0B4D815E8157FD4B +S11317A00AC02F813885421753070CF49A01F801B7 +S11317B0E20FF31F10822E96E4E00C949A0EABE035 +S11317C0B0E0E5EEFBE00C94700E6C017B018A0145 +S11317D0FC0117821682838181FFCCC1CE01019660 +S11317E03C01F6019381F70193FD859193FF81916B +S11317F07F01882309F4BAC1853239F493FD8591B8 +S113180093FF81917F01853229F4B60190E00E9413 +S1131810D60DE7CF912C212C312CFFE1F315D8F014 +S11318208B3279F038F4803279F08332A1F4232DAD +S113183020611DC08D3261F0803369F4232D216055 +S113184016C0832D8260382EE32DE4603E2E2AC01C +S1131850F32DF8601DC037FC2DC020ED280F2A3071 +S113186040F08E32B9F436FC81C1232D2064322E2F +S113187019C036FE06C08AE0989E200D1124922ECF +S113188011C0EAE02E9E200D1124222EF32DF062C9 +S11318903F2E08C08C3621F4832D8068382E02C078 +S11318A0883641F4F70193FD859193FF81917F017F +S11318B08111B3CF982F9F7D9554933028F40C5FFA +S11318C01F4F9FE399830DC0833631F0833771F046 +S11318D0833509F059C021C0F801808189830E5FE6 +S11318E01F4F88248394912C530113C02801F2E0E4 +S11318F04F0E511CF801A080B18036FE03C0692D43 +S113190070E002C06FEF7FEFC5010E94CB0D4C0168 +S11319108201F32DFF773F2E16C0280122E0420EEC +S1131920511CF801A080B18036FE03C0692D70E01F +S113193002C06FEF7FEFC5010E94C00D4C01F32D73 +S1131940F0683F2E820133FC1BC0822D90E0881684 +S11319509906B0F4B60180E290E00E94D60D2A9474 +S1131960F4CFF50137FC859137FE81915F01B60113 +S113197090E00E94D60D21102A9421E0821A910849 +S11319808114910471F7E8C0843611F0893641F569 +S1131990F80137FE07C060817181828193810C5FF9 +S11319A01F4F08C060817181072E000C880B990BB2 +S11319B00E5F1F4FF32DFF763F2E97FF09C09095C2 +S11319C08095709561957F4F8F4F9F4FF0683F2EA4 +S11319D02AE030E0A3010E94120E882E861845C02A +S11319E0853731F4232D2F7EB22E2AE030E025C036 +S11319F0932D997FB92E8F36C1F018F4883579F07C +S1131A00B5C0803719F0883721F0B0C0E92FE06104 +S1131A10BE2EB4FE0DC0FB2DF460BF2E09C034FEF3 +S1131A200AC0292F2660B22E06C028E030E005C087 +S1131A3020E130E002C020E132E0F801B7FE07C047 +S1131A4060817181828193810C5F1F4F06C0608128 +S1131A50718180E090E00E5F1F4FA3010E94120E7F +S1131A60882E8618FB2DFF773F2E36FE0DC0232DC2 +S1131A702E7FA22E891458F434FE0BC032FC09C008 +S1131A80832D8E7EA82E05C0B82CA32C03C0B82CA1 +S1131A9001C0B92CA4FE0FC0FE01E80DF11D808128 +S1131AA0803321F49A2D997EA92E09C0A2FE06C086 +S1131AB0B394B39404C08A2D867809F0B394A3FC3C +S1131AC011C0A0FE06C0B21488F4280C922C9B18F6 +S1131AD00EC0B21460F4B60180E290E00E94D60D0C +S1131AE0B394F7CFB21418F42B1802C0982C212CFD +S1131AF0A4FE10C0B60180E390E00E94D60DA2FEC1 +S1131B0017C0A1FC03C088E790E002C088E590E01C +S1131B10B6010CC08A2D867859F0A1FE02C08BE272 +S1131B2001C080E2A7FC8DE2B60190E00E94D60DD0 +S1131B30891438F4B60180E390E00E94D60D9A949B +S1131B40F7CF8A94F301E80DF11D8081B60190E08E +S1131B500E94D60D8110F5CF222009F442CEB601A1 +S1131B6080E290E00E94D60D2A94F6CFF601868199 +S1131B70978102C08FEF9FEF2B96E2E10C948C0EBD +S1131B80FC010590615070400110D8F78095909544 +S1131B908E0F9F1F0895FC01615070400190011049 +S1131BA0D8F7809590958E0F9F1F08950F931F93DC +S1131BB0CF93DF93FB01238121FD03C08FEF9FEFC0 +S1131BC02CC022FF16C046815781248135814217DB +S1131BD0530744F4A081B1819D012F5F3F4F3183AE +S1131BE020838C93268137812F5F3F4F3783268351 +S1131BF014C08B01EC01FB010084F185E02D0995F3 +S1131C00892BE1F6D80116968D919C911797019630 +S1131C1017969C938E931697CE01DF91CF911F91C7 +S1131C200F910895FA01AA27283051F1203181F14A +S1131C30E8946F936E7F6E5F7F4F8F4F9F4FAF4FD0 +S1131C40B1E03ED0B4E03CD0670F781F891F9A1FE3 +S1131C50A11D680F791F8A1F911DA11D6A0F711D97 +S1131C60811D911DA11D20D009F468943F912AE0A3 +S1131C70269F11243019305D3193DEF6CF0108958B +S1131C80462F4770405D4193B3E00FD0C9F7F6CFBC +S1131C90462F4F70405D4A3318F0495D31FD405284 +S1131CA0419302D0A9F7EACFB4E0A695979587951A +S1131CB077956795BA95C9F70097610571050895F9 +S1131CC09B01AC010A2E06945795479537952795A5 +S1131CD0BA95C9F7620F731F841F951FA01D08953D +S1131CE02F923F924F925F926F927F928F929F9228 +S1131CF0AF92BF92CF92DF92EF92FF920F931F9316 +S1131D00CF93DF93CDB7DEB7CA1BDB0B0FB6F894C6 +S1131D10DEBF0FBECDBF09942A88398848885F8406 +S1131D206E847D848C849B84AA84B984C884DF8077 +S1131D30EE80FD800C811B81AA81B981CE0FD11D5B +S1131D400FB6F894DEBF0FBECDBFED010895F89431 +S1051D50FFCFBF +S1131D5265727220696E206765745F6672616D6573 +S1131D623A2025640A000000891112239B3224467A +S1131D72AD573665BF74488CC19D5AAFD3BE6CCA89 +S1131D82E5DB7EE9F7F88110080193331A22A556A0 +S1131D922C47B7753E64C99C408DDBBF52AEEDDA69 +S1131DA264CBFFF976E802218B301002991326677F +S1131DB2AF763444BD554AADC3BC588ED19F6EEB49 +S1131DC2E7FA7CC8F5D983310A2091121803A77760 +S1131DD22E66B5543C45CBBD42ACD99E508FEFFB29 +S1131DE266EAFDD874C904428D5316619F702004BB +S1131DF2A9153227BB364CCEC5DF5EEDD7FC688809 +S1131E02E1997AABF3BA85520C4397711E60A1141F +S1131E122805B3373A26CDDE44CFDFFD56ECE998E8 +S1131E226089FBBB72AA06638F7214409D512225FE +S1131E32AB343006B9174EEFC7FE5CCCD5DD6AA9C8 +S1131E42E3B8788AF19B87730E6295501C41A335DF +S1131E522A24B1163807CFFF46EEDDDC54CDEBB9A8 +S1131E6262A8F99A708B088481951AA793B62CC23A +S1131E72A5D33EE1B7F04008C919522BDB3A644EB0 +S1131E82ED5F766DFF7C899400859BB712A6ADD277 +S1131E9224C3BFF136E0C1184809D33B5A2AE55E90 +S1131EA26C4FF77D7E6C0AA583B4188691972EE356 +S1131EB2A7F23CC0B5D14229CB38500AD91B666F70 +S1131EC2EF7E744CFD5D8BB502A499961087AFF337 +S1131ED226E2BDD034C1C3394A28D11A580BE77F50 +S1131EE26E6EF55C7C4D0CC685D71EE597F4288092 +S1131EF2A1913AA3B3B2444ACD5B5669DF78600C30 +S1131F02E91D722FFB3E8DD604C79FF516E4A990F6 +S1131F122081BBB332A2C55A4C4BD7795E68E11C0F +S1131F22680DF33F7A2E0EE787F61CC495D52AA1D5 +S1131F32A3B03882B193466BCF7A5448DD59622DEF +S1131F42EB3C700EF91F8FF706E69DD414C5ABB1B6 +S1131F5222A0B9923083C77B4E6AD5585C49E33DCF +S1131F626A2CF11E780F252E32662E252E32662E0D +S1131F72252E326600776F72642077617220696E53 +S1131F82206E657720776F726C6420696F206578A4 +S1051F92000049 +S9030000FC diff --git a/hdlc_screen/Debug/main.d b/hdlc_screen/Debug/main.d new file mode 100644 index 0000000..90f9c28 --- /dev/null +++ b/hdlc_screen/Debug/main.d @@ -0,0 +1,45 @@ +main.d main.o: .././main.c .././hdlc/client.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h \ + .././hdlc/hdlc.h .././hdlc/fcs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\errno.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ + .././UART/uart.h .././LCD/lcd.h .././Protocol/protocol.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h + +.././hdlc/client.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h: + +.././hdlc/hdlc.h: + +.././hdlc/fcs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\errno.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: + +.././UART/uart.h: + +.././LCD/lcd.h: + +.././Protocol/protocol.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h: diff --git a/hdlc_screen/Debug/main.o b/hdlc_screen/Debug/main.o new file mode 100644 index 0000000000000000000000000000000000000000..b64a83369c47b93ea54a99be520fbef56d7f61bd GIT binary patch literal 12364 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 literal 0 HcmV?d00001 diff --git a/hdlc_screen/Debug/makedep.mk b/hdlc_screen/Debug/makedep.mk new file mode 100644 index 0000000..3b06a79 --- /dev/null +++ b/hdlc_screen/Debug/makedep.mk @@ -0,0 +1,26 @@ +################################################################################ +# Automatically-generated file. Do not edit or delete the file +################################################################################ + +hdlc\client.c + +hdlc\fcs.c + +hdlc\hdlc.c + +LCD\lcdpcf8574.c + +LCD\Lcd_print.c + +LCD\pcf8574.c + +LCD\twimaster.c + +main.c + +protocol\protocol.c + +UART\circular_buf.c + +UART\uart.c + diff --git a/hdlc_screen/Debug/protocol/protocol.d b/hdlc_screen/Debug/protocol/protocol.d new file mode 100644 index 0000000..492f731 --- /dev/null +++ b/hdlc_screen/Debug/protocol/protocol.d @@ -0,0 +1,28 @@ +protocol/protocol.d protocol/protocol.o: ../protocol/protocol.c \ + ../protocol/protocol.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h + +../protocol/protocol.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\string.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stddef.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdlib.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdio.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdarg.h: diff --git a/hdlc_screen/Debug/protocol/protocol.o b/hdlc_screen/Debug/protocol/protocol.o new file mode 100644 index 0000000000000000000000000000000000000000..f5f9eccb4de654ef2b0663531113ee1e514a255f GIT binary patch literal 10640 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 literal 0 HcmV?d00001 diff --git a/Lсd_print/Lcd_print.cpp b/hdlc_screen/LCD/Lcd_print.c similarity index 50% rename from Lсd_print/Lcd_print.cpp rename to hdlc_screen/LCD/Lcd_print.c index 3c59604..848976e 100644 --- a/Lсd_print/Lcd_print.cpp +++ b/hdlc_screen/LCD/Lcd_print.c @@ -1,31 +1,24 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -struct DisplayData { - char topLine[64]; - float value1; - float value2; - float value3; -}; +#include "lcd_headers.h" +#include "lcd.h" +//#include "time.h" +// #include +//#include struct TextCounter { unsigned long startTime; int incrementValue; }; -TextCounter textCounter; +struct TextCounter textCounter; + +//struct TextCounter textCounter; void Lcd_inciliation() { lcd_init(LCD_DISP_ON_BLINK); // инициализация дисплея lcd_home(); // домой курсор lcd_led(0); // вкл подсветки - textCounter.startTime = millis(); // Запоминаем время запуска программы + //textCounter.startTime = millis(); // Запоминаем время запуска программы + //Из за строчки выше все ломается } void fillBuffer1(const char* source, char* buffer, size_t bufferSize, int incrementValue) { @@ -42,30 +35,30 @@ void fillBuffer2(float value1, float value2, float value3, char* buffer, size_t snprintf(buffer, bufferSize, "%.2f.%.2f.%.2f", value1, value2, value3); } -void printLcd(struct message* decode_message) { - unsigned long currentTime = millis(); // Текущее время +void printLcd(struct DisplayData* displayData) { + //unsigned long currentTime = millis(); // Текущее время // Проверяем, прошло ли 500 мс с момента последнего увеличения incrementValue - if (currentTime - textCounter.startTime >= 500) { - textCounter.incrementValue++; // Увеличиваем incrementValue на 1 - textCounter.startTime = currentTime; // Обновляем время - } + //if (currentTime - textCounter.startTime >= 500) { + // textCounter.incrementValue++; // Увеличиваем incrementValue на 1 + // textCounter.startTime = currentTime; // Обновляем время + //} - struct DisplayData displayData; - strncpy(displayData.topLine, decode_message->str, sizeof(displayData.topLine) - 1); - displayData.topLine[sizeof(displayData.topLine) - 1] = '\0'; - displayData.value1 = decode_message->numbers[0]; - displayData.value2 = decode_message->numbers[1]; - displayData.value3 = decode_message->numbers[2]; + //struct DisplayData displayData; + //strncpy(displayData.topLine, decode_message->str, sizeof(displayData.topLine) - 1); + //displayData.topLine[sizeof(displayData.topLine) - 1] = '\0'; + //displayData.value1 = displayDataResp->value1; + //displayData.value2 = displayDataResp->value2; + //displayData.value3 = displayDataResp->value3; // Буферы для заполнения данных char buffer1[17]; char buffer2[17]; // Заполнение буфера 1 - fillBuffer1(displayData.topLine, buffer1, sizeof(buffer1), textCounter.incrementValue); + fillBuffer1(displayData->topLine, buffer1, sizeof(buffer1), textCounter.incrementValue); // Заполнение буфера 2 - fillBuffer2(displayData.value1, displayData.value2, displayData.value3, buffer2, sizeof(buffer2)); + fillBuffer2(displayData->value1, displayData->value2, displayData->value3, buffer2, sizeof(buffer2)); // Создание массива для вывода на дисплей char displayArray[32]; @@ -80,21 +73,21 @@ void printLcd(struct message* decode_message) { lcd_puts(displayArray + 16); // Вывод второй половины displayArray } -void dder() { - Lcd_inciliation(); - - uint8_t encode_message[100]; - size_t len_encode_message = 0; - struct message message; - - - // Получаем данные из протокола - protocol_encode(message, encode_message, &len_encode_message); - - // Декодируем данные из протокола - struct message decode_message; - protocol_decode(encode_message, len_encode_message, &decode_message); - - // Выводим данные на экран - printLcd(&decode_message); -} \ No newline at end of file +//void dder() { +// Lcd_inciliation(); +// +// uint8_t encode_message[100]; +// size_t len_encode_message = 0; +// struct message message; +// +// +// // Получаем данные из протокола +// protocol_encode(message, encode_message, &len_encode_message); +// +// // Декодируем данные из протокола +// struct message decode_message; +// protocol_decode(encode_message, len_encode_message, &decode_message); +// +// // Выводим данные на экран +// printLcd(&decode_message); +//} \ No newline at end of file diff --git a/MyLCD/i2cmaster.h b/hdlc_screen/LCD/i2cmaster.h similarity index 100% rename from MyLCD/i2cmaster.h rename to hdlc_screen/LCD/i2cmaster.h diff --git a/hdlc_screen/LCD/lcd.h b/hdlc_screen/LCD/lcd.h new file mode 100644 index 0000000..f3ca4bc --- /dev/null +++ b/hdlc_screen/LCD/lcd.h @@ -0,0 +1,14 @@ +#ifndef Lsd_print_h +#define Lsd_print_h + +struct DisplayData { + char topLine[64]; + float value1; + float value2; + float value3; +}; + +void Lcd_inciliation(); +void printLcd(struct DisplayData* displayData); + +#endif \ No newline at end of file diff --git a/main_sketch/MyLCD.h b/hdlc_screen/LCD/lcd_headers.h similarity index 66% rename from main_sketch/MyLCD.h rename to hdlc_screen/LCD/lcd_headers.h index f9d17f9..d4d9291 100644 --- a/main_sketch/MyLCD.h +++ b/hdlc_screen/LCD/lcd_headers.h @@ -1,9 +1,14 @@ - -#ifndef MYLCD_H_ -#define MYLCD_H_ +/* + * lcd_headers.h + * + * Created: 22.02.2024 15:16:19 + * Author: 79513 + */ -// ���������� ��� ���� +#ifndef LCD_HEADERS_H_ +#define LCD_HEADERS_H_ + #include #include #include @@ -18,5 +23,4 @@ #include "pcf8574.h" #include "i2cmaster.h" - -#endif \ No newline at end of file +#endif /* LCD_HEADERS_H_ */ \ No newline at end of file diff --git a/main_sketch/lcdpcf8574.cpp b/hdlc_screen/LCD/lcdpcf8574.c similarity index 99% rename from main_sketch/lcdpcf8574.cpp rename to hdlc_screen/LCD/lcdpcf8574.c index c5808d5..24d09ff 100644 --- a/main_sketch/lcdpcf8574.cpp +++ b/hdlc_screen/LCD/lcdpcf8574.c @@ -1,4 +1,4 @@ -#include "MyLCD.h" +#include "lcd_headers.h" // задержеки через асемблер #define lcd_e_delay() __asm__ __volatile__( "rjmp 1f\n 1:" ); diff --git a/MyLCD/lcdpcf8574.h b/hdlc_screen/LCD/lcdpcf8574.h similarity index 100% rename from MyLCD/lcdpcf8574.h rename to hdlc_screen/LCD/lcdpcf8574.h diff --git a/main_sketch/pcf8574.cpp b/hdlc_screen/LCD/pcf8574.c similarity index 99% rename from main_sketch/pcf8574.cpp rename to hdlc_screen/LCD/pcf8574.c index e93f3d8..de5ebf6 100644 --- a/main_sketch/pcf8574.cpp +++ b/hdlc_screen/LCD/pcf8574.c @@ -1,4 +1,4 @@ -#include "MyLCD.h" +#include "lcd_headers.h" uint8_t pcf8574_pinstatus[PCF8574_MAXDEVICES]; // инициализация pcf diff --git a/MyLCD/pcf8574.h b/hdlc_screen/LCD/pcf8574.h similarity index 100% rename from MyLCD/pcf8574.h rename to hdlc_screen/LCD/pcf8574.h diff --git a/main_sketch/twimaster.cpp b/hdlc_screen/LCD/twimaster.c similarity index 99% rename from main_sketch/twimaster.cpp rename to hdlc_screen/LCD/twimaster.c index 2fad0d7..6019a42 100644 --- a/main_sketch/twimaster.cpp +++ b/hdlc_screen/LCD/twimaster.c @@ -1,4 +1,4 @@ -#include "MyLCD.h" +#include "lcd_headers.h" // инициализация интерфейса i2c void i2c_init(void) diff --git a/hdlc_screen/Readme.md b/hdlc_screen/Readme.md new file mode 100644 index 0000000..e63e9d8 --- /dev/null +++ b/hdlc_screen/Readme.md @@ -0,0 +1,15 @@ +# Устройство с дисплеем на AVR +* Команда: Лежнин Роман, Куршаков Кирилл, Деркачев Андрей, Чертков Максим + +Лежнин Роман +* Главный в группе +* Внедрение протокола HDLC и разработка протокола + +Куршаков Кирилл +* Внедрение протокола UART + +Чертков Максим +* Отрисовка данных на дисплей + +Деркачев Андрей +* Соединения и рефактор блоков UART, HDLC и вывода \ No newline at end of file diff --git a/UART/circular_buf.c b/hdlc_screen/UART/circular_buf.c similarity index 100% rename from UART/circular_buf.c rename to hdlc_screen/UART/circular_buf.c diff --git a/UART/circular_buf.h b/hdlc_screen/UART/circular_buf.h similarity index 100% rename from UART/circular_buf.h rename to hdlc_screen/UART/circular_buf.h diff --git a/hdlc/client.c b/hdlc_screen/hdlc/client.c similarity index 100% rename from hdlc/client.c rename to hdlc_screen/hdlc/client.c diff --git a/hdlc/client.h b/hdlc_screen/hdlc/client.h similarity index 100% rename from hdlc/client.h rename to hdlc_screen/hdlc/client.h diff --git a/hdlc/fcs.c b/hdlc_screen/hdlc/fcs.c similarity index 100% rename from hdlc/fcs.c rename to hdlc_screen/hdlc/fcs.c diff --git a/hdlc/fcs.h b/hdlc_screen/hdlc/fcs.h similarity index 100% rename from hdlc/fcs.h rename to hdlc_screen/hdlc/fcs.h diff --git a/hdlc/hdlc.c b/hdlc_screen/hdlc/hdlc.c similarity index 100% rename from hdlc/hdlc.c rename to hdlc_screen/hdlc/hdlc.c diff --git a/hdlc/hdlc.h b/hdlc_screen/hdlc/hdlc.h similarity index 98% rename from hdlc/hdlc.h rename to hdlc_screen/hdlc/hdlc.h index 12ddaa1..2798da9 100644 --- a/hdlc/hdlc.h +++ b/hdlc_screen/hdlc/hdlc.h @@ -7,7 +7,8 @@ #include "fcs.h" #include -#include "stdint.h" +#include +#include /** HDLC start/end flag sequence */ #define HDLC_FLAG_SEQUENCE 0x7E diff --git a/hdlc_screen/hdlc_screen.componentinfo.xml b/hdlc_screen/hdlc_screen.componentinfo.xml new file mode 100644 index 0000000..7473b85 --- /dev/null +++ b/hdlc_screen/hdlc_screen.componentinfo.xml @@ -0,0 +1,86 @@ + + + + + + + Device + Startup + + + Atmel + 1.2.0 + D:/atmelstudio\7.0\Packs + + + + + D:/atmelstudio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include + + include + C + + + include + + + + + D:/atmelstudio\7.0\Packs\atmel\ATmega_DFP\1.2.209\include\avr\iom328p.h + + header + C + UMk4QUzkkuShabuoYtNl/Q== + + include/avr/iom328p.h + + + + + D:/atmelstudio\7.0\Packs\atmel\ATmega_DFP\1.2.209\templates\main.c + template + source + C Exe + 7MqOviI+fX8DsJg4frGlyg== + + templates/main.c + Main file (.c) + + + + D:/atmelstudio\7.0\Packs\atmel\ATmega_DFP\1.2.209\templates\main.cpp + template + source + C Exe + YXFphlh0CtZJU+ebktABgQ== + + templates/main.cpp + Main file (.cpp) + + + + D:/atmelstudio\7.0\Packs\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p + + libraryPrefix + GCC + + + gcc/dev/atmega328p + + + + + ATmega_DFP + D:/atmelstudio/7.0/Packs/atmel/ATmega_DFP/1.2.209/Atmel.ATmega_DFP.pdsc + 1.2.209 + true + ATmega328P + + + + Resolved + Fixed + true + + + \ No newline at end of file diff --git a/hdlc_screen/hdlc_screen.cproj b/hdlc_screen/hdlc_screen.cproj new file mode 100644 index 0000000..541f3ef --- /dev/null +++ b/hdlc_screen/hdlc_screen.cproj @@ -0,0 +1,185 @@ + + + + 2.0 + 7.0 + com.Atmel.AVRGCC8.C + dce6c7e3-ee26-4d79-826b-08594b9ad897 + ATmega328P + none + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + hdlc_screen + hdlc_screen + hdlc_screen + Native + true + false + true + true + 0x20000000 + + true + exception_table + 2 + 0 + 0 + + + + + + -mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" + True + True + True + True + False + True + True + + + NDEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include + + + Optimize for size (-Os) + True + True + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include + + + + + + + + + -mmcu=atmega328p -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\gcc\dev\atmega328p" + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include + + + Optimize (-O1) + True + True + Default (-g2) + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.2.209\include + + + Default (-Wa,-g) + + + + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + compile + + + + + + + + + + \ No newline at end of file diff --git a/MyLCD/keywords.txt b/hdlc_screen/keywords.txt similarity index 100% rename from MyLCD/keywords.txt rename to hdlc_screen/keywords.txt diff --git a/main.c b/hdlc_screen/main.c similarity index 90% rename from main.c rename to hdlc_screen/main.c index 9c9bf50..ccebf62 100644 --- a/main.c +++ b/hdlc_screen/main.c @@ -1,12 +1,10 @@ -//#include "Lсd_print/lcd.h" #include "hdlc/client.h" #include "UART/uart.h" #include "stdbool.h" -//#include "stdio.h" -#include "Lсd_print/lcd.h" -//#include "protocol.h" +#include "LCD/lcd.h" +#include "Protocol/protocol.h" -int main() { +int main(void) { struct Client hdlc; bool flag_connection = false; @@ -103,8 +101,15 @@ int main() { struct message resp; protocol_decode(data_recive, len_data_recive, &resp); + + struct DisplayData disp; + disp.value1 = resp.numbers[0]; + disp.value2 = resp.numbers[1]; + disp.value3 = resp.numbers[2]; + //disp.topLine = *resp.str; + strncpy(disp.topLine, resp.str, sizeof(disp.topLine) - 1); - printLcd(&resp); + printLcd(&disp); return 0; } \ No newline at end of file diff --git a/main_sketch/protocol.c b/hdlc_screen/protocol/protocol.c similarity index 100% rename from main_sketch/protocol.c rename to hdlc_screen/protocol/protocol.c diff --git a/main_sketch/protocol.h b/hdlc_screen/protocol/protocol.h similarity index 100% rename from main_sketch/protocol.h rename to hdlc_screen/protocol/protocol.h diff --git a/main_sketch/Lcd_print.cpp b/main_sketch/Lcd_print.cpp deleted file mode 100644 index bae875b..0000000 --- a/main_sketch/Lcd_print.cpp +++ /dev/null @@ -1,99 +0,0 @@ -#include -#include -#include -#include -#include "MyLCD.h" -#include "protocol.h" -#include - -struct DisplayData { - char topLine[64]; - float value1; - float value2; - float value3; -}; - -struct TextCounter { - unsigned long startTime; - int incrementValue; -}; - -TextCounter textCounter; - -void Lcd_inciliation() { - lcd_init(LCD_DISP_ON_BLINK); // инициализация дисплея - lcd_home(); // домой курсор - lcd_led(0); // вкл подсветки - textCounter.startTime = millis(); // Запоминаем время запуска программы -} - -void fillBuffer1(const char* source, char* buffer, size_t bufferSize, int incrementValue) { - int startIndex = incrementValue % strlen(source); // Определяем начальный индекс на основе incrementValue - int endIndex = startIndex + 16; - - for (int i = 0; i < 16; ++i) { - buffer[i] = source[(startIndex + i) % strlen(source)]; - } - buffer[16] = '\0'; // Установка нулевого символа в конце буфера -} - -void fillBuffer2(float value1, float value2, float value3, char* buffer, size_t bufferSize) { - snprintf(buffer, bufferSize, "%.2f.%.2f.%.2f", value1, value2, value3); -} - -void printLcd(struct message* decode_message) { - unsigned long currentTime = millis(); // Текущее время - // Проверяем, прошло ли 500 мс с момента последнего увеличения incrementValue - if (currentTime - textCounter.startTime >= 500) { - textCounter.incrementValue++; // Увеличиваем incrementValue на 1 - textCounter.startTime = currentTime; // Обновляем время - } - - struct DisplayData displayData; - strncpy(displayData.topLine, decode_message->str, sizeof(displayData.topLine) - 1); - displayData.topLine[sizeof(displayData.topLine) - 1] = '\0'; - displayData.value1 = decode_message->numbers[0]; - displayData.value2 = decode_message->numbers[1]; - displayData.value3 = decode_message->numbers[2]; - - // Буферы для заполнения данных - char buffer1[17]; - char buffer2[17]; - - // Заполнение буфера 1 - fillBuffer1(displayData.topLine, buffer1, sizeof(buffer1), textCounter.incrementValue); - - // Заполнение буфера 2 - fillBuffer2(displayData.value1, displayData.value2, displayData.value3, buffer2, sizeof(buffer2)); - - // Создание массива для вывода на дисплей - char displayArray[32]; - strncpy(displayArray, buffer1, 16); // Копирование первых 16 символов из buffer1 в displayArray - strncpy(displayArray + 16, buffer2, 16); // Копирование первых 16 символов из buffer2 в displayArray, начиная с позиции 16 - - // Вывод данных на экран - lcd_gotoxy(0, 0); - lcd_puts(displayArray); - - lcd_gotoxy(0, 1); - lcd_puts(displayArray + 16); // Вывод второй половины displayArray -} - -void dder() { - Lcd_inciliation(); - - uint8_t encode_message[100]; - size_t len_encode_message = 0; - struct message message; - - - // Получаем данные из протокола - protocol_encode(message, encode_message, &len_encode_message); - - // Декодируем данные из протокола - struct message decode_message; - protocol_decode(encode_message, len_encode_message, &decode_message); - - // Выводим данные на экран - printLcd(&decode_message); -} \ No newline at end of file diff --git a/main_sketch/circular_buf.c b/main_sketch/circular_buf.c deleted file mode 100644 index e1b91c7..0000000 --- a/main_sketch/circular_buf.c +++ /dev/null @@ -1,36 +0,0 @@ -#include -#include -#include "circular_buf.h" - - -void initialize_buffer(struct circular_buffer* cb) { - cb->buf_head = 0; - cb->buf_tail = 0; -} -// Проверка, пустой ли буфер -int buffer_empty(const struct circular_buffer* cb) { - return cb->buf_head == cb->buf_tail; -} -// Проверка, заполнен ли буфер -int buffer_full(const struct circular_buffer* cb) { - return (cb->buf_tail + 1) % BUFFER_SIZE == cb->buf_head; //проверяем следующее число, если оно будет совпадать с индексом головы то будет false, при совпадении вывод true -} -// Запись в буфер -void write_buffer(struct circular_buffer* cb, int value) { - if (buffer_full(cb)) { // проверяем, заполнен ли буфер - return; - } - cb->buffer[cb->buf_tail] = value;// записываем значение в элемент массива в хвост - cb->buf_tail = (cb->buf_tail + 1) % BUFFER_SIZE;// присваивается cb->buf_tail, обновляется его значение на следующий индекс в буфере -} -// Чтение элемента -int read_buffer(struct circular_buffer* cb) { - if (buffer_empty(cb)) { // проверка на пустоту - return -1;// -1 как индикатор в случае ошибки - } - int value = cb->buffer[cb->buf_head]; // чтение по индексу головы - cb->buf_head = (cb->buf_head + 1) % BUFFER_SIZE; // увеличиваем индекс на 1 - return value; -} - - diff --git a/main_sketch/circular_buf.h b/main_sketch/circular_buf.h deleted file mode 100644 index 22dc139..0000000 --- a/main_sketch/circular_buf.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef CIRCULAR_BUFFER_H -#define CIRCULAR_BUFFER_H - -#define BUFFER_SIZE 32 - -struct circular_buffer{ - unsigned char buffer[BUFFER_SIZE]; - unsigned char buf_head; - unsigned char buf_tail; -}; - -void initialize_buffer(struct circular_buffer* cb); -int buffer_empty(const struct circular_buffer* cb); -int buffer_full(const struct circular_buffer* cb); -void write_buffer(struct circular_buffer* cb, int value); -int read_buffer(struct circular_buffer* cb); - -#endif /* CIRCULAR_BUFFER_H */ diff --git a/main_sketch/client.c b/main_sketch/client.c deleted file mode 100644 index b2b7318..0000000 --- a/main_sketch/client.c +++ /dev/null @@ -1,129 +0,0 @@ -#include "client.h" -#include "hdlc.h" -#include "stdio.h" - -#define SIZE_DATA_BUFFERS 64 - -int connecting_frame_timeout_bf; - -void init_hdlc_client(struct Client* client, int connecting_frame_timeout){ - client->state = IDLE_STATE; - client->connecting_frame_timeout = connecting_frame_timeout; - connecting_frame_timeout_bf = connecting_frame_timeout; - client->current_index_frame = 20; - - client->current_state_hdlc.control_escape = 0; - client->current_state_hdlc.fcs = FCS_INIT_VALUE; - client->current_state_hdlc.start_index = -1; - client->current_state_hdlc.end_index = -1; - client->current_state_hdlc.src_index = 0; - client->current_state_hdlc.dest_index = 0; -} - -void hdlc_connect(struct Client* client){ - client->state = CONNECTING; - - client->frameS.seq_no = 0; - client->frameS.frame = S_FRAME; - client->current_index_frame = client->frameS.seq_no; -} - -int hdlc_send_data(struct Client* client, uint8_t data[], size_t data_len){ - if (client->state != READY_STATE){ - return ERR_INVALID_STATE; - } - - client->state = RECIVING; - - if (SIZE_DATA_BUFFERS < data_len){ - return ERR_INVALID_DATA_SIZE; - } - - client->frameI.seq_no = 0; - client->frameI.frame = I_FRAME; - client->data_i_frame = data; - client->len_data_i_frame = data_len; - client->current_index_frame = client->frameI.seq_no; - - client->state = RECIVING; - return 0; -} - -int hdlc_get_raw_frame(struct Client *client, uint8_t* buffer, size_t lenBuffer) { - if(client->state == RECIVING){ - int ret = hdlc_frame_data(&client->frameI, client->data_i_frame, - client->len_data_i_frame, buffer, &lenBuffer); - if (ret < 0){ - printf("err in get_frame: %d\n", ret); - } - } - - if (client->state == CONNECTING){ - int ret = hdlc_frame_data(&client->frameS, NULL, 0, buffer, &lenBuffer); - - if (ret < 0){ - printf("err in get_frame: %d\n", ret); - } - } - - if (client->state == DISCONNECTING){ - int ret = hdlc_frame_data(&client->frame_rej, NULL, 0, buffer, &lenBuffer); - - if (ret < 0){ - printf("err in get_frame: %d\n", ret); - } - } - - return 0; -} - -int hdlc_decode_recived_raw_data(struct Client* client, uint8_t* buffer, size_t len_buffer, uint8_t* recived_data, size_t* len_recived_data){ - hdlc_control_t recv_control; - uint8_t recive[len_buffer]; - - int ret = hdlc_get_data_with_state(&client->current_state_hdlc,&recv_control, buffer, len_buffer, recive, - &len_buffer); - - if (ret < 0) { - return ret; - } - - if (recv_control.seq_no != client->current_index_frame){ - client->state = DISCONNECTING; - client->frame_rej.seq_no = 0; - client->frame_rej.frame = S_FRAME_NACK; - return ERR_INVALID_SEQ_NUMBER_FRAME; - } - - switch (recv_control.frame) { - case S_FRAME: - client->state = READY_STATE; - break; - case I_FRAME: - for (int i = 0; i < sizeof(recive)-2; i++){ - recived_data[i] = recive[i]; - } - - *len_recived_data = sizeof(recive)-2; - - client->state = SEND; - break; - case S_FRAME_NACK: - client->state = DISCONNECTING; - client->frame_rej.seq_no = 0; - client->frame_rej.frame = S_FRAME_NACK; - return ERR_INVALID_SEQ_NUMBER_FRAME; - } - - client->connecting_frame_timeout = connecting_frame_timeout_bf; - return 0; -} - -int hdlc_timeout_handler(struct Client* client, int delta_time){ - client->connecting_frame_timeout -= delta_time; - - if (client->connecting_frame_timeout <= 0){ - return ERR_FRAME_TIME_OUT; - } - return 0; -} \ No newline at end of file diff --git a/main_sketch/client.h b/main_sketch/client.h deleted file mode 100644 index 8702fa1..0000000 --- a/main_sketch/client.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef CLIENT_H -#define CLIENT_H - -#include -#include -#include "hdlc.h" - -#define ERR_INVALID_DATA_SIZE -1 -#define ERR_ALL_BUFFERS_FILL -2 -#define ERR_INVALID_PARAMS -3 -#define ERR_INVALID_STATE -4 -#define ERR_FRAME_TIME_OUT -5 -#define ERR_INVALID_SEQ_NUMBER_FRAME -6 -#define ERR_TIMEOUT_ANSWER -7 - -enum HDLCState { - UNINITIALIZED_STATE = 0, // состояние до инцилизации - IDLE_STATE, // Состояние ожидания начала - READY_STATE, // Состояние принятия - CONNECTING, // состояние соединения - DISCONNECTING, // состояния отключения - RECIVING, // состояние приема и отправки - SEND, //данные отправлены -}; - -struct Client{ - enum HDLCState state; - int connecting_frame_timeout; //-1 - uint8_t current_index_frame; - hdlc_state_t current_state_hdlc; - hdlc_control_t frameS; - hdlc_control_t frameI; - uint8_t* data_i_frame; - size_t len_data_i_frame; -// hdlc_control_t frame3; -// hdlc_control_t frame4; - hdlc_control_t frame_rej; -}; - -//название функций -void init_hdlc_client(struct Client* client, int connecting_frame_timeout); -void hdlc_connect(struct Client* client); -int hdlc_send_data(struct Client* client, uint8_t data[], size_t data_len); -int hdlc_get_raw_frame(struct Client *client, uint8_t* buffer, size_t lenBuffer); -//принимает буффер с уарта -int hdlc_decode_recived_raw_data(struct Client* client, uint8_t* buffer, size_t len_buffer, uint8_t* recived_data, size_t* len_recived_data); -int hdlc_timeout_handler(struct Client* client, int delta_time); - -#endif //CLIENT_H diff --git a/main_sketch/fcs.c b/main_sketch/fcs.c deleted file mode 100644 index 6e29cf8..0000000 --- a/main_sketch/fcs.c +++ /dev/null @@ -1,41 +0,0 @@ -#include "fcs.h" - -/* - * CRC-Type: CRC16 CCIT - * Polynomial: 0x1021 (x^16+x^12+x^5+1) - * Lookup Table: Reflected - */ -static const unsigned short fcstab[256] = { - 0x0000, 0x1189, 0x2312, 0x329b, - 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, - 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, - 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, - 0xe876, 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, - 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, 0x3183, - 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, 0xbdcb, 0xac42, - 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 0x4204, 0x538d, 0x6116, - 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, - 0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, - 0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, - 0xbbfb, 0xaa72, 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, - 0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, - 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, 0xffcf, - 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, 0x8408, 0x9581, - 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, 0x0840, 0x19c9, 0x2b52, - 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, 0x9489, 0x8500, 0xb79b, 0xa612, - 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, - 0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, - 0xc03c, 0xd1b5, 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, - 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, - 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, 0xc60c, - 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, 0x4a44, 0x5bcd, - 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, 0xd68d, 0xc704, 0xf59f, - 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, 0x5ac5, 0x4b4c, 0x79d7, 0x685e, - 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, - 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, - 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, - 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78 }; - -FCS_SIZE calc_fcs(FCS_SIZE fcs, unsigned char value) { - return (fcs >> 8) ^ fcstab[(fcs ^ value) & 0xff]; -} \ No newline at end of file diff --git a/main_sketch/fcs.h b/main_sketch/fcs.h deleted file mode 100644 index 6673d40..0000000 --- a/main_sketch/fcs.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef FCS_H -#define FCS_H - -#define FCS_INIT_VALUE 0xFFFF /* FCS initialization value. */ -#define FCS_GOOD_VALUE 0xF0B8 /* FCS value for valid frames. */ -#define FCS_INVERT_MASK 0xFFFF /* Invert the FCS value accordingly to the specification */ -#define FCS_SIZE unsigned short - -/** - * Calculates a new FCS based on the current value and value of data. - * - * @param fcs Current FCS value - * @param value The value to be added - * @returns Calculated FCS value - */ -FCS_SIZE calc_fcs(FCS_SIZE fcs, unsigned char value); - -#endif \ No newline at end of file diff --git a/main_sketch/hdlc.c b/main_sketch/hdlc.c deleted file mode 100644 index a5792e5..0000000 --- a/main_sketch/hdlc.c +++ /dev/null @@ -1,262 +0,0 @@ -#include "hdlc.h" - -// HDLC Control field bit positions -#define HDLC_CONTROL_S_OR_U_FRAME_BIT 0 -#define HDLC_CONTROL_SEND_SEQ_NO_BIT 1 -#define HDLC_CONTROL_S_FRAME_TYPE_BIT 2 -#define HDLC_CONTROL_POLL_BIT 4 -#define HDLC_CONTROL_RECV_SEQ_NO_BIT 5 - -// HDLC Control type definitions -#define HDLC_CONTROL_TYPE_RECEIVE_READY 0 -#define HDLC_CONTROL_TYPE_RECEIVE_NOT_READY 1 -#define HDLC_CONTROL_TYPE_REJECT 2 -#define HDLC_CONTROL_TYPE_SELECTIVE_REJECT 3 - -static hdlc_state_t hdlc_state = { - .control_escape = 0, - .fcs = FCS_INIT_VALUE, - .start_index = -1, - .end_index = -1, - .src_index = 0, - .dest_index = 0, -}; - -int hdlc_set_state(hdlc_state_t *state) { - if (!state) { - return -EINVAL; - } - - hdlc_state = *state; - return 0; -} - - -int hdlc_get_state(hdlc_state_t *state) { - if (!state) { - return -EINVAL; - } - - *state = hdlc_state; - return 0; -} - -void hdlc_escape_value(char value, char *dest, int *dest_index) { - // Check and escape the value if needed - if ((value == HDLC_FLAG_SEQUENCE) || (value == HDLC_CONTROL_ESCAPE)) { - dest[(*dest_index)++] = HDLC_CONTROL_ESCAPE; - value ^= 0x20; - } - - // Add the value to the destination buffer and increment destination index - dest[(*dest_index)++] = value; -} - -hdlc_control_t hdlc_get_control_type(unsigned char control) { - hdlc_control_t value; - - // Check if the frame is a S-frame (or U-frame) - if (control & (1 << HDLC_CONTROL_S_OR_U_FRAME_BIT)) { - // Check if S-frame type is a Receive Ready (ACK) - if (((control >> HDLC_CONTROL_S_FRAME_TYPE_BIT) & 0x3) - == HDLC_CONTROL_TYPE_RECEIVE_READY) { - value.frame = S_FRAME; - } else { - // Assume it is an NACK since Receive Not Ready, Selective Reject and U-frames are not supported - value.frame = S_FRAME_NACK; - } - - // Add the receive sequence number from the S-frame (or U-frame) - value.seq_no = (control >> HDLC_CONTROL_RECV_SEQ_NO_BIT); - } else { - // It must be an I-frame so add the send sequence number (receive sequence number is not used) - value.frame = I_FRAME; - value.seq_no = (control >> HDLC_CONTROL_SEND_SEQ_NO_BIT); - } - - return value; -} - -unsigned char hdlc_frame_control_type(hdlc_control_t *control) { - unsigned char value = 0; - - switch (control->frame) { - case I_FRAME: - // Create the HDLC I-frame control byte with Poll bit set - value |= (control->seq_no << HDLC_CONTROL_SEND_SEQ_NO_BIT); - value |= (1 << HDLC_CONTROL_POLL_BIT); - break; - case S_FRAME: - // Create the HDLC Receive Ready S-frame control byte with Poll bit cleared - value |= (control->seq_no << HDLC_CONTROL_RECV_SEQ_NO_BIT); - value |= (1 << HDLC_CONTROL_S_OR_U_FRAME_BIT); - break; - case S_FRAME_NACK: - // Create the HDLC Receive Ready S-frame control byte with Poll bit cleared - value |= (control->seq_no << HDLC_CONTROL_RECV_SEQ_NO_BIT); - value |= (HDLC_CONTROL_TYPE_REJECT << HDLC_CONTROL_S_FRAME_TYPE_BIT); - value |= (1 << HDLC_CONTROL_S_OR_U_FRAME_BIT); - break; - } - - return value; -} - -void hdlc_get_data_reset() { - hdlc_get_data_reset_with_state(&hdlc_state); -} - -void hdlc_get_data_reset_with_state(hdlc_state_t *state) { - state->fcs = FCS_INIT_VALUE; - state->start_index = state->end_index = -1; - state->src_index = state->dest_index = 0; - state->control_escape = 0; -} - -//int hdlc_get_data(hdlc_control_t *control, const char *src, -// unsigned int src_len, char *dest, unsigned int *dest_len) -int hdlc_get_data(hdlc_control_t *control, uint8_t *src, - size_t src_len, uint8_t *dest, size_t *dest_len){ - return hdlc_get_data_with_state(&hdlc_state, control, src, src_len, dest, dest_len); -} - -//int hdlc_get_data_with_state(hdlc_state_t *state, hdlc_control_t *control, const char *src, -// unsigned int src_len, char *dest, unsigned int *dest_len) -int -hdlc_get_data_with_state(hdlc_state_t *state, hdlc_control_t *control, uint8_t *src, - size_t src_len, uint8_t *dest, size_t *dest_len){ - int ret; - char value; - unsigned int i; - - // Make sure that all parameters are valid - if (!state || !control || !src || !dest || !dest_len) { - return -EINVAL; - } - - // Run through the data bytes - for (i = 0; i < src_len; i++) { - // First find the start flag sequence - if (state->start_index < 0) { - if (src[i] == HDLC_FLAG_SEQUENCE) { - // Check if an additional flag sequence byte is present - if ((i < (src_len - 1)) && (src[i + 1] == HDLC_FLAG_SEQUENCE)) { - // Just loop again to silently discard it (accordingly to HDLC) - continue; - } - - state->start_index = state->src_index; - } - } else { - // Check for end flag sequence - if (src[i] == HDLC_FLAG_SEQUENCE) { - // Check if an additional flag sequence byte is present or earlier received - if (((i < (src_len - 1)) && (src[i + 1] == HDLC_FLAG_SEQUENCE)) - || ((state->start_index + 1) == state->src_index)) { - // Just loop again to silently discard it (accordingly to HDLC) - continue; - } - - state->end_index = state->src_index; - break; - } else if (src[i] == HDLC_CONTROL_ESCAPE) { - state->control_escape = 1; - } else { - // Update the value based on any control escape received - if (state->control_escape) { - state->control_escape = 0; - value = src[i] ^ 0x20; - } else { - value = src[i]; - } - - // Now update the FCS value - state->fcs = calc_fcs(state->fcs, value); - - if (state->src_index == state->start_index + 2) { - // Control field is the second byte after the start flag sequence - *control = hdlc_get_control_type(value); - } else if (state->src_index > (state->start_index + 2)) { - // Start adding the data values after the Control field to the buffer - dest[state->dest_index++] = value; - } - } - } - state->src_index++; - } - - // Check for invalid frame (no start or end flag sequence) - if ((state->start_index < 0) || (state->end_index < 0)) { - // Return no message and make sure destination length is 0 - *dest_len = 0; - ret = -ENOMSG; - } else { - // A frame is at least 4 bytes in size and has a valid FCS value - if ((state->end_index < (state->start_index + 4)) - || (state->fcs != FCS_GOOD_VALUE)) { - // Return FCS error and indicate that data up to end flag sequence in buffer should be discarded - *dest_len = i; - ret = -EIO; - } else { - // Return success and indicate that data up to end flag sequence in buffer should be discarded - *dest_len = state->dest_index - sizeof(state->fcs); - ret = i; - } - - // Reset values for next frame - hdlc_get_data_reset_with_state(state); - } - - return ret; -} - -//int hdlc_frame_data(hdlc_control_t *control, const char *src, -// unsigned int src_len, char *dest, unsigned int *dest_len) -int hdlc_frame_data(hdlc_control_t *control, uint8_t *src, - size_t src_len, uint8_t *dest, size_t *dest_len){ - unsigned int i; - int dest_index = 0; - unsigned char value = 0; - FCS_SIZE fcs = FCS_INIT_VALUE; - - // Make sure that all parameters are valid - if (!control || (!src && (src_len > 0)) || !dest || !dest_len) { - return -EINVAL; - } - - // Start by adding the start flag sequence - dest[dest_index++] = HDLC_FLAG_SEQUENCE; - - // Add the all-station address from HDLC (broadcast) - fcs = calc_fcs(fcs, HDLC_ALL_STATION_ADDR); - hdlc_escape_value(HDLC_ALL_STATION_ADDR, dest, &dest_index); - - // Add the framed control field value - value = hdlc_frame_control_type(control); - fcs = calc_fcs(fcs, value); - hdlc_escape_value(value, dest, &dest_index); - - // Only DATA frames should contain data - if (control->frame == I_FRAME) { - // Calculate FCS and escape data - for (i = 0; i < src_len; i++) { - fcs = calc_fcs(fcs, src[i]); - hdlc_escape_value(src[i], dest, &dest_index); - } - } - - // Invert the FCS value accordingly to the specification - fcs ^= FCS_INVERT_MASK; - - // Run through the FCS bytes and escape the values - for (i = 0; i < sizeof(fcs); i++) { - value = ((fcs >> (8 * i)) & 0xFF); - hdlc_escape_value(value, dest, &dest_index); - } - - // Add end flag sequence and update length of frame - dest[dest_index++] = HDLC_FLAG_SEQUENCE; - *dest_len = dest_index; - - return 0; -} \ No newline at end of file diff --git a/main_sketch/hdlc.h b/main_sketch/hdlc.h deleted file mode 100644 index 61fc74a..0000000 --- a/main_sketch/hdlc.h +++ /dev/null @@ -1,108 +0,0 @@ -// -// Created by 79513 on 15.12.2023. -// - -#ifndef HDLC_H -#define HDLC_H - -#include "fcs.h" -#include "errno.h" -#include "stdint.h" - -/** HDLC start/end flag sequence */ -#define HDLC_FLAG_SEQUENCE 0x7E - -/** HDLC control escape value */ -#define HDLC_CONTROL_ESCAPE 0x7D - -/** HDLC all station address */ -#define HDLC_ALL_STATION_ADDR 0xFF - -/** Supported HDLC frame types */ -typedef enum { - I_FRAME, - S_FRAME, - S_FRAME_NACK, -} hdlc_frame_t; - -/** Control field information */ -typedef struct { - hdlc_frame_t frame; - unsigned char seq_no :3; -} hdlc_control_t; - -/** Variables used in hdlc_get_data and hdlc_get_data_with_state - * to keep track of received buffers - */ -typedef struct { - char control_escape; - FCS_SIZE fcs; - int start_index; - int end_index; - int src_index; - int dest_index; -} hdlc_state_t; - -/** - * Retrieves data from specified buffer containing the HDLC frame. Frames can be - * parsed from multiple buffers e.g. when received via UART. - * - * @param[out] control Control field structure with frame type and sequence number - * @param[in] src Source buffer with frame - * @param[in] src_len Source buffer length - * @param[out] dest Destination buffer (should be able to contain max frame size) - * @param[out] dest_len Destination buffer length - * @retval >=0 Success (size of returned value should be discarded from source buffer) - * @retval -EINVAL Invalid parameter - * @retval -ENOMSG Invalid message - * @retval -EIO Invalid FCS (size of dest_len should be discarded from source buffer) - * - * @see hdlc_get_data_with_state - */ -int hdlc_get_data(hdlc_control_t *control, uint8_t *src, - size_t src_len, uint8_t *dest, size_t *dest_len); - -/** - * Retrieves data from specified buffer containing the HDLC frame. Frames can be - * parsed from multiple buffers e.g. when received via UART. - * - * This function is a variation of @ref hdlc_get_data - * The difference is only in first argument: hdlc_state_t *state - * Data under that pointer is used to keep track of internal buffers. - * - * @see hdlc_get_data - */ -int hdlc_get_data_with_state(hdlc_state_t *state, hdlc_control_t *control, uint8_t *src, - size_t src_len, uint8_t *dest, size_t *dest_len); - -/** - * Resets values used in yahdlc_get_data function to keep track of received buffers - */ -void hdlc_get_data_reset(); - -/** - * This is a variation of @ref hdlc_get_data_reset - * Resets state values that are under the pointer provided as argument - * - * This function need to be called before the first call to hdlc_get_data_with_state - * when custom state storage is used. - * - * @see hdlc_get_data_reset - */ -void hdlc_get_data_reset_with_state(hdlc_state_t *state); - -/** - * Creates HDLC frame with specified data buffer. - * - * @param[in] control Control field structure with frame type and sequence number - * @param[in] src Source buffer with data - * @param[in] src_len Source buffer length - * @param[out] dest Destination buffer (should be bigger than source buffer) - * @param[out] dest_len Destination buffer length - * @retval 0 Success - * @retval -EINVAL Invalid parameter - */ -int hdlc_frame_data(hdlc_control_t *control, uint8_t *src, - size_t src_len, uint8_t *dest, size_t *dest_len); - -#endif //HDLC_H diff --git a/main_sketch/i2cmaster.h b/main_sketch/i2cmaster.h deleted file mode 100644 index 72efb7c..0000000 --- a/main_sketch/i2cmaster.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef _I2CMASTER_H -#define _I2CMASTER_H - -// ����, ���������� �� ������ ������ �� i2c -#define I2C_READ 1 - -// ����, ���������� �� �������� ������ �� i2c -#define I2C_WRITE 0 - -// ������� ������������ ����� � ������ -#define SCL_CLOCK 100000L - -// ������������� ���������� -void i2c_init(void); - -// �������� ������� ���� �� ���� -void i2c_stop(void); - -// �������� ������� ����� �� ���� -unsigned char i2c_start(unsigned char addr); - -// ��������� �����(����������) -unsigned char i2c_rep_start(unsigned char addr); - -// ����, ���� ������-�� ������, � ����� �������� ������� ����� �� ���� -void i2c_start_wait(unsigned char addr); - - // �������� ������ -unsigned char i2c_write(unsigned char data); - -// ������ ������ � ���������� ������� -unsigned char i2c_readAck(void); - -// ������ ������ � ����� �� ��������� �������� ������ ���� -unsigned char i2c_readNak(void); - -// ������ ������ � ���� -unsigned char i2c_read(unsigned char ack); - -// �������� ����� ������ ������ ������ ����� -#define i2c_read(ack) (ack) ? i2c_readAck() : i2c_readNak(); -#endif diff --git a/main_sketch/keywords.txt b/main_sketch/keywords.txt deleted file mode 100644 index 26f60da..0000000 --- a/main_sketch/keywords.txt +++ /dev/null @@ -1,10 +0,0 @@ -lcd_init KEYWORD2 -lcd_clrscr KEYWORD2 -lcd_home KEYWORD2 -lcd_gotoxy KEYWORD2 -lcd_led KEYWORD2 -lcd_putc KEYWORD2 -lcd_puts KEYWORD2 -lcd_puts_p KEYWORD2 -lcd_command KEYWORD2 -lcd_data KEYWORD2 \ No newline at end of file diff --git a/main_sketch/lcd.h b/main_sketch/lcd.h deleted file mode 100644 index f798ae0..0000000 --- a/main_sketch/lcd.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef Lsd_print_h -#define Lsd_print_h -#include "protocol.h" - -void Lcd_inciliation(); -void printLcd(struct message* decode_message); - -#endif \ No newline at end of file diff --git a/main_sketch/lcdpcf8574.h b/main_sketch/lcdpcf8574.h deleted file mode 100644 index cff8714..0000000 --- a/main_sketch/lcdpcf8574.h +++ /dev/null @@ -1,110 +0,0 @@ -#ifndef LCD_H -#define LCD_H - -#define LCD_PCF8574_INIT 1 //������������� pcf - -#define LCD_PCF8574_DEVICEID 0 //id ���-�� -#define LCD_FUNCTION_DEFAULT LCD_FUNCTION_4BIT_2LINES - -// ��������� ������ �����: ���������/���������� �������� �������, ����������� ����������� ������� ���������/����������� -#define LCD_ENTRY_DEC 0x04 // �������� ������� ���������, ������ ������������ �� ������� -#define LCD_ENTRY_DEC_SHIFT 0x05 // ��������� ������ �������, ����������� ������� �� ������� -#define LCD_ENTRY_INC_ 0x06 // �������� ������� ���������, ���. ����������� ������� � ����������� -#define LCD_ENTRY_INC_SHIFT 0x07 // ��������� �������� �������, ���������� ����������� ����������� ������� - -// ���������/���������� �������, ���������/���������� �������, �������� ������ � ������� ������� -#define LCD_DISP_OFF 0x08 // ������� �������� -#define LCD_DISP_ON 0x0C // ������� ���, ������ ���� -#define LCD_DISP_ON_BLINK 0x0D // ������� ���, ������ ����, ���� �������� ����� -#define LCD_DISP_ON_CURSOR 0x0E // ������� ���, ������ ��� -#define LCD_DISP_ON_CURSOR_BLINK 0x0F // ������� ���, ������ ���, ���� �������� ����� - -// ����������� �������/�������� ������� -#define LCD_MOVE_CURSOR_LEFT 0x10 // ������ ������ -#define LCD_MOVE_CURSOR_RIGHT 0x14 // ������ ������� -#define LCD_MOVE_DISP_LEFT 0x18 // ����� ����� -#define LCD_MOVE_DISP_RIGHT 0x1C // ����� ������ - -// ����� �������: ��������� ����� ������ ���������� � ���������� ����� ����������� -#define LCD_FUNCTION_4BIT_1LINE 0x20 // 4-������ ���������, ���� ������, 5x7 ����� -#define LCD_FUNCTION_4BIT_2LINES 0x28 // 4-������ ���������, ������������, 5x7 ����� -#define LCD_FUNCTION_8BIT_1LINE 0x30 // 8-������ ���������, ���� ������, 5x7 ����� -#define LCD_FUNCTION_8BIT_2LINES 0x38 // 8-������ ���������, ������������, 5x7 ����� - -#define LCD_LINES 2 // ���-�� ����� -#define LCD_DISP_LENGTH 16 // ���-�� �������� � ������ -#define LCD_LINE_LENGTH 0x40 // ���������� ����� ������ ������� -#define LCD_START_LINE1 0x00 // DDRM ����� ��� 1 ������ -#define LCD_START_LINE2 0x40 // DDRM ����� ��� 2 ������ -#define LCD_WRAP_LINES 1 // ������� ������ - - - -#define LCD_DATA0_PIN 4 // ��� ��� ������ -#define LCD_DATA1_PIN 5 // ��� ��� ������ -#define LCD_DATA2_PIN 6 // ��� ��� ������ -#define LCD_DATA3_PIN 7 // ��� ��� ������ -#define LCD_RS_PIN 0 // ��� ����� RS -#define LCD_RW_PIN 1 // ��� ����� RW -#define LCD_E_PIN 2 // ��� ����� ������������ -#define LCD_LED_PIN 3 // ��� ��������� - - -// ������� ����� �������� ������ HD44780U. -#define LCD_CLR 0 // ��������� ������� -#define LCD_HOME 1 // ������� ������ ����� -#define LCD_ENTRY_MODE 2 // ��������� ������ ����� -#define LCD_ENTRY_INC 1 // ��������� -#define LCD_ENTRY_SHIFT 0 // ��� �������� -#define LCD_ON 3 // ��� ������� -#define LCD_ON_DISPLAY 2 // ���� ������� -#define LCD_ON_CURSOR 1 // ���� ������ -#define LCD_ON_BLINK 0 // ������� ������� -#define LCD_MOVE 4 // ������������ ������� -#define LCD_MOVE_DISP 3 // ������������ ������� -#define LCD_MOVE_RIGHT 2 // ������������ ������� ������� -#define LCD_FUNCTION 5 // ��������� ������� -#define LCD_FUNCTION_8BIT 4 // 8 ������ ����� -#define LCD_FUNCTION_2LINES 3 // ��������� ����� -#define LCD_FUNCTION_10DOTS 2 // ������ -#define LCD_CGRAM 6 // ��������� ������ CG RAM -#define LCD_DDRAM 7 // ��������� ������ DD RAM -#define LCD_BUSY 7 // ������� ����� - -// ����������� ����� -#define LCD_MODE_DEFAULT ((1< -#include - -static volatile unsigned long timerMillis = 0; - -void timerInit() { - TCCR1B |= (1 << WGM12) | (1 << CS11) | (1 << CS10); - OCR1A = 250; - TIMSK1 |= (1 << OCIE1A); - sei(); -} - -unsigned long millis() { - unsigned long ms; - ms = timerMillis; - return ms; -} - -ISR(TIMER1_COMPA_vect) { - timerMillis++; -} \ No newline at end of file diff --git a/main_sketch/timer.h b/main_sketch/timer.h deleted file mode 100644 index f5b07fe..0000000 --- a/main_sketch/timer.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef TIMER_H -#define TIMER_H - -void timerInit(); -unsigned long millis(); - -#endif // TIMER_H \ No newline at end of file diff --git a/protocol/main.c b/protocol/main.c deleted file mode 100644 index 28aa299..0000000 --- a/protocol/main.c +++ /dev/null @@ -1,120 +0,0 @@ -#include "protocol.h" -#include "stdio.h" - -int main(){ -// union convert_float sample; -// sample.fVal = 135; -// union convert_float sample2; -// for(int i = 0; i < sizeof sample.buf; i++){ -// printf("buffer %d: %d\n", i, sample.buf[i]); -// sample2.buf[i] = sample.buf[i]; -// } -// -// printf("float: %f\n", sample2.fVal); - -// union convert_char sample; -// sample.cVal = "world_word_z"; -// union convert_char sample2; -// for(int i = 0; i < sizeof sample.buf; i++){ -// printf("buffer %d: %d\n", i, sample.buf[i]); -// sample2.buf[i] = sample.buf[i]; -// } -// -// printf("char: %s\n", sample2.cVal); - - -// char a[64]; -// float f = 3.14159; // number to start with -// -// snprintf(a, sizeof a, "%f", f); // point a to f's location -// -// float num = atof(a); -// -// printf("%s\n", a); -// printf("%f", num); -// -// // print float & byte array as hex -// printf("float: %f\n", f); -// printf("byte array: %hhX:%hhX:%hhX:%hhX\n", \ -// a[0], a[1], a[2], a[3]); - -// uint8_t num; -// sscanf(a, "%s", &num); -// float s = atof(a); -// printf("%f\n", s); - -// float vIn = -1.07231; -// char *vOut[4]; -// _gcvt_s(vOut,sizeof(vOut),vIn,9); -// -// float vA = (float)strtod(vOut,NULL); -// -// printf("\n%f", vA); - - printf("Test number\n"); - struct message messNum; - messNum.numbers[0] = 12.134; - messNum.numbers[1] = 135.123; - messNum.numbers[2] = 5214.12; - messNum.numbers[3] = 12345.12345; - messNum.len_str = 0; - messNum.len_numbers = 4; - - uint8_t buffer_number[] = {}; - size_t len_buffer_number; - protocol_encode(messNum, buffer_number, &len_buffer_number); - for (int i = 0; i < len_buffer_number; i++){ - printf("buffer %d: %d\n", i, buffer_number[i]); - } - - printf("---------------------------------------\n"); - - struct message respNum; - protocol_decode(buffer_number, len_buffer_number, &respNum); - for (int i = 0; i < 4; i++){ - printf("number %d: %f\n", i, respNum.numbers[i]); - } - - printf("\nTest word\n"); - struct message messStr; - messStr.str = "word_war"; - messStr.len_str = sizeof messStr.str; - messStr.len_numbers = 0; - uint8_t bufferStr[] = {}; - size_t len_bufferStr; - protocol_encode(messStr, bufferStr, &len_bufferStr); - for (int i = 0; i < len_bufferStr; i++){ - printf("buffer %d: %d\n", i, bufferStr[i]); - } - - printf("---------------------------------------\n"); - - struct message respStr; - protocol_decode(bufferStr, len_bufferStr, &respStr); - printf("message: %s\n", respStr.str); - - printf("\nTest number + word\n"); - - struct message mess; - mess.numbers[0] = 12.134; - mess.numbers[1] = 135.123; - mess.len_numbers = 2; - mess.str = "word_war_sas"; - mess.len_str = sizeof mess.str; - uint8_t buffer[] = {}; - size_t len_buffer; - protocol_encode(mess, buffer, &len_buffer); - for (int i = 0; i < len_buffer; i++){ - printf("buffer %d: %d\n", i, buffer[i]); - } - - printf("---------------------------------------\n"); - - struct message resp; - protocol_decode(buffer, len_buffer, &resp); - for (int i = 0; i < resp.len_numbers; i++){ - printf("numbers %d: %f\n", i, resp.numbers[i]); - } - printf("message: %s\n", resp.str); - -} \ No newline at end of file diff --git a/protocol/protocol.c b/protocol/protocol.c deleted file mode 100644 index 9717050..0000000 --- a/protocol/protocol.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "protocol.h" - -void protocol_decode(uint8_t encode_message[], size_t len_encode_message, struct message* decode_message){ - int count_number = 0; - for(int i = 0; i < len_encode_message; i++){ - if (encode_message[i] == FLAG_NUMBER){ - union convert_float sample; - for (int z = 0; z < sizeof sample.buf; z++){ - i++; - sample.buf[z] = encode_message[i]; - } - decode_message->numbers[count_number++] = sample.fVal; - decode_message->len_numbers++; - } - - - if (encode_message[i] == FLAG_WORD){ - int count_word = 0; - i++; - union convert_char sample; - for (int z = 0; z < encode_message[i]; z++){ - i++; - sample.buf[z] = encode_message[i]; - } - decode_message->str = sample.cVal; - decode_message->len_str = count_word; - } - } - decode_message->len_numbers = count_number; -} - -void protocol_encode(struct message message, uint8_t encode_message[], size_t* len_encode_message){ - size_t count = 0; - if (message.len_numbers > 0){ - for (int i = 0; i < message.len_numbers; i++){ - encode_message[count++] = FLAG_NUMBER; - union convert_float sample; - sample.fVal = message.numbers[i]; - for (int z = 0; z < sizeof sample.buf; z++){ - encode_message[count++] = sample.buf[z]; - } - } - } - - if (message.len_str > 0){ - encode_message[count++] = FLAG_WORD; - encode_message[count++] = message.len_str; - union convert_char sample; - sample.cVal = message.str; - for (int i = 0; i < message.len_str; i++){ - encode_message[count++] = sample.buf[i]; - } - } - - *len_encode_message = count; -} \ No newline at end of file diff --git a/protocol/protocol.h b/protocol/protocol.h deleted file mode 100644 index c23f040..0000000 --- a/protocol/protocol.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef PROTOCOL_H -#define PROTOCOL_H - -#include -#include -#include -#include "stdio.h" - -#define FLAG_NUMBER 0 -#define FLAG_WORD 1 - -struct message{ - float numbers[3]; - size_t len_numbers; - char* str; - size_t len_str; -}; - -union convert_float{ - float fVal; - uint8_t buf[4]; -}; - -union convert_char{ - char* cVal; - uint8_t buf[64]; -}; - -void protocol_decode(uint8_t encode_message[], size_t len_encode_message, struct message* decode_message); -void protocol_encode(struct message message, uint8_t encode_message[], size_t* len_encode_message); - -#endif //PROTOCOL_H