projects
/
rpikern
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
display works sortof
[rpikern]
/
src
/
serial.c
diff --git
a/src/serial.c
b/src/serial.c
index
9d1b2be
..
ba5faca
100644
(file)
--- a/
src/serial.c
+++ b/
src/serial.c
@@
-10,6
+10,7
@@
void init_serial(int baud)
{
uint32_t bdiv_fp6;
{
uint32_t bdiv_fp6;
+ mem_barrier();
REG_CR = 0; /* disable UART */
/* disable pullups for GPIO 14 & 15 */
REG_CR = 0; /* disable UART */
/* disable pullups for GPIO 14 & 15 */
@@
-32,26
+33,35
@@
void init_serial(int baud)
/* enable UART RX&TX */
REG_CR = CR_UARTEN | CR_TXEN | CR_RXEN;
/* enable UART RX&TX */
REG_CR = CR_UARTEN | CR_TXEN | CR_RXEN;
+ mem_barrier();
}
void ser_putchar(int c)
{
}
void ser_putchar(int c)
{
+ if(c == '\n') ser_putchar('\r');
+
+ mem_barrier();
while(REG_FR & FR_TXFF);
REG_DR = c & 0xff;
while(REG_FR & FR_TXFF);
REG_DR = c & 0xff;
+ mem_barrier();
}
int ser_getchar(void)
{
}
int ser_getchar(void)
{
+ mem_barrier();
while(REG_FR & FR_RXFE);
return REG_DR & 0xff;
}
while(REG_FR & FR_RXFE);
return REG_DR & 0xff;
}
+int ser_pending(void)
+{
+ mem_barrier();
+ return (REG_FR & FR_RXFE) == 0;
+}
+
void ser_printstr(const char *s)
{
while(*s) {
void ser_printstr(const char *s)
{
while(*s) {
- if(*s == '\n') {
- ser_putchar('\r');
- }
ser_putchar(*s++);
}
}
ser_putchar(*s++);
}
}