]> rtime.felk.cvut.cz Git - sysless.git/commitdiff
eb_pwr: inital load
authorJiri Kubias <jiri.kubias@gmail.com>
Wed, 30 Apr 2008 22:18:38 +0000 (00:18 +0200)
committerJiri Kubias <jiri.kubias@gmail.com>
Wed, 30 Apr 2008 22:18:38 +0000 (00:18 +0200)
app/eb_pwr/Makefile [new file with mode: 0644]
app/eb_pwr/Makefile.omk [new file with mode: 0644]
app/eb_pwr/main.c [new file with mode: 0644]
app/eb_pwr/pwrstep.c [new file with mode: 0644]
app/eb_pwr/pwrstep.h [new file with mode: 0644]
app/eb_pwr/uart.c [new file with mode: 0644]
app/eb_pwr/uart.h [new file with mode: 0644]

diff --git a/app/eb_pwr/Makefile b/app/eb_pwr/Makefile
new file mode 100644 (file)
index 0000000..08cf5ff
--- /dev/null
@@ -0,0 +1,14 @@
+# Generic directory or leaf node makefile for OCERA make framework
+
+ifndef MAKERULES_DIR
+MAKERULES_DIR := $(shell ( old_pwd="" ;  while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd`  ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) )
+endif
+
+ifeq ($(MAKERULES_DIR),)
+all : default
+.DEFAULT::
+       @echo -e "\nThe Makefile.rules has not been found in this or partent directory\n"
+else   
+include $(MAKERULES_DIR)/Makefile.rules
+endif
+
diff --git a/app/eb_pwr/Makefile.omk b/app/eb_pwr/Makefile.omk
new file mode 100644 (file)
index 0000000..803c84f
--- /dev/null
@@ -0,0 +1,7 @@
+# -*- makefile -*-
+
+bin_PROGRAMS = eb_pwr
+
+eb_pwr_SOURCES = pwrstep.c uart.c main.c
+
+eb_pwr_LIBS = can
diff --git a/app/eb_pwr/main.c b/app/eb_pwr/main.c
new file mode 100644 (file)
index 0000000..dd171a0
--- /dev/null
@@ -0,0 +1,275 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//                 Eurobot POWER BOAD  (with LPC2129)
+//
+// Description
+// -----------
+// This software controls the eurobot powerboard 
+// Author : Jiri Kubias DCE CVUT
+//
+//
+////////////////////////////////////////////////////////////////////////////////
+
+#include <lpc21xx.h>                            /* LPC21xx definitions */
+#include <string.h>
+#include <deb_led.h>
+#include <system_def.h>
+#include <periph/can.h>
+#include <can_ids.h>
+
+
+#include "pwrstep.h"
+#include "uart.h"
+
+#define CAN_SPEED      1000000
+#define CAN_ISR                0
+#define ADC_ISR                1
+#define TIME_ISR       2
+
+
+#define CAN_TRY                20
+
+#define ALERT_LOW      1
+#define ALERT_MAIN     2
+#define ALERT_BYE      3
+#define ALERT_33V      4
+#define ALERT_50V      5
+#define ALERT_80V      6
+
+#define BAT_CNT                10
+#define        BAT_STAT_LOW    120000
+#define BAT_STAT_MAIN  110000
+#define BAT_STAT_BYE   105000
+
+#define V33_MIN                30000
+#define V50_MIN                45000
+#define V80_MIN                75000
+
+#define CAN_TIMEOUT    10
+
+//extern unsigned int adc_val[4];
+
+//#define TEST
+
+can_msg_t msg;// = {.flags = 0, .dlc = 1};
+
+unsigned int time_blink = 0;
+unsigned int time_send_can = 0;
+unsigned int time_alert = 0;
+
+unsigned int time_timeout = 0; 
+       
+unsigned int can_send_cnt = 0;
+
+
+void led_blik()
+{
+       if (time_blink == 0) time_blink = time_ms + 500;
+
+       if (time_ms > time_blink)
+       {
+               deb_led_change(LEDG);
+               time_blink = time_ms + 500;
+       }
+
+}
+
+void send_alert(unsigned char type )
+{
+       
+       
+       msg.id = CAN_PWR_ALERT;
+       msg.flags = 0;
+       msg.dlc = 1;
+       msg.data[0] = type;
+       
+       while (can_tx_msg(&msg));
+                       
+}
+               
+unsigned int cnt_12V;
+unsigned int cnt_10V;
+
+
+
+void power_alert()
+{
+       if (time_alert == 0) time_alert = time_ms + 200;
+
+       if (time_ms > time_alert)
+       {
+               
+               if (adc_val[0] < BAT_STAT_BYE)          // bat < 9,5V
+               {
+                       deb_led_on(LEDR);
+                       send_alert(ALERT_BYE);
+                       pwr_50(PWR_OFF);
+                       //pwr_80(PWR_OFF);      
+                       pwr_33(PWR_OFF);
+                       
+
+               }
+               else if (adc_val[0] < BAT_STAT_MAIN)            // bat < 12V
+               {
+                       deb_led_on(LEDB);
+                       ++cnt_10V;
+                       if (cnt_10V > BAT_CNT)
+                       {
+                               send_alert(ALERT_MAIN);
+                               pwr_50(PWR_OFF);
+                               //pwr_80(PWR_OFF);      
+                       }
+                       
+
+               }       
+               else if (adc_val[0] < BAT_STAT_LOW)             // bat < 12V
+               {
+                       deb_led_on(LEDY);
+                       ++cnt_12V;
+                       if (cnt_12V > BAT_CNT)
+                               send_alert(ALERT_LOW);  
+               }
+               else 
+                       deb_led_off(LEDY);
+               
+               if (cnt_10V < BAT_CNT)
+               {
+                       if (adc_val[3] < V80_MIN)
+                       {
+                               send_alert(ALERT_80V);  
+                       }
+                       
+                       if (adc_val[2] < V50_MIN)
+                       {
+                               send_alert(ALERT_50V);  
+                       }
+                       
+                       if (adc_val[1] < V33_MIN)
+                       {
+                               send_alert(ALERT_33V);  
+                       }
+               }
+               time_alert = time_ms + 500;
+       }
+}
+
+void send_can()
+{
+       if (time_send_can == 0) time_send_can = time_ms + 200;
+
+       if (time_ms > time_send_can)
+       {
+               deb_led_on(LEDB);
+
+               msg.id = CAN_PWR_ADC1;
+               msg.flags = 0;
+               msg.dlc = 8;
+               msg.data[0] = (((adc_val[0]) >> 24) & 0xFF);
+               msg.data[1] = (((adc_val[0]) >> 16) & 0xFF);
+               msg.data[2] = (((adc_val[0]) >> 8) & 0xFF);
+               msg.data[3] = (((adc_val[0]) >> 0) & 0xFF);
+               msg.data[4] = (((adc_val[1]) >> 24) & 0xFF);
+               msg.data[5] = (((adc_val[1]) >> 16) & 0xFF);
+               msg.data[6] = (((adc_val[1]) >> 8) & 0xFF);
+               msg.data[7] = (((adc_val[1]) >> 0) & 0xFF);
+                       
+               time_timeout = time_ms + CAN_TIMEOUT;
+               //while(can_tx_msg(&msg) & (time_timeout >  time_ms))
+
+               while (can_tx_msg(&msg));
+                       
+               
+               msg.id = CAN_PWR_ADC2;
+               msg.flags = 0;
+               msg.dlc = 8;
+               msg.data[0] = (((adc_val[2]) >> 24) & 0xFF);
+               msg.data[1] = (((adc_val[2]) >> 16) & 0xFF);
+               msg.data[2] = (((adc_val[2]) >> 8) & 0xFF);
+               msg.data[3] = (((adc_val[2]) >> 0) & 0xFF);
+               msg.data[4] = (((adc_val[3]) >> 24) & 0xFF);
+               msg.data[5] = (((adc_val[3]) >> 16) & 0xFF);
+               msg.data[6] = (((adc_val[3]) >> 8) & 0xFF);
+               msg.data[7] = (((adc_val[3]) >> 0) & 0xFF);
+               
+               time_timeout = time_ms + CAN_TIMEOUT;
+               //while(can_tx_msg(&msg) & (time_timeout >  time_ms))
+               
+               while (can_tx_msg(&msg));
+               deb_led_off(LEDB);
+               time_send_can = time_ms + 500;
+       }
+
+}
+
+
+
+
+void can_rx(can_msg_t *msg) {
+       can_msg_t rx_msg;
+       
+       memcpy(&rx_msg, msg, sizeof(can_msg_t));
+       
+
+       if (rx_msg.id == CAN_PWR)
+       {
+               if(rx_msg.data[0] & (1<<0)) pwr_33(PWR_ON);
+               if(rx_msg.data[0] & (1<<1)) pwr_50(PWR_ON);
+               if(rx_msg.data[0] & (1<<2)) pwr_80(PWR_ON);
+               
+               if(rx_msg.data[0] & (1<<3)) pwr_33(PWR_OFF);
+               if(rx_msg.data[0] & (1<<4)) pwr_50(PWR_OFF);
+               if(rx_msg.data[0] & (1<<5)) pwr_80(PWR_OFF);
+       }       
+}
+
+
+
+void init_perip(void)     // inicializace periferii mikroprocesoru
+{
+
+       init_pwr();
+       can_init_baudrate(CAN_SPEED, CAN_ISR, can_rx);
+       init_adc(ADC_ISR);
+       init_time (TIME_ISR);
+       init_uart0((int)9600 ,UART_BITS_8, UART_STOP_BIT_1, UART_PARIT_OFF, 0 );
+
+
+#ifdef TEST
+       pwr_33(PWR_ON);
+       pwr_50(PWR_ON);
+       pwr_80(PWR_ON);
+#else
+       pwr_33(PWR_OFF);
+       pwr_50(PWR_OFF);
+       pwr_80(PWR_OFF);
+#endif
+
+       pwr_33(PWR_ON);
+       pwr_50(PWR_ON);
+       pwr_80(PWR_ON);
+}
+
+
+unsigned int time_delay = 0;
+
+
+int main (void)  {
+
+
+       init_perip();                   // sys init MCU
+
+       time_delay = time_ms + 1000;
+        
+       while(time_ms < time_delay);
+
+       while(1)
+       {                                       
+               led_blik();
+               send_can();     //FIXME
+               power_alert();
+
+       } 
+}
+
+
+
diff --git a/app/eb_pwr/pwrstep.c b/app/eb_pwr/pwrstep.c
new file mode 100644 (file)
index 0000000..dce248f
--- /dev/null
@@ -0,0 +1,227 @@
+#include <lpc21xx.h>                          // LPC21XX Peripheral Registers\r
+#include <types.h> \r
+#include <deb_led.h>\r
+#include <system_def.h>\r
+#include "pwrstep.h"\r
+\r
+\r
+#define PWR33  (1<<22) \r
+#define PWR50  (1<<24)\r
+#define PWR80  (1<<23)\r
+\r
+#define ADC0   (1<<27) \r
+#define ADC1   (1<<28) \r
+#define ADC2   (1<<29) \r
+#define ADC3   (1<<30) \r
+\r
+\r
+\r
+#define ADCCH0 22\r
+#define ADCCH1 24\r
+#define ADCCH2 26\r
+#define ADCCH3 28\r
+\r
+#define TIME1MS        ((CPU_APB_HZ) / 1000)\r
+\r
+//  tohla me byt definovano nekde jinde  FIXME\r
+\r
+\r
+#define ADC_PIN_0   0x1\r
+#define ADC_PIN_1   0x2\r
+#define ADC_PIN_2   0x4\r
+#define ADC_PIN_3   0x8\r
+\r
+#define ADC_CR_ADC0 0x1\r
+#define ADC_CR_ADC1 0x2\r
+#define ADC_CR_ADC2 0x4\r
+#define ADC_CR_ADC3 0x8\r
+\r
+#define ADC_CR_CLK_DIV_1       (1<<8)  // this nuber should be multipied  sampe\r
+                                                               // requested divisor 4  ---- clk_div = 4 * ADC_CR_CLK_DIV_1\r
+#define ADC_CR_BURST           (1<<16)\r
+#define ADC_CR_CLKS_11         (0<<17)\r
+#define ADC_CR_CLKS_10         (1<<17)\r
+#define ADC_CR_CLKS_9          (2<<17)\r
+#define ADC_CR_CLKS_8          (3<<17)\r
+#define ADC_CR_CLKS_7          (4<<17)\r
+#define ADC_CR_CLKS_6          (5<<17)\r
+#define ADC_CR_CLKS_5          (6<<17)\r
+#define ADC_CR_CLKS_4          (7<<17)\r
+\r
+#define ADC_CR_PDN_ON          (1<<21)\r
+\r
+#define ADC_CR_START_OFF       (0<<24)\r
+#define ADC_CR_START_NOW       (1<<24)\r
+#define ADC_CR_START_P016      (2<<24)\r
+#define ADC_CR_START_P022      (3<<24)\r
+#define ADC_CR_START_MAT01     (4<<24)\r
+#define ADC_CR_START_MAT03     (5<<24)\r
+#define ADC_CR_START_MAT10     (6<<24)\r
+#define ADC_CR_START_MAT11     (7<<24)\r
+\r
+#define ADC_CR_EDGE_RISING     (0<<27)\r
+#define ADC_CR_EDGE_FALLING    (1<<27)\r
+\r
+\r
+\r
+\r
+\r
+       \r
+\r
+void pwr_33(char mode) // switch on/off 3,3V power line\r
+{\r
+       if (mode != PWR_ON)\r
+       {\r
+               IO1SET |= PWR33;        \r
+       }\r
+       else\r
+       {\r
+               IO1CLR |= PWR33;        \r
+       }\r
+}\r
+\r
+\r
+void pwr_50(char mode) // switch on/off 5V power line\r
+{\r
+       if (mode != PWR_ON)\r
+       {\r
+               IO1SET |= PWR50;        \r
+       }\r
+       else\r
+       {\r
+               IO1CLR |= PWR50;        \r
+       }\r
+}\r
+\r
+\r
+void pwr_80(char mode) // switch on/off 8V power line\r
+{\r
+       if (mode != PWR_ON)\r
+       {\r
+               IO1SET |= PWR80;        \r
+       }\r
+       else\r
+       {\r
+               IO1CLR |= PWR80;        \r
+       }\r
+}\r
+\r
+\r
+ volatile char test =0xF;\r
+\r
+void adc_isr(void) __attribute__ ((interrupt));\r
+\r
+void adc_isr(void) \r
+{\r
+       unsigned char chan =0;                                                                             \r
+       unsigned int val =0;\r
+\r
+\r
+       chan = (char) ((ADDR>>24) & 0x07);\r
+       val = ((ADDR >> 6) & 0x3FF); \r
+\r
+       \r
+\r
+\r
+       adc_val[chan] = (((val * ADC_CON_CONST + ADC_OFFSET) + adc_val[chan]) >> 1) ;\r
+\r
+       ADCR &= ~(ADC_CR_START_OFF);\r
+\r
+\r
+       switch(chan)\r
+       {\r
+               case 0:\r
+                       ADCR = ((ADC_CR_ADC1) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (20*ADC_CR_CLK_DIV_1));\r
+                       break;\r
+\r
+               case 1:\r
+                       ADCR = ((ADC_CR_ADC2) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (20*ADC_CR_CLK_DIV_1));\r
+                       break;\r
+                       \r
+               case 2:\r
+                       ADCR = ((ADC_CR_ADC3) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (20*ADC_CR_CLK_DIV_1));\r
+                       break;\r
+                       \r
+               case 3:\r
+                       ADCR = ((ADC_CR_ADC0) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (20*ADC_CR_CLK_DIV_1));\r
+                       break;                                                                                                                   \r
+       }\r
+       \r
+        VICVectAddr = 0;\r
+\r
+}\r
+\r
+\r
+void init_adc(unsigned rx_isr_vect)\r
+{\r
+       \r
+       PINSEL1 |= ((PINSEL_1 << ADCCH0) | (PINSEL_1 << ADCCH1) | (PINSEL_1 << ADCCH2) | (PINSEL_1 << ADCCH3));         \r
+\r
+       ((uint32_t*)&VICVectCntl0)[rx_isr_vect] = 0x32;\r
+       ((uint32_t*)&VICVectAddr0)[rx_isr_vect] = (unsigned) adc_isr;\r
+       VICIntEnable = 0x40000;\r
+\r
+\r
+\r
+\r
+\r
+       ADCR = ((ADC_CR_ADC0) | (ADC_CR_CLKS_11) | (ADC_CR_PDN_ON) | (ADC_CR_START_NOW) | (10*ADC_CR_CLK_DIV_1));\r
+}\r
+\r
+\r
+void init_pwr(void)   // init power lines\r
+{\r
+       IO1DIR |= (PWR33 | PWR50 | PWR80);\r
+       pwr_33(PWR_OFF);\r
+       pwr_50(PWR_OFF);\r
+       pwr_80(PWR_OFF);\r
+\r
+       //init_adc();\r
+\r
+}\r
+\r
+\r
+\r
+\r
+void tc1 (void) __attribute__ ((interrupt));\r
+\r
+void tc1 (void)   {\r
+       \r
+       time_ms +=1;\r
+       \r
+       \r
+\r
+       if (T1IR != 4)\r
+       {                       \r
+           __deb_led_on(LEDR); \r
+       }  \r
+\r
+       T1IR        = 4;                            // Vynulovani priznaku preruseni\r
+       VICVectAddr = 0;                            // Potvrzeni o obsluze preruseni\r
+}\r
+\r
+\r
+/* Setup the Timer Counter 1 Interrupt */\r
+void init_time (unsigned rx_isr_vect)\r
+{\r
+\r
+       \r
+\r
+\r
+\r
+       T1PR = 0;\r
+       T1MR2 = TIME1MS;\r
+       T1MCR = (3<<6);                 // interrupt on MR1\r
+\r
+       T1TCR = 1;                                  // Starts Timer 1 \r
+\r
+       ((uint32_t*)&VICVectAddr0)[rx_isr_vect] = (unsigned long)tc1;          // Nastaveni adresy vektotu preruseni\r
+       ((uint32_t*)&VICVectCntl0)[rx_isr_vect] = 0x20 | 0x5;                    // vyber casovece pro preruseni\r
+       VICIntEnable = (1<<5);                  // Povoli obsluhu preruseni\r
+}\r
+\r
+\r
+\r
+\r
+\r
+\r
diff --git a/app/eb_pwr/pwrstep.h b/app/eb_pwr/pwrstep.h
new file mode 100644 (file)
index 0000000..0995a86
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef PWRSTEP_H\r
+#define PWRSTEP_H\r
+\r
+#define PWR_ON 1\r
+#define PWR_OFF        0\r
+\r
+#define ADC_DIV 10\r
+#define ADC_CON_CONST 322\r
+#define ADC_OFFSET     2000\r
+\r
+\r
+       volatile unsigned int adc_val[4];\r
+\r
+/**    pwr_33 Switch on/off 3,3V power line\r
+ *  @param mode  -  PWR_ON/PWR_OFF \r
+ */\r
+void pwr_33(char mode);\r
+\r
+/**    pwr_50 Switch on/off 5,0V power line\r
+ *  @param mode  -  PWR_ON/PWR_OFF \r
+ */\r
+void pwr_50(char mode);\r
+\r
+/**    pwr_80 Switch on/off 8,0V power line\r
+ *  @param mode  -  PWR_ON/PWR_OFF \r
+ */\r
+void pwr_80(char mode);\r
+\r
+/**    init_pwr  inicializes power lines - default: all lines is off\r
+ */\r
+void init_pwr(void);\r
+\r
+\r
+/**    inicializes ADC lines and starts converion (use ISR)\r
+ *  @param rx_isr_vect  ISR vector\r
+ */\r
+void init_adc(unsigned rx_isr_vect);\r
+\r
+/** gobal time\r
+ *  @note incremented twenty 20ms, overrun every 1194hours\r
+ */\r
+volatile unsigned int time_ms;\r
+\r
+/**    inicializes time counter (use ISR)\r
+ *  @param rx_isr_vect  ISR vector\r
+ */\r
+void init_time (unsigned rx_isr_vect);\r
+#endif\r
diff --git a/app/eb_pwr/uart.c b/app/eb_pwr/uart.c
new file mode 100644 (file)
index 0000000..5b76f63
--- /dev/null
@@ -0,0 +1,100 @@
+\r
+ #include <lpc21xx.h>  \r
+ #include "uart.h"\r
+ #include <system_def.h>
+\r
+\r
+\r
+\r
+ #define  UART_DLAB            0x80\r
+\r
+\r
+void init_uart0(int baudrate, char bits, char stopbit, char parit_en, char parit_mode )        \r
+{                              \r
+\r
+       int pom , vala, valb;\r
+\r
+       PINSEL0 |= ( PINSEL_1<< 0) | ( PINSEL_1 << 2);     \r
+\r
+       U0LCR =UART_DLAB | bits | stopbit | parit_en | parit_mode;        // nastaven� datov�ho slova na 8 bit� a jeden stop bit bez parity, nastaven� DLAB na log "1"\r
+       \r
+       \r
+       pom =  (CPU_APB_HZ)/(16 * baudrate);\r
+       \r
+       vala = (CPU_APB_HZ)/(16 * pom);\r
+       valb = (CPU_APB_HZ)/(16 * (pom + 1));\r
+\r
+       vala = baudrate - vala;\r
+       valb = baudrate - valb;\r
+\r
+       if (vala < 0) vala *= -1;\r
+       if (valb < 0) valb *= -1;\r
+               \r
+       if (vala > valb) pom += 1;\r
+\r
+       U0DLL = (char) (pom & 0xFF);\r
+       U0DLM = (char) ((pom >> 8) & 0xFF);                             // nastaven� p�edd�li�ky na 57600Bd\r
+         \r
+       U0LCR &= ~UART_DLAB;              // vynulov�n� DLAB \r
+\r
+ }\r
+\r
+\r
+unsigned char uart1GetCh(void)                 // Nuceny prijem z uart1\r
+{\r
+  while (!(U1LSR & 1));                        // cekani na prichozi byte\r
+    return (unsigned char)U1RBR;               // navraceni prijateho byte\r
+}\r
+\r
+unsigned char uart0GetCh(void)                 // Nuceny prijem z uart1\r
+{\r
+  while (!(U0LSR & 1));                                // cekani na prichozi byte\r
+    return (unsigned char)U0RBR;               // navraceni prijateho byte\r
+}\r
+\r
+void uart1SendCh(char ch)                      // vyslani znaku na uart1\r
+{\r
+       while (!(U1LSR & 0x20));                // ceka na odeslani predchozich dat\r
+       U1THR=ch;                               // odeslani Byte\r
+       \r
+}\r
+\r
+void uart0SendCh(char ch)                      // vyslani znaku na uart0\r
+{\r
+       while (!(U0LSR & 0x20));                        // ceka na odeslani predchozich dat\r
+       U0THR=ch;                                                       // odeslani Byte\r
+}\r
+\r
+\r
+void init_uart1(int baudrate, char bits, char stopbit, char parit_en, char parit_mode )        \r
+{                              \r
+\r
+       int pom , vala, valb;\r
+\r
+       PINSEL0 |= ( PINSEL_1<< 16) | ( PINSEL_1 << 18);     \r
+\r
+       U1LCR =UART_DLAB | bits | stopbit | parit_en | parit_mode;        // nastaven� datov�ho slova na 8 bit� a jeden stop bit bez parity, nastaven� DLAB na log "1"\r
+       \r
+       \r
+       pom =  (CPU_APB_HZ)/(16 * baudrate);\r
+       \r
+       vala = (CPU_APB_HZ)/(16 * pom);\r
+       valb = (CPU_APB_HZ)/(16 * (pom + 1));\r
+\r
+       vala = baudrate - vala;\r
+       valb = baudrate - valb;\r
+\r
+       if (vala < 0) vala *= -1;\r
+       if (valb < 0) valb *= -1;\r
+               \r
+       if (vala > valb) pom += 1;\r
+\r
+       U1DLL = (char) (pom & 0xFF);\r
+       U1DLM = (char) ((pom >> 8) & 0xFF);                             // nastaven� p�edd�li�ky na 57600Bd\r
+         \r
+       U1LCR &= ~UART_DLAB;              // vynulov�n� DLAB \r
+\r
+ }\r
+\r
+\r
+\r
diff --git a/app/eb_pwr/uart.h b/app/eb_pwr/uart.h
new file mode 100644 (file)
index 0000000..f2acc01
--- /dev/null
@@ -0,0 +1,24 @@
+#define UART_BITS_5    0x0\r
+#define UART_BITS_6    0x1\r
+#define UART_BITS_7    0x2\r
+#define UART_BITS_8    0x3\r
+\r
+#define UART_STOP_BIT_1                (0x0 << 2)\r
+#define UART_STOP_BIT_2        (0x1 << 2)\r
+\r
+#define UART_PARIT_ENA         (0x1 << 3)\r
+#define UART_PARIT_OFF         (0x0 << 3)\r
+#define UART_PARIT_ODD         (0x0 << 4)\r
+#define UART_PARIT_EVEN        (0x1 << 4)\r
+#define UART_PARIT_FORCE_1     (0x2 << 4)\r
+#define UART_PARIT_FORCE_0     (0x3 << 4)\r
+\r
+\r
+\r
+\r
+void init_uart1(int baudrate, char bits, char stopbit, char parit_en, char parit_mode );\r
+void init_uart0(int baudrate, char bits, char stopbit, char parit_en, char parit_mode );\r
+unsigned char uart1GetCh(void);\r
+unsigned char uart0GetCh(void);\r
+void uart1SendCh(char ch);\r
+void uart0SendCh(char ch);\r