tinygo/src/machine/board_arduino_mega2560.go
Yurii Soldak c119721e3b atmega2560: support UART1-3
+ example for uart
2022-06-18 09:26:12 +02:00

166 строки
2,7 КиБ
Go

//go:build arduino_mega2560
// +build arduino_mega2560
package machine
import (
"device/avr"
"runtime/interrupt"
)
// Return the current CPU frequency in hertz.
func CPUFrequency() uint32 {
return 16000000
}
const (
AREF Pin = NoPin
LED Pin = PB7
A0 Pin = PF0
A1 Pin = PF1
A2 Pin = PF2
A3 Pin = PF3
A4 Pin = PF4
A5 Pin = PF5
A6 Pin = PF6
A7 Pin = PF7
A8 Pin = PK0
A9 Pin = PK1
A10 Pin = PK2
A11 Pin = PK3
A12 Pin = PK4
A13 Pin = PK5
A14 Pin = PK6
A15 Pin = PK7
// Analog Input
ADC0 Pin = PF0
ADC1 Pin = PF1
ADC2 Pin = PF2
ADC3 Pin = PF3
ADC4 Pin = PF4
ADC5 Pin = PF5
ADC6 Pin = PF6
ADC7 Pin = PF7
ADC8 Pin = PK0
ADC9 Pin = PK1
ADC10 Pin = PK2
ADC11 Pin = PK3
ADC12 Pin = PK4
ADC13 Pin = PK5
ADC14 Pin = PK6
ADC15 Pin = PK7
// Digital pins
D0 Pin = PE0
D1 Pin = PE1
D2 Pin = PE4
D3 Pin = PE5
D4 Pin = PG5
D5 Pin = PE3
D6 Pin = PH3
D7 Pin = PH4
D8 Pin = PH5
D9 Pin = PH6
D10 Pin = PB4
D11 Pin = PB5
D12 Pin = PB6
D13 Pin = PB7
D14 Pin = PJ1 // TX3
D15 Pin = PJ0 // RX3
D16 Pin = PH1 // TX2
D17 Pin = PH0 // RX2
D18 Pin = PD3 // TX1
D19 Pin = PD2 // RX1
D20 Pin = PD1
D21 Pin = PD0
D22 Pin = PA0
D23 Pin = PA1
D24 Pin = PA2
D25 Pin = PA3
D26 Pin = PA4
D27 Pin = PA5
D28 Pin = PA6
D29 Pin = PA7
D30 Pin = PC7
D31 Pin = PC6
D32 Pin = PC5
D33 Pin = PC4
D34 Pin = PC3
D35 Pin = PC2
D36 Pin = PC1
D37 Pin = PC0
D38 Pin = PD7
D39 Pin = PG2
D40 Pin = PG1
D41 Pin = PG0
D42 Pin = PL7
D43 Pin = PL6
D44 Pin = PL5
D45 Pin = PL4
D46 Pin = PL3
D47 Pin = PL2
D48 Pin = PL1
D49 Pin = PL0
D50 Pin = PB3
D51 Pin = PB2
D52 Pin = PB1
D53 Pin = PB0
)
// UART pins
const (
UART_TX_PIN Pin = UART0_TX_PIN
UART_RX_PIN Pin = UART0_RX_PIN
UART0_TX_PIN Pin = D1
UART0_RX_PIN Pin = D0
UART1_TX_PIN Pin = D18
UART1_RX_PIN Pin = D19
UART2_TX_PIN Pin = D16
UART2_RX_PIN Pin = D17
UART3_TX_PIN Pin = D14
UART3_RX_PIN Pin = D15
)
var (
UART1 = &_UART1
_UART1 = UART{
Buffer: NewRingBuffer(),
dataReg: avr.UDR1,
baudRegH: avr.UBRR1H,
baudRegL: avr.UBRR1L,
statusRegA: avr.UCSR1A,
statusRegB: avr.UCSR1B,
statusRegC: avr.UCSR1C,
}
UART2 = &_UART2
_UART2 = UART{
Buffer: NewRingBuffer(),
dataReg: avr.UDR2,
baudRegH: avr.UBRR2H,
baudRegL: avr.UBRR2L,
statusRegA: avr.UCSR2A,
statusRegB: avr.UCSR2B,
statusRegC: avr.UCSR2C,
}
UART3 = &_UART3
_UART3 = UART{
Buffer: NewRingBuffer(),
dataReg: avr.UDR3,
baudRegH: avr.UBRR3H,
baudRegL: avr.UBRR3L,
statusRegA: avr.UCSR3A,
statusRegB: avr.UCSR3B,
statusRegC: avr.UCSR3C,
}
)
func init() {
interrupt.New(irq_USART1_RX, _UART1.handleInterrupt)
interrupt.New(irq_USART2_RX, _UART2.handleInterrupt)
interrupt.New(irq_USART3_RX, _UART3.handleInterrupt)
}