Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.06.2015, 23:47   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Ускоряем работу Arduino

Очень интересно.
Я только что приехал, завтра на свежую голову посмотрю
Admin вне форума   Ответить с цитированием
Старый 15.06.2015, 20:28   #2
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем работу Arduino

Дико извиняюсь, файл arhat_pins2560.h похоже залил из предыдущей версии.

Вот исправленный:
PHP код:
/**
 * pins definition for ATmega2560 for use in macros "Arhat.h"
 * 
 * @author Arhat109-20150604. [email protected]
 * @license:
 *   1. This is a free software for any using and distributing without any warranties.
 *   2. You should keep author tag with any changes. May be with adding.
 */
#ifdef __AVR_ATmega2560__

#include <stdint.h>

#define ARDUINO_MEGA_PINS           70
#define NUM_DIGITAL_PINS            ARDUINO_MEGA_PINS
#define MAX_ANALOG_INPUTS           16
#define analogInputToDigitalPin(p)  ((p < 16) ? (p) + 54 : -1)
#define digitalPinHasPWM(p)         (((p) >= 2 && (p) <= 13) || ((p) >= 44 && (p)<= 46))

/** pin number at Arduino Mega board              */
/** second and other function on this Arduino pin */
#define pinLed    13

#define pin0    0
#define pin1    1
#define pin2    2
#define pin3    3
#define pin4    4
#define pin5    5
#define pin6    6
#define pin7    7
#define pin8    8
#define pin9    9
#define pin10    10
#define pin11    11
#define pin12    12
#define pin13    13
#define pin14    14
#define pin15    15
#define pin16    16
#define pin17    17
#define pin18    18
#define pin19    19
#define pin20    20
#define pin21    21
#define pin22    22
#define pin23    23
#define pin24    24
#define pin25    25
#define pin26    26
#define pin27    27
#define pin28    28
#define pin29    29
#define pin30    30
#define pin31    31
#define pin32    32
#define pin33    33
#define pin34    34
#define pin35    35
#define pin36    36
#define pin37    37
#define pin38    38
#define pin39    39
#define pin40    40
#define pin41    41
#define pin42    42
#define pin43    43
#define pin44    44
#define pin45    45
#define pin46    46
#define pin47    47
#define pin48    48
#define pin49    49
#define pin50    50
#define pin51    51
#define pin52    52
#define pin53    53
#define pin54    54
#define pin55    55
#define pin56    56
#define pin57    57
#define pin58    58
#define pin59    59
#define pin60    60
#define pin61    61
#define pin62    62

#define T0_IN        38
#define Tout_0A_1C    13
#define T0outA          13
#define T0outB        4
#define T2outA        10
#define T2outB        9
#define T1outA        11
#define T1outB        12
#define T1outC          13
#define T3outA        5
#define T3outB        2
#define T3outC        3
#define T4_ICP        49
#define T4outA        6
#define T4outB        7
#define T4outC        8
#define T5_IN        47
#define T5_ICP        48
#define T5outA        46
#define T5outC        44
#define T5outB        45

