Fixed software PDI/TPI programming mode in the AVRISP project not correctly toggling just the clock pin.
Fix broken AVR8 Serial peripheral driver.
This commit is contained in:
parent
2590452104
commit
c24027f3b5
7 changed files with 29 additions and 11 deletions
|
@ -80,7 +80,7 @@
|
|||
*/
|
||||
static inline bool Serial_IsCharReceived(void);
|
||||
#else
|
||||
#define Serial_IsCharReceived() /* TODO */
|
||||
#define Serial_IsCharReceived() ((UCSR1A & (1 << RXC1)) ? true : false)
|
||||
#endif
|
||||
|
||||
/* Inline Functions: */
|
||||
|
@ -92,13 +92,27 @@
|
|||
*/
|
||||
static inline void Serial_Init(const uint32_t BaudRate, const bool DoubleSpeed)
|
||||
{
|
||||
// TODO
|
||||
UCSR1A = (DoubleSpeed ? (1 << U2X1) : 0);
|
||||
UCSR1B = ((1 << TXEN1) | (1 << RXEN1));
|
||||
UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10));
|
||||
|
||||
DDRD |= (1 << 3);
|
||||
PORTD |= (1 << 2);
|
||||
|
||||
UBRR1 = (DoubleSpeed ? SERIAL_2X_UBBRVAL(BaudRate) : SERIAL_UBBRVAL(BaudRate));
|
||||
}
|
||||
|
||||
/** Turns off the USART driver, disabling and returning used hardware to their default configuration. */
|
||||
static inline void Serial_ShutDown(void)
|
||||
{
|
||||
// TODO
|
||||
UCSR1A = 0;
|
||||
UCSR1B = 0;
|
||||
UCSR1C = 0;
|
||||
|
||||
DDRD &= ~(1 << 3);
|
||||
PORTD &= ~(1 << 2);
|
||||
|
||||
UBRR1 = 0;
|
||||
}
|
||||
|
||||
/** Transmits a given byte through the USART.
|
||||
|
@ -107,7 +121,8 @@
|
|||
*/
|
||||
static inline void Serial_TxByte(const char DataByte)
|
||||
{
|
||||
// TODO
|
||||
while (!(UCSR1A & (1 << UDRE1)));
|
||||
UDR1 = DataByte;
|
||||
}
|
||||
|
||||
/** Receives a byte from the USART.
|
||||
|
@ -116,7 +131,8 @@
|
|||
*/
|
||||
static inline uint8_t Serial_RxByte(void)
|
||||
{
|
||||
// TODO
|
||||
while (!(UCSR1A & (1 << RXC1)));
|
||||
return UDR1;
|
||||
}
|
||||
|
||||
/* Disable C linkage for C++ Compilers: */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue