+++ /dev/null
-# 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 parent directory\n"
-else
-include $(MAKERULES_DIR)/Makefile.rules
-endif
-
+++ /dev/null
-# -*- makefile -*-
-
-bin_PROGRAMS = eb_pwr
-
-eb_pwr_SOURCES = pwrstep.c uart.c main.c
-
-eb_pwr_LIBS = can
+++ /dev/null
-////////////////////////////////////////////////////////////////////////////////
-//
-// 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();
-
- }
-}
-
-
-
+++ /dev/null
-#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
+++ /dev/null
-#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
+++ /dev/null
-\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
+++ /dev/null
-#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
bin_PROGRAMS = test22
-test22_SOURCES = main.c pll_init.c
-test22_LIBS =
+test22_SOURCES = main.c pll_init.c lpcan.h can_btr.c
-link_VARIANTS = ram
- \r
+\r
\r
#include <lpc23xx.h> /* LPC23xx definitions */\r
#include <types.h>\r
\r
#include "pll_init.h"\r
#include "system_def.h"\r
+#include "lpcan.h"\r
\r
\r
#define DELAY_TIME 10000000\r
\r
\r
\r
-__inline void rele_on(uint8_t rele) \r
+__inline void rele_on(uint8_t rele)\r
{\r
- IOSET1 = 1 << rele; \r
+ IOSET1 = 1 << rele;\r
}\r
\r
__inline void rele_off(uint8_t rele)\r
{\r
- IOCLR1 = 1 << rele; \r
+ IOCLR1 = 1 << rele;\r
}\r
\r
\r
-__inline rele_init(void)\r
+__inline void rele_init(void)\r
{\r
IODIR1 |= (1<<RELE0) | (1<<RELE1) | (1<<RELE2) | (1<<RELE3) | (1<<RELE4) | (1<<RELE5);\r
SET_PIN(PINSEL2, RELE0, PINSEL_0); // neni moc optilalni ale je to hezky prehledny\r
\r
__inline void opto_input_init(void)\r
{\r
- FIO2DIR &= ~( (1<<OP_IN0) | (1<<OP_IN1) | (1<<OP_IN2)); \r
- SET_PIN(PINSEL4, OP_IN0, PINSEL_0); \r
- SET_PIN(PINSEL4, OP_IN1, PINSEL_0); \r
- SET_PIN(PINSEL4, OP_IN2, PINSEL_0); \r
+ FIO2DIR &= ~( (1<<OP_IN0) | (1<<OP_IN1) | (1<<OP_IN2));\r
+ SET_PIN(PINSEL4, OP_IN0, PINSEL_0);\r
+ SET_PIN(PINSEL4, OP_IN1, PINSEL_0);\r
+ SET_PIN(PINSEL4, OP_IN2, PINSEL_0);\r
\r
\r
}\r
\r
void can_rx(int device, int events) {\r
\r
- \r
+\r
deb_led_change(LEDB);\r
}\r
- \r
+\r
void timer0_isr(void) __attribute__ ((interrupt));\r
-void timer0_isr(void) \r
-{ \r
- \r
- \r
+void timer0_isr(void)\r
+{\r
+\r
+\r
deb_led_change(LEDR);\r
T0IR |= 0x00000001; // Clear match0 interrupt\r
VICVectAddr = 0x00000000;\r
#define PERIOD_2 (PCLK/1000)\r
/**\r
* initializes timer T0 to raise an interrupt and to reset T0counter when it matches T0MatchRegister0\r
- * @param \r
+ * @param\r
*/\r
static void Init_timer(void)\r
{\r
VICVectCntl4 = 0x20|4; /* Enable this vector and assign Timer IRQ to it */\r
VICIntEnable = 0x00000010; /* Enable the interrupt of timer0*/\r
\r
- \r
+\r
T0MR0 = PERIOD_2; //Match 0 control register = 65536\r
T0MCR = 0x3; //resets timer0 and generates interrupt when timer0 counter match MR0 register\r
\r
\r
mem_map(MEMMAP_FLASH);\r
mam_set(MAMCR_ON, MAMTIM_4);\r
- pll_init(5, 72, CLKSRCSEL_MAIN_OSC); \r
+ pll_init(5, 72, CLKSRCSEL_MAIN_OSC);\r
usb_clk(5);\r
rele_init(); // RELE INIT\r
deb_led_init(); // deb led init\r
\r
PCLKSEL1 |= (1<<2);\r
SCS |= 1;\r
- \r
+\r
PCONP |= (1<<13);\r
Init_timer();\r
+\r
+\r
+\r
+\r
}\r
\r
\r
uint8_t ccode = 0;\r
\r
\r
- \r
+\r
init_hw();\r
\r
while(1)\r
\r
\r
\r
- \r
+\r
}\r
# Set default C flags. If theese are set elsewhere (e.g. on a command
# line), these default flags are not used.
DEBUG ?= -g
-OPTIMIZE ?= -O2
+#OPTIMIZE ?= -O2
+OPTIMIZE ?= -O0
LPC_BAUD = 38400
LPC_TTY ?= /dev/ttyUSB0
+++ /dev/null
-# -*- makefile -*-
-
-ARCH=arm
-MACH=lpc23xx
-BOARD=lpc2364_addat
-
-CROSS_COMPILE = arm-elf-
-TARGET_ARCH = -mcpu=arm7tdmi
-
-
-ifndef GCC_VERSION
- export GCC_VERSION:=$(shell $(CROSS_COMPILE)gcc -dumpversion)
-
- ifneq ($(GCC_VERSION),3.4.3)
- $(warning You are using a different compiler from gcc 3.4.3. This board is known not to work with some newver versions (4.3))
- endif
-endif
-
-# Set default C flags. If theese are set elsewhere (e.g. on a command
-# line), these default flags are not used.
-DEBUG ?= -g
-OPTIMIZE ?= -O2
-
-LPC_BAUD = 38400
-LPC_TTY ?= /dev/ttyUSB0
-LPC_XTAL = 10000
-TOLPC = $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/bin-utils/tolpc --baud $(LPC_BAUD) --sdev $(LPC_TTY) -q $(LPC_XTAL) -v -L -f
-LOAD_CMD-ram = $(TOLPC)
-LOAD_CMD-flash = load() { HEX=$(LOCAL_BUILD_DIR)/$$(basename $$1).hex; $(CROSS_COMPILE)objcopy -O ihex $$1 $$HEX; $(MAKERULES_DIR)/$(COMPILED_DIR_NAME)/bin-utils/lpc21isp -control $$HEX $(LPC_TTY) $(LPC_BAUD) $(LPC_XTAL); }; load
-
-
-#LOAD_CMD-ramisp = $(TOLPC)
-LOAD_CMD-mpram = $(TOLPC)
-LOAD_CMD-mpflash = $(LOAD_CMD-flash)
-
-# $(CROSS_COMPILE)objcopy -O ihex in out
-# lpc21isp vstup.hex $(LPC_TTY) $(LPC_BAUD) $(LPC_XTAL)
-
-# This selects linker script
-LD_SCRIPT=lpc2364
-DEFAULT_LD_SCRIPT_VARIANT=ram flash
-
-#OUTPUT_FORMATS = bin hex srec
-
-###
-CONFIG_USB_BASE=
-CONFIG_USB_PDIUSB=
-CONFIG_USB_MORE=
-CONFIG_CMDPROC_TEST=n
-
-LN_HEADERS=y
#define BOARD_LPCEUROBOT
#define CPU_REF_HZ 10000000l /* reference clock */
-#define CPU_SYS_HZ (4*CPU_REF_HZ)/* system clock */
-#define CPU_APB_HZ (CPU_SYS_HZ/2)/* APB clock */
+#define CPU_SYS_HZ 72000000l/* system clock */
+#define CPU_APB_HZ (CPU_SYS_HZ/4)/* APB clock */
#define CPU_VPB_HZ CPU_APB_HZ /* VPB clock = APB clock, multiple definition */
unsigned long cpu_ref_hz; /* actual external XTAL reference */
volatile unsigned long msec_time;
-#define SCI_RS232_CHAN_DEFAULT 1
-
-/* #define DEB_LED_INIT() \ */
-/* do {\ */
-/* *DIO_PEDR=0x00;\ */
-/* SHADOW_REG_SET(DIO_PEDDR,0x0f); /\* set PJ.1, PJ.2, PJ.3 LED output *\/ \ */
-/* } while (0) */
-
-/* #define DEB_LED_OFF(num) \ */
-/* (*DIO_PEDR |= PEDR_PE0DRm << (num)) */
-/* #define DEB_LED_ON(num) \ */
-/* (*DIO_PEDR &=~(PEDR_PE0DRm << (num))) */
#endif /* _SYSTEM_DEF_H_ */
#include <lpc21xx.h>
-#define __LED_SHIFT 21
+#define __LED_SHIFT 25
#define __LED_MASK 0x0f
#define LEDR (1<<0) // LED R (1<<21)
static inline unsigned
__deb_led_get()
{
- return (IOPIN0 >> __LED_SHIFT) & __LED_MASK;
+ return (FIO1PIN >> __LED_SHIFT) & __LED_MASK;
}
static inline void
__deb_led_on(unsigned leds)
{
- IOSET0 = (leds & __LED_MASK) << __LED_SHIFT;
+ FIO1SET = (leds & __LED_MASK) << __LED_SHIFT;
}
static inline void
__deb_led_off(unsigned leds)
{
- IOCLR0 = (leds & __LED_MASK) << __LED_SHIFT;
+ FIO1CLR = (leds & __LED_MASK) << __LED_SHIFT;
}
static inline void
static inline void
__deb_led_init()
{
- IO0DIR |= (__LED_MASK << __LED_SHIFT);
+ FIO1DIR |= (__LED_MASK << __LED_SHIFT);
__deb_led_set(0);
}