#define setPWM2        { TCCR3A |=  33; TCCR3B |= 3; } /* A: COM32B=normal, 8-bit; B: prescaler=64 */
#define setPWM3        { TCCR3A |=   9; TCCR3B |= 3; } /* A: COM32C=normal, 8-bit; B: prescaler=64 */
#define setPWM4        { TCCR0A |=  35; }     /* A: COM02B=normal, not set: use for time functions! */
#define setPWM5        { TCCR3A |= 129; TCCR3B |= 3; } /* A: COM32A=normal, 8-bit; B: prescaler=64 */
#define setPWM6        { TCCR4A |= 129; TCCR4B |= 3; } /* A: COM42A=normal, 8-bit; B: prescaler=64 */
#define setPWM7        { TCCR4A |=  33; TCCR4B |= 3; } /* A: COM42B=normal, 8-bit; B: prescaler=64 */
#define setPWM8        { TCCR4A |=   9; TCCR4B |= 3; } /* A: COM42C=normal, 8-bit; B: prescaler=64 */
#define setPWM9        { TCCR2A |=  35; TCCR2B |= 3; } /* A: COM22B=normal, fastPWM; B: prescaler=64 */
#define setPWM10    { TCCR2A |= 131; TCCR2B |= 3; } /* A: COM22A=normal, fastPWM; B: prescaler=64 */
#define setPWM11    { TCCR1A |= 129; TCCR1B |= 3; } /* A: COM12A=normal, 8-bit; B: prescaler=64 */
#define setPWM12    { TCCR1A |=  33; TCCR1B |= 3; } /* A: COM12B=normal, 8-bit; B: prescaler=64 */
#define setPWM13    { TCCR0A |= 131; TCCR0B |= 3; } /* A: COM02A=normal, not set other!  */
#define setPWM13a    { TCCR1A |=   9; TCCR1B |= 3; } /* A: COM12C=normal, 8-bit; B: prescaler=64 */
#define setPWM44    { TCCR5A |=   9; TCCR5B |= 3; } /* A: COM52C=normal, 8-bit; B: prescaler=64 */
#define setPWM45    { TCCR5A |=  33; TCCR5B |= 3; } /* A: COM52B=normal, 8-bit; B: prescaler=64 */
#define setPWM46    { TCCR5A |= 128; TCCR5B |= 3; } /* A: COM52A=normal, 8-bit; B: prescaler=64 */

#define outPWM2(v)    { OCR3BH = (unsigned char)(v>>8); OCR3BL = (unsigned char)(v); }
#define outPWM3(v)    { OCR3CH = (unsigned char)(v>>8); OCR3CL = (unsigned char)(v); }
#define outPWM4(v)    { OCR0B = (unsigned char)(v); } /*8 bit */
#define outPWM5(v)    { OCR3AH = (unsigned char)(v>>8); OCR3AL = (unsigned char)(v); }
#define outPWM6(v)    { OCR4AH = (unsigned char)(v>>8); OCR4AL = (unsigned char)(v); }
#define outPWM7(v)    { OCR4BH = (unsigned char)(v>>8); OCR4BL = (unsigned char)(v); }
#define outPWM8(v)    { OCR4CH = (unsigned char)(v>>8); OCR4CL = (unsigned char)(v); }
#define outPWM9(v)    { OCR2B = (unsigned char)(v); } /*8 bit */
#define outPWM10(v)    { OCR2A = (unsigned char)(v); } /*8 bit */
#define outPWM11(v)    { OCR1AH = (unsigned char)(v>>8); OCR1AL = (unsigned char)(v); }
#define outPWM12(v)    { OCR1BH = (unsigned char)(v>>8); OCR1BL = (unsigned char)(v); }
#define outPWM13(v)    { OCR0A = (unsigned char)(v); } /*8 bit */
#define outPWM13a(v)    { OCR1CH = (unsigned char)(v>>8); OCR1CL = (unsigned char)(v); }
#define outPWM44(v)    { OCR5CH = (unsigned char)(v>>8); OCR5CL = (unsigned char)(v); }
#define outPWM45(v)    { OCR5BH = (unsigned char)(v>>8); OCR5BL = (unsigned char)(v); }
#define outPWM46(v)    { OCR5AH = (unsigned char)(v>>8); OCR5AL = (unsigned char)(v); }

#define pinPWM2        T3outB
#define pinPWM3        T3outC
#define pinPWM4        T0outB    /*8 bit */
#define pinPWM5        T3outA
#define pinPWM6        T4outA
#define pinPWM7        T4outB
#define pinPWM8        T4outC
#define pinPWM9        T2outB    /*8 bit */
#define pinPWM10    T2outA    /*8 bit */
#define pinPWM11    T1outA
#define pinPWM12    T1outB
#define pinPWM13    T1out_0A_1C    /* 8+16 bit!*/
#define pinPWM44    T5outC
#define pinPWM45    T5outB
#define pinPWM46    T4outA

