X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=pyfrprog.git;a=blobdiff_plain;f=pkernel%2Fuart.c;h=53106a6107ed9c8af522bf06d16687bbeec88c6c;hp=256500ef6bba12dc14300160bccc720a520c6d8a;hb=HEAD;hpb=ccf858667cbb6492aeb2f8ec5d6c05492e926ec3 diff --git a/pkernel/uart.c b/pkernel/uart.c index 256500e..53106a6 100644 --- a/pkernel/uart.c +++ b/pkernel/uart.c @@ -1,120 +1,35 @@ -/* THIS SAMPLE CODE IS PROVIDED AS IS AND IS SUBJECT TO ALTERATIONS. FUJITSU */ -/* MICROELECTRONICS ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR */ -/* ELIGIBILITY FOR ANY PURPOSES. */ -/* (C) Fujitsu Microelectronics Europe GmbH */ -/*---------------------------------------------------------------------------*/ - #include "mb91465k.h" -#pragma section CODE=IRAM,attr=CODE -const char ASCII[] = "0123456789ABCDEF"; - void InitUart4(void) { - // Initialize UART asynchronous mode - // BGR04 = 1666; // 9600 Baud @ 16MHz - // BGR04 = 832; // 19200 Baud @ 16MHz - BGR04 = 416; // 38400 Baud @ 16MHz - SCR04 = 0x17; // 8N1 - SMR04 = 0x0d; // enable SOT3, Reset, normal mode - SSR04 = 0x00; // LSB first - PFR19 = (PFR19 & 0xFC) | 0x03; // enable UART: SIN,SOT for async. transfer - EPFR19 = 0x00; // enable UART -} - -void Putch4(unsigned char ch) /* sends a char */ -{ - while (SSR04_TDRE == 0); /* wait for transmit buffer empty */ - TDR04 = ch; /* put ch into buffer */ -} - -unsigned char Getch4(void) /* waits for and returns incomming char */ -{ - volatile unsigned ch; - - for(;;) - { - - while(SSR04_RDRF == 0) /* wait for data received */ - HWWD = 0x00; - - ch = RDR04; - - if ((SSR04 & 0xE0) != 0) /* Check for errors PE, ORE, FRE */ - { - SCR04_CRE = 1; /* Clear error flags */ - } - else - return (ch); /* return char */ - } -} - - -void Puts4(const char *Name2) /* Puts a String to UART */ -{ - volatile int i,len; - - len = strlen(Name2); - - for (i=0; i> div)&0xF); /* get hex-digit value */ - Putch4(digit + ((digit < 0xA) ? '0' : 'A' - 0xA)); - div-=4; /* next digit shift */ - } + while (SSR04_TDRE == 0); /* wait for transmit buffer empty */ + TDR04 = ch; /* put ch into buffer */ } -void Putdec4(unsigned long x, int digits) +unsigned char Getch4(void) /* waits for and returns incomming char */ { - int i; - char buf[10],sign=1; - - if (digits < 0) { /* should be print of zero? */ - digits *= (-1); - sign =1; - } - buf[digits]='\0'; /* end sign of string */ - - for (i=digits; i>0; i--) { - buf[i-1] = ASCII[x % 10]; // + '0' enough? :o - x = x/10; + volatile unsigned ch; + for(;;) { + while(SSR04_RDRF == 0) /* wait for data received */ + HWWD = 0x00; + ch = RDR04; + + if ((SSR04 & 0xE0) != 0) { /* Check for errors PE, ORE, FRE */ + SCR04_CRE = 1; /* Clear error flags */ + } else { + return (ch); /* return char*/ + } } - - if ( sign ) - { - for (i=0; buf[i]=='0'; i++) { /* no print of zero */ - if ( i