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:
Dean Camera 2010-02-23 01:03:27 +00:00
parent 2590452104
commit c24027f3b5
7 changed files with 29 additions and 11 deletions

View file

@ -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: */