#define Analog0        54
#define Analog1        55
#define Analog2        56
#define Analog3        57
#define Analog4        58
#define Analog5        59
#define Analog6        60
#define Analog7        61
#define Analog8        62
#define Analog9        63
#define Analog10    64
#define Analog11    65
#define Analog12    66
#define Analog13    67
#define Analog14    68
#define Analog15    69

#define BUS_AD0        22
#define BUS_AD1        23
#define BUS_AD2        24
#define BUS_AD3        25
#define BUS_AD4        26
#define BUS_AD5        27
#define BUS_AD6        28
#define BUS_AD7        29
#define BUS_A8        37
#define BUS_A9        36
#define BUS_A10        35
#define BUS_A11        34
#define BUS_A12        33
#define BUS_A13        32
#define BUS_A14        31
#define BUS_A15        30
#define BUS_ALE        39
#define BUS_RD        40
#define BUS_WR        41

#define USART0_RX    0
#define USART0_TX    1
#define USART1_RX    19
#define USART1_TX    18
#define USART2_RX    17
#define USART2_TX    16
#define USART3_RX    15
#define USART3_TX    14
#define I2C_SDA        20
#define I2C_SCL        21
#define SPI_MISO    50
#define SPI_MOSI    51
#define SPI_SCK        52
#define SPI_SS        53
#define JTAG_TDI    61
#define JTAG_TDO    60
#define JTAG_TMS    59
#define JTAG_TCK    58

#define AIN1        5

#define INT_0        21
#define INT_1        20
#define INT_2        19
#define INT_3        18
#define INT_4        2
#define INT_5        3

#define PC_INT_0    53
#define PC_INT_1    52
#define PC_INT_2    51
#define PC_INT_3    50
#define PC_INT_4    10
#define PC_INT_5    11
#define PC_INT_6    12
#define PC_INT_7    13
#define PC_INT_8    0
#define PC_INT_9    15
#define PC_INT_10    14
#define PC_INT_16    62
#define PC_INT_17    63
#define PC_INT_18    64
#define PC_INT_19    65
#define PC_INT_20    66
#define PC_INT_21    67
#define PC_INT_22    68
#define PC_INT_23    69

/** Special reg and bit macros for autoconverting int pin number into {REG,BIT} */

#define DREG22        DDRA
#define OREG22        PORTA
#define IREG22        PINA
#define BSET22        SET_MASK_0
#define BCLR22        CLR_MASK_0

#define DREG23        DDRA
#define OREG23        PORTA
#define IREG23        PINA
#define BSET23        SET_MASK_1
#define BCLR23        CLR_MASK_1

#define DREG24        DDRA
#define OREG24        PORTA
#define IREG24        PINA
#define BSET24        SET_MASK_2
#define BCLR24        CLR_MASK_2

#define DREG25        DDRA
#define OREG25        PORTA
#define IREG25        PINA
#define BSET25        SET_MASK_3
#define BCLR25        CLR_MASK_3

#define DREG26        DDRA
#define OREG26        PORTA
#define IREG26        PINA
#define BSET26        SET_MASK_4
#define BCLR26        CLR_MASK_4

#define DREG27        DDRA
#define OREG27        PORTA
#define IREG27        PINA
#define BSET27        SET_MASK_5
#define BCLR27        CLR_MASK_5

#define DREG28        DDRA
#define OREG28        PORTA
#define IREG28        PINA
#define BSET28        SET_MASK_6
#define BCLR28        CLR_MASK_6

#define DREG29        DDRA
#define OREG29        PORTA
#define IREG29        PINA
#define BSET29        SET_MASK_7
#define BCLR29        CLR_MASK_7

#define DREG53        DDRB
#define OREG53        PORTB
#define IREG53        PINB
#define BSET53        SET_MASK_0
#define BCLR53        CLR_MASK_0

#define DREG52        DDRB
#define OREG52        PORTB
#define IREG52        PINB
#define BSET52        SET_MASK_1
#define BCLR52        CLR_MASK_1

#define DREG51        DDRB
#define OREG51        PORTB
#define IREG51        PINB
#define BSET51        SET_MASK_2
#define BCLR51        CLR_MASK_2

