X-Git-Url: http://git.asbjorn.biz/?p=rapper.git;a=blobdiff_plain;f=bitbucket_lpc1768%2Fio-pin.ss;fp=bitbucket_lpc1768%2Fio-pin.ss;h=0000000000000000000000000000000000000000;hp=5b8cda92141e9cd673157176fc73dc80db18b84e;hb=7964505b5eaf8be846f82c6c3c5a3f6c9dc84ede;hpb=dddaffd50b66ca9c149601a71673a66b90924b52 diff --git a/bitbucket_lpc1768/io-pin.ss b/bitbucket_lpc1768/io-pin.ss deleted file mode 100644 index 5b8cda9..0000000 --- a/bitbucket_lpc1768/io-pin.ss +++ /dev/null @@ -1,76 +0,0 @@ -#lang scribble/text -@(define ports '(P0 P1 P2 P3 P4)) -@(define registers '(LPC_GPIO0 LPC_GPIO1 LPC_GPIO2 LPC_GPIO3 LPC_GPIO4)) -/* - * IO functions for NXP LPC1768. (generated file, check io-pin.ss) - * - * See also: http://bitbucket.org/jpc/lpc1768/ - * - * Copyright (c) 2010 LoEE - Jakub Piotr Cłapa - * This program is released under the new BSD license. - */ -#ifndef IO_PIN_H -#define IO_PIN_H - -#include "CMSIS/LPC17xx.h" - -enum pin_port { -@(add-newlines - (for/list ([i (in-naturals)] - [port ports]) - @list{@port = @(* i 32),})) -}; - -enum pin_dir { - PIN_IN = 0, - PIN_OUT = 1, -}; - -extern void invalid_pin_error () __attribute__((error ("Invalid IO pin number."))); - -@(define INLINE "extern __inline__ __attribute__((always_inline))") -@(define-syntax-rule (switch pin_no i register template) - @list{switch(pin_no) { - @(add-newlines - (for/list ([i (in-naturals)] - [register registers]) - @list{case @(* i 32) ... @(sub1 (* (add1 i) 32)): - @template})) - default: - invalid_pin_error (); - break; - }}) - -@INLINE -int pin_read (int pin_no) -{ - @(switch @{pin_no} i register - @list{return @|register|->FIOPIN & (1 << (pin_no - @(* i 32)));}) - return 0; -} - -@INLINE -void pin_write (int pin_no, int value) -{ - @(switch @{pin_no} i register - @list{if (value) { - @|register|->FIOSET = (1 << (pin_no - @(* i 32))); - } else { - @|register|->FIOCLR = (1 << (pin_no - @(* i 32))); - } - break;}) -} - -@INLINE -void pin_dir (int pin_no, enum pin_dir dir) -{ - @(switch @{pin_no} i register - @list{if (dir == PIN_OUT) { - @|register|->FIODIR @"|=" (1 << (pin_no - @(* i 32))); - } else { - @|register|->FIODIR @"&=" (1 << (pin_no - @(* i 32))); - } - break;}) -} - -#endif \ No newline at end of file