make: check if git is available before calculate version
[pyfrprog.git] / pkernel / uart.c
index 256500ef6bba12dc14300160bccc720a520c6d8a..53106a6107ed9c8af522bf06d16687bbeec88c6c 100644 (file)
-/* 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<strlen(Name2); i++)   /* go through string                     */
-  {
-    if (Name2[i] == 10)
-      Putch4(13);
-    Putch4(Name2[i]);              /* send it out                           */
-  }
-}
-
-
-char Echo4(void)        /* Echo UART and return ch */
-{
-  char ch;
-  
-  Puts4("UART 4 receive: ");      // send text to UART
-  ch = RDR04;                     // readout character              
-  Putch4(ch);                         // send character to UART                 
-  if (ch==13)  
-    Putch4(10);
-
-  return (ch);
+       // Initialize UART asynchronous mode
+       BGR04 = 138; // 115200 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 Puthex4(unsigned long n, unsigned char digits)
+void Putch4(unsigned char ch) /* sends a char */
 {
-   unsigned char digit=0,div=0,i;
-
-   div=(4*(digits-1)); /* init shift divisor */
-   for (i=0;i<digits;i++)
-   {
-     digit = ((n >> 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<digits-1)
-                       buf[i] = ' ';
-         }             
-    }
-    
-       Puts4(buf);                                     /* send string */
 }