#define DREG50        DDRB
#define OREG50        PORTB
#define IREG50        PINB
#define BSET50        SET_MASK_3
#define BCLR50        CLR_MASK_3

#define DREG10        DDRB
#define OREG10        PORTB
#define IREG10        PINB
#define BSET10        SET_MASK_4
#define BCLR10        CLR_MASK_4

#define DREG11        DDRB
#define OREG11        PORTB
#define IREG11        PINB
#define BSET11        SET_MASK_5
#define BCLR11        CLR_MASK_5

#define DREG12        DDRB
#define OREG12        PORTB
#define IREG12        PINB
#define BSET12        SET_MASK_6
#define BCLR12        CLR_MASK_6

#define DREG13        DDRB
#define OREG13        PORTB
#define IREG13        PINB
#define BSET13        SET_MASK_7
#define BCLR13        CLR_MASK_7

#define DREG37        DDRC
#define OREG37        PORTC
#define IREG37        PINC
#define BSET37        SET_MASK_0
#define BCLR37        CLR_MASK_0

#define DREG36        DDRC
#define OREG36        PORTC
#define IREG36        PINC
#define BSET36        SET_MASK_1
#define BCLR36        CLR_MASK_1

#define DREG35        DDRC
#define OREG35        PORTC
#define IREG35        PINC
#define BSET35        SET_MASK_2
#define BCLR35        CLR_MASK_2

#define DREG34        DDRC
#define OREG34        PORTC
#define IREG34        PINC
#define BSET34        SET_MASK_3
#define BCLR34        CLR_MASK_3

#define DREG33        DDRC
#define OREG33        PORTC
#define IREG33        PINC
#define BSET33        SET_MASK_4
#define BCLR33        CLR_MASK_4

#define DREG32        DDRC
#define OREG32        PORTC
#define IREG32        PINC
#define BSET32        SET_MASK_5
#define BCLR32        CLR_MASK_5

#define DREG31        DDRC
#define OREG31        PORTC
#define IREG31        PINC
#define BSET31        SET_MASK_6
#define BCLR31        CLR_MASK_6

#define DREG30        DDRC
#define OREG30        PORTC
#define IREG30        PINC
#define BSET30        SET_MASK_7
#define BCLR30        CLR_MASK_7

#define DREG21        DDRD
#define OREG21        PORTD
#define IREG21        PIND
#define BSET21        SET_MASK_0
#define BCLR21        CLR_MASK_0

#define DREG20        DDRD
#define OREG20        PORTD
#define IREG20        PIND
#define BSET20        SET_MASK_1
#define BCLR20        CLR_MASK_1

#define DREG19        DDRD
#define OREG19        PORTD
#define IREG19        PIND
#define BSET19        SET_MASK_2
#define BCLR19        CLR_MASK_2

#define DREG18        DDRD
#define OREG18        PORTD
#define IREG18        PIND
#define BSET18        SET_MASK_3
#define BCLR18        CLR_MASK_3

#define DREG38        DDRD
#define OREG38        PORTD
#define IREG38        PIND
#define BSET38        SET_MASK_7
#define BCLR38        CLR_MASK_7

#define DREG0        DDRE
#define OREG0        PORTE
#define IREG0        PINE
#define BSET0        SET_MASK_0
#define BCLR0        CLR_MASK_0

#define DREG1        DDRE
#define OREG1        PORTE
#define IREG1        PINE
#define BSET1        SET_MASK_1
#define BCLR1        CLR_MASK_1

#define DREG5        DDRE
#define OREG5        PORTE
#define IREG5        PINE
#define BSET5        SET_MASK_3
#define BCLR5        CLR_MASK_3

#define DREG2        DDRE
#define OREG2        PORTE
#define IREG2        PINE
#define BSET2        SET_MASK_4
#define BCLR2        CLR_MASK_4

#define DREG3        DDRE
#define OREG3        PORTE
#define IREG3        PINE
#define BSET3        SET_MASK_5
#define BCLR3        CLR_MASK_5

#define DREG54        DDRF
#define OREG54        PORTF
#define IREG54        PINF
#define BSET54        SET_MASK_0
#define BCLR54        CLR_MASK_0

#define DREG55        DDRF
#define OREG55        PORTF
#define IREG55        PINF
#define BSET55        SET_MASK_1
#define BCLR55        CLR_MASK_1

#define DREG56        DDRF
#define OREG56        PORTF
#define IREG56        PINF
#define BSET56        SET_MASK_2
#define BCLR56        CLR_MASK_2

#define DREG57        DDRF
#define OREG57        PORTF
#define IREG57        PINF
#define BSET57        SET_MASK_3
#define BCLR57        CLR_MASK_3

#define DREG58        DDRF
#define OREG58        PORTF
#define IREG58        PINF
#define BSET58        SET_MASK_4
#define BCLR58        CLR_MASK_4

#define DREG59        DDRF
#define OREG59        PORTF
#define IREG59        PINF
#define BSET59        SET_MASK_5
#define BCLR59        CLR_MASK_5

#define DREG60        DDRF
#define OREG60        PORTF
#define IREG60        PINF
#define BSET60        SET_MASK_6
#define BCLR60        CLR_MASK_6

#define DREG61        DDRF
#define OREG61        PORTF
#define IREG61        PINF
#define BSET61        SET_MASK_7
#define BCLR61        CLR_MASK_7

#define DREG41        DDRG
#define OREG41        PORTG
#define IREG41        PING
#define BSET41        SET_MASK_0
#define BCLR41        CLR_MASK_0

#define DREG40        DDRG
#define OREG40        PORTG
#define IREG40        PING
#define BSET40        SET_MASK_1
#define BCLR40        CLR_MASK_1

#define DREG39        DDRG
#define OREG39        PORTG
#define IREG39        PING
#define BSET39        SET_MASK_2
#define BCLR39        CLR_MASK_2

#define DREG4        DDRG
#define OREG4        PORTG
#define IREG4        PING
#define BSET4        SET_MASK_5
#define BCLR4        CLR_MASK_5

#define DREG17        DDRH
#define OREG17        PORTH
#define IREG17        PINH
#define BSET17        SET_MASK_0
#define BCLR17        CLR_MASK_0

#define DREG16        DDRH
#define OREG16        PORTH
#define IREG16        PINH
#define BSET16        SET_MASK_1
#define BCLR16        CLR_MASK_1

#define DREG6        DDRH
#define OREG6        PORTH
#define IREG6        PINH
#define BSET6        SET_MASK_3
#define BCLR6        CLR_MASK_3

#define DREG7        DDRH
#define OREG7        PORTH
#define IREG7        PINH
#define BSET7        SET_MASK_4
#define BCLR7        CLR_MASK_4

#define DREG8        DDRH
#define OREG8        PORTH
#define IREG8        PINH
#define BSET8        SET_MASK_5
#define BCLR8        CLR_MASK_5

#define DREG9        DDRH
#define OREG9        PORTH
#define IREG9        PINH
#define BSET9        SET_MASK_6
#define BCLR9        CLR_MASK_6

#define DREG15        DDRJ
#define OREG15        PORTJ
#define IREG15        PINJ
#define BSET15        SET_MASK_0
#define BCLR15        CLR_MASK_0

#define DREG14        DDRJ
#define OREG14        PORTJ
#define IREG14        PINJ
#define BSET14        SET_MASK_1
#define BCLR14        CLR_MASK_1

#define DREG49        DDRL
#define OREG49        PORTL
#define IREG49        PINL
#define BSET49        SET_MASK_0
#define BCLR49        CLR_MASK_0

#define DREG48        DDRL
#define OREG48        PORTL
#define IREG48        PINL
#define BSET48        SET_MASK_1
#define BCLR48        CLR_MASK_1

#define DREG47        DDRL
#define OREG47        PORTL
#define IREG47        PINL
#define BSET47        SET_MASK_2
#define BCLR47        CLR_MASK_2

#define DREG46        DDRL
#define OREG46        PORTL
#define IREG46        PINL
#define BSET46        SET_MASK_3
#define BCLR46        CLR_MASK_3

#define DREG45        DDRL
#define OREG45        PORTL
#define IREG45        PINL
#define BSET45        SET_MASK_4
#define BCLR45        CLR_MASK_4

#define DREG44        DDRL
#define OREG44        PORTL
#define IREG44        PINL
#define BSET44        SET_MASK_5
#define BCLR44        CLR_MASK_5

#define DREG43        DDRL
#define OREG43        PORTL
#define IREG43        PINL
#define BSET43        SET_MASK_6
#define BCLR43        CLR_MASK_6

#define DREG42        DDRL
#define OREG42        PORTL
#define IREG42        PINL
#define BSET42        SET_MASK_7
#define BCLR42        CLR_MASK_7

#define DREG62        DDRK
#define OREG62        PORTK
#define IREG62        PINK
#define BSET62        SET_MASK_0
#define BCLR62        CLR_MASK_0

#define DREG63        DDRK
#define OREG63        PORTK
#define IREG63        PINK
#define BSET63        SET_MASK_1
#define BCLR63        CLR_MASK_1

#define DREG64        DDRK
#define OREG64        PORTK
#define IREG64        PINK
#define BSET64        SET_MASK_2
#define BCLR64        CLR_MASK_2

#define DREG65        DDRK
#define OREG65        PORTK
#define IREG65        PINK
#define BSET65        SET_MASK_3
#define BCLR65        CLR_MASK_3

#define DREG66        DDRK
#define OREG66        PORTK
#define IREG66        PINK
#define BSET66        SET_MASK_4
#define BCLR66        CLR_MASK_4

#define DREG67        DDRK
#define OREG67        PORTK
#define IREG67        PINK
#define BSET67        SET_MASK_5
#define BCLR67        CLR_MASK_5

#define DREG68        DDRK
#define OREG68        PORTK
#define IREG68        PINK
#define BSET68        SET_MASK_6
#define BCLR68        CLR_MASK_6

#define DREG66        DDRK
#define OREG66        PORTK
#define IREG66        PINK
#define BSET66        SET_MASK_7
#define BCLR66        CLR_MASK_7

/* not used in Arduino not a pin!
 * If you have this pin on your board add it numbers in this correctly! */
/*
#define pin    pinD4
#define T1_ICP    pinD4
#define DREG        DDRD
#define OREG        PORTD
#define IREG        PIND
#define BSET        SET_MASK_4
#define BCLR        CLR_MASK_4

#define pin    pinD5
#define USART1_Xck    pinD5
#define DREG        DDRD
#define OREG        PORTD
#define IREG        PIND
#define BSET        SET_MASK_5
#define BCLR        CLR_MASK_5

#define pin    pinD6
#define T1_IN    pinD6
#define DREG        DDRD
#define OREG        PORTD
#define IREG        PIND
#define BSET        SET_MASK_6
#define BCLR        CLR_MASK_6

#define pin    pinE2
#define USART0_Xck    pinE2
#define DREG        DDRE
#define OREG        PORTE
#define IREG        PINE
#define BSET        SET_MASK_2
#define BCLR        CLR_MASK_2

#define pin    pinE6
#define T3_IN        pinE6
#define INT_6        pinE6
#define DREG        DDRE
#define OREG        PORTE
#define IREG        PINE
#define BSET        SET_MASK_6
#define BCLR        CLR_MASK_6

#define pin    pinE7
#define T3_ICP        pinE7
#define INT_7        pinE7
#define DREG        DDRE
#define OREG        PORTE
#define IREG        PINE
#define BSET        SET_MASK_7
#define BCLR        CLR_MASK_7

#define pin    pinG3
#define Tosc1        pinG3
#define DREG        DDRG
#define OREG        PORTG
#define IREG        PING
#define BSET        SET_MASK_3
#define BCLR        CLR_MASK_3

#define pin    pinG4
#define Tosc2        pinG4
#define DREG        DDRG
#define OREG        PORTG
#define IREG        PING
#define BSET        SET_MASK_4
#define BCLR        CLR_MASK_4
 *
 * "G6,G7" pin/reg group has NO any pin number or functions!
 * 
#define pin    pinH2
#define USART2_Xck    pinH2
#define DREG        DDRH
#define OREG        PORTH
#define IREG        PINH
#define BSET        SET_MASK_2
#define BCLR        CLR_MASK_2

#define pin    pinH7
#define T4_IN        pinH7
#define DREG        DDRH
#define OREG        PORTH
#define IREG        PINH
#define BSET        SET_MASK_7
#define BCLR        CLR_MASK_7

#define pin    pinJ2
#define USART3_Xck    pinJ2
#define PC_INT_11    pinJ2
#define DREG        DDRJ
#define OREG        PORTJ
#define IREG        PINJ
#define BSET        SET_MASK_2
#define BCLR        CLR_MASK_2

#define pin    pinJ3
#define PC_INT_12    pinJ3
#define DREG        DDRJ
#define OREG        PORTJ
#define IREG        PINJ
#define BSET        SET_MASK_3
#define BCLR        CLR_MASK_3

#define pin    pinJ4
#define PC_INT_13    pinJ4
#define DREG        DDRJ
#define OREG        PORTJ
#define IREG        PINJ
#define BSET        SET_MASK_4
#define BCLR        CLR_MASK_4

#define pin    pinJ5
#define PC_INT_14    pinJ5
#define DREG        DDRJ
#define OREG        PORTJ
#define IREG        PINJ
#define BSET        SET_MASK_5
#define BCLR        CLR_MASK_5

#define pin    pinJ6
#define PC_INT_15    pinJ6
#define DREG        DDRJ
#define OREG        PORTJ
#define IREG        PINJ
#define BSET        SET_MASK_6
#define BCLR        CLR_MASK_6

#define pin    pinJ7
#define DREG        DDRJ
#define OREG        PORTJ
#define IREG        PINJ
#define BSET        SET_MASK_7
#define BCLR        CLR_MASK_7
*/
#endif /* __AVR_ATmega2560__ */ 
А предыдущей версии оказались недоопределены макросы setPWMn для 8-битных счетчиков. И нашел ошибку копи-паста при определении макросов для 4-й ноги.
Arhat109 вне форума   Ответить с цитированием
Старый 17.06.2015, 23:44   #3
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Ускоряем работу Arduino

Может выложите архив с библиотекой?
Admin вне форума   Ответить с цитированием
Старый 18.06.2015, 09:24   #4
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем работу Arduino

Конечно. И с инструкцией. Только чуть позже. Я сейчас интегрирую туда вашу Cyberlib ... а там "как оказалось" Мега прописана далеко не полностью, да и функции в .cpp определены не для неё по большей части.

Приведу в порядок - обязательно выложу. Может в отдельную тему. Где-то неделька понадобится, ибо времени "не так много" как хочется. Может в отдельную темку... не думал ещё.
Arhat109 вне форума   Ответить с цитированием
Старый 18.06.2015, 16:24   #5
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем работу Arduino

Кстати. Спрошу тут, ибо не знаю "где":

Отлаживая библиотеку и прочие надобности, приходится по нескольку раз перезаливать скетчи в Мегу... вопрос: лимит на 10тыс. прошивок - это "фатально"? В смысле может стоит поберечь машинку ... кто-нибудь доходил до него?

P.S. Машинка взята как альтернатива Lego MindStorm рыбенку ... он и сам её заливает от слов "а давай вот так попробуем".
Arhat109 вне форума   Ответить с цитированием
Старый 18.06.2015, 16:56   #6
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Ускоряем работу Arduino

На самом деле для этого типа памяти и 100000 не предел.
Даже если в течении года, каждый день заливать по 27 раз то получится 10000
Но я так понимаю что каждый день заливать по 30 раз Вы не будете
Admin вне форума   Ответить с цитированием
Старый 18.06.2015, 17:58   #7
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем работу Arduino

Легко. Вчера правда не заливались... зато позавчера насчитал своих 25 тестовых заливок и "рыбенок" сервой крутил раз 15...
Arhat109 вне форума   Ответить с цитированием
Старый 18.06.2015, 20:40   #8
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем работу Arduino

Так. Месяц (сегодня оказывается ровно 1 месяц как пришла наша Мега и я впервые запустил С/С++ после давнего перерыва..) воспоминаний привел в "затык" и требуется помощь:

Как сохранить в каталоге core И стандартный файл wiring.c (там где типовой таймер задержек) И воткнуть свой собственный в файле arhat_time.c?

Ардуино IDE собирает ВСЕ файлы в единую библиотеку core.a, с которой потом линкуется скетч ... если оставить оба файла, то линковщик "сходит с ума" и ругается на двойное определение символа __vector_23 (оно и понятно! как я его понимаю...)

Вопрос: можно ли каким-то образом, используя какие-то директивы препроцессора (может предопределенные?!? есть?) указывать линковщику КАКОЕ имя (или из какой части библиотеки - квалификатор какой-нибудь бывает?) брать для этого вектора?

То есть, хочется если определено
#define _ARHAT_ 0 -- линковать вектор из wiring.c, а ежели
#define _ARHAT_ 1 -- то линковать обработчик из arhat_time.c
? как оставить оба файла (может алиас вектору как-то указывать?!?) так, чтобы они оба залезли в либу, но при этом осталась возможность указать какой конкретно сделать выбор из них при линковке? Иначе, всё "ухудшается"...
Arhat109 вне форума   Ответить с цитированием
Старый 19.06.2015, 08:56   #9
Arhat109
Senior Member
 
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0
Arhat109 is an unknown quantity at this point
По умолчанию Re: Ускоряем работу Arduino

по вопросу, чего нарыл вчера сам:
1. Линковка файлов производится согласно bootstrap описанию для линкера, который имеет в названии crt"тип_проца".o. Собственно в нем и находятся все сегменты типов памяти, стартовые адреса линковки и типовые названия векторов прерываний их количество и прочая, прочая... там же определены и "волшебные" имена main() и exit(). Лежит это всё в недрах avr-gcc.

По-просту: если обработчик прерывания назван "неверно" (__vectorXX), то он тупо НЕ будет воткнут в свое место программы.

2. Ардуино ИДЕ, действительно собирает все исходники из папки "чего-то-там/core/чего-то_ишо" в единую библиотеку с названием core.a И уже потом отдает весь пирог на сборку со скетчем. Как управлять этим процессом (например пришить свою, уже компиленную либу) - так и не нашел.

Соответственно, "имя" (любое) может быть определено ИЛИ в библиотеке (но один раз!) ИЛИ в скетче.

Отсюда: переопределение вектора прерывания таймера 0 (использован в wiring.c) возможно только при отказе от всего файла wiring.c, где он определен. Впрочем, видимо так и сделаю.
Кривость типового таймера, которую считаю "фатальной":
Подсчет миллисекунд через накопление остатков в переменной fract. Это приводит к тому, что каждую 42-ю миллисекунду происходит "рывок" таймера в виде 39,40,41, ... , 43, 44 ... сразу на 2 миллисекунды. Соответственно, упрощенное решение для millis() в виде получение подсчитанного числа миллисекунд И без учета этих остатков и текущего состояния счетчика таймера (важны 2 старших бита) приводит к скачкам времени, и совершенно неверной работе например такого кода: millis()%250. Как понимаю, именно из-за таких "глюков" функция delay() реализована через micros(), а не millis().

В итоге. Надо менять всю работу файла wiring.c.

Вопрос: насколько будет удобной библиотека, инсталляция которой будет требовать удаления файла из каталога, в частности файла wiring.c?
Arhat109 вне форума   Ответить с цитированием
Старый 19.06.2015, 11:27   #10
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Ускоряем работу Arduino

Цитата:
Вопрос: насколько будет удобной библиотека, инсталляция которой будет требовать удаления файла из каталога, в частности файла wiring.c?
Для меня с этим нет проблем, а вот для новичка возможно это будет сложно
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 24 (пользователей: 0 , гостей: 24)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 08:02. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика