From 732b905f6bdeba0551fc6b97a8a019f11b8b70fe Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Sun, 7 Oct 2012 18:53:46 +0000 Subject: named Pduino library actuall 'pduino' while keeping the object called [arduino] svn path=/trunk/externals/pduino/; revision=16347 --- Makefile | 2 +- PICduino/P16F767.INC | 502 ------------- PICduino/f767duino.HEX | 126 ---- PICduino/f767duino.asm | 1940 ------------------------------------------------ PICduino/f767duino.mcp | 30 - PICduino/f767duino.mcw | Bin 72192 -> 0 bytes PICduino/picduino.png | Bin 40478 -> 0 bytes arduino-meta.pd | 6 - pduino-meta.pd | 6 + 9 files changed, 7 insertions(+), 2605 deletions(-) delete mode 100755 PICduino/P16F767.INC delete mode 100755 PICduino/f767duino.HEX delete mode 100755 PICduino/f767duino.asm delete mode 100755 PICduino/f767duino.mcp delete mode 100755 PICduino/f767duino.mcw delete mode 100755 PICduino/picduino.png delete mode 100644 arduino-meta.pd create mode 100644 pduino-meta.pd diff --git a/Makefile b/Makefile index a0700f8..d3a6a4d 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ ## Pd library template version 1.0.13 # For instructions on how to use this template, see: # http://puredata.info/docs/developer/MakefileTemplate -LIBRARY_NAME = arduino +LIBRARY_NAME = pduino # add your .c source files, one object per file, to the SOURCES # variable, help files will be included automatically, and for GUI diff --git a/PICduino/P16F767.INC b/PICduino/P16F767.INC deleted file mode 100755 index 5b15168..0000000 --- a/PICduino/P16F767.INC +++ /dev/null @@ -1,502 +0,0 @@ - LIST -; P16F767.INC Standard Header File, Version 1.00 Microchip Technology, Inc. - NOLIST - -; This header file defines configurations, registers, and other useful bits of -; information for the PIC16F767 microcontroller. These names are taken to match -; the data sheets as closely as possible. - -; Note that the processor must be selected before this file is -; included. The processor may be selected the following ways: - -; 1. Command line switch: -; C:\ MPASM MYFILE.ASM /PIC16F767 -; 2. LIST directive in the source file -; LIST P=PIC16F767 -; 3. Processor Type entry in the MPASM full-screen interface - -;========================================================================== -; -; Revision History -; -;========================================================================== - -;Rev: Date: Reason: -;1.00 05/05/03 Initial Release -;1.01 10/21/03 Made changes to Program Memory register names. -;1.02 04/07/04 Added INT0IE & INT0IF bit names. - -;========================================================================== -; -; Verify Processor -; -;========================================================================== - - IFNDEF __16F767 - MESSG "Processor-header file mismatch. Verify selected processor." - ENDIF - -;========================================================================== -; -; Register Definitions -; -;========================================================================== - -W EQU H'0000' -F EQU H'0001' - -;----- Register Files------------------------------------------------------ - -INDF EQU H'0000' -TMR0 EQU H'0001' -PCL EQU H'0002' -STATUS EQU H'0003' -FSR EQU H'0004' -PORTA EQU H'0005' -PORTB EQU H'0006' -PORTC EQU H'0007' -PORTE EQU H'0009' -PCLATH EQU H'000A' -INTCON EQU H'000B' -PIR1 EQU H'000C' -PIR2 EQU H'000D' -TMR1L EQU H'000E' -TMR1H EQU H'000F' -T1CON EQU H'0010' -TMR2 EQU H'0011' -T2CON EQU H'0012' -SSPBUF EQU H'0013' -SSPCON EQU H'0014' -CCPR1L EQU H'0015' -CCPR1H EQU H'0016' -CCP1CON EQU H'0017' -RCSTA EQU H'0018' -TXREG EQU H'0019' -RCREG EQU H'001A' -CCPR2L EQU H'001B' -CCPR2H EQU H'001C' -CCP2CON EQU H'001D' -ADRESH EQU H'001E' -ADCON0 EQU H'001F' - -OPTION_REG EQU H'0081' -TRISA EQU H'0085' -TRISB EQU H'0086' -TRISC EQU H'0087' -TRISE EQU H'0089' -PIE1 EQU H'008C' -PIE2 EQU H'008D' -PCON EQU H'008E' -OSCCON EQU H'008F' -OSCTUNE EQU H'0090' -SSPCON2 EQU H'0091' -PR2 EQU H'0092' -SSPADD EQU H'0093' -SSPSTAT EQU H'0094' -CCPR3L EQU H'0095' -CCPR3H EQU H'0096' -CCP3CON EQU H'0097' -TXSTA EQU H'0098' -SPBRG EQU H'0099' -ADCON2 EQU H'009B' -CMCON EQU H'009C' -CVRCON EQU H'009D' -ADRESL EQU H'009E' -ADCON1 EQU H'009F' - -WDTCON EQU H'0105' -LVDCON EQU H'0109' -PMDATA EQU H'010C' -PMADR EQU H'010D' -PMDATH EQU H'010E' -PMADRH EQU H'010F' - -PMCON1 EQU H'018C' - -;----- STATUS Bits -------------------------------------------------------- - -IRP EQU H'0007' -RP1 EQU H'0006' -RP0 EQU H'0005' -NOT_TO EQU H'0004' -NOT_PD EQU H'0003' -Z EQU H'0002' -DC EQU H'0001' -C EQU H'0000' - -;----- INTCON Bits -------------------------------------------------------- - -GIE EQU H'0007' -PEIE EQU H'0006' -T0IE EQU H'0005' -TMR0IE EQU H'0005' -INTE EQU H'0004' -INT0IE EQU H'0004' -RBIE EQU H'0003' -T0IF EQU H'0002' -TMR0IF EQU H'0002' -INTF EQU H'0001' -INT0IF EQU H'0001' -RBIF EQU H'0000' - -;----- PIR1 Bits ---------------------------------------------------------- - -PSPIF EQU H'0007' -ADIF EQU H'0006' -RCIF EQU H'0005' -TXIF EQU H'0004' -SSPIF EQU H'0003' -CCP1IF EQU H'0002' -TMR2IF EQU H'0001' -TMR1IF EQU H'0000' - -;----- PIR2 Bits ---------------------------------------------------------- - -OSFIF EQU H'0007' -CMIF EQU H'0006' -LVDIF EQU H'0005' -BCLIF EQU H'0003' -CCP3IF EQU H'0001' -CCP2IF EQU H'0000' - -;----- T1CON Bits --------------------------------------------------------- - -T1RUN EQU H'0006' -T1CKPS1 EQU H'0005' -T1CKPS0 EQU H'0004' -T1OSCEN EQU H'0003' -NOT_T1SYNC EQU H'0002' -T1INSYNC EQU H'0002' ; Backward compatibility only -T1SYNC EQU H'0002' -TMR1CS EQU H'0001' -TMR1ON EQU H'0000' - -;----- T2CON Bits --------------------------------------------------------- - -TOUTPS3 EQU H'0006' -TOUTPS2 EQU H'0005' -TOUTPS1 EQU H'0004' -TOUTPS0 EQU H'0003' -TMR2ON EQU H'0002' -T2CKPS1 EQU H'0001' -T2CKPS0 EQU H'0000' - -;----- SSPCON Bits -------------------------------------------------------- - -WCOL EQU H'0007' -SSPOV EQU H'0006' -SSPEN EQU H'0005' -CKP EQU H'0004' -SSPM3 EQU H'0003' -SSPM2 EQU H'0002' -SSPM1 EQU H'0001' -SSPM0 EQU H'0000' - -;----- CCP1CON Bits ------------------------------------------------------- - -CCP1X EQU H'0005' -CCP1Y EQU H'0004' -CCP1M3 EQU H'0003' -CCP1M2 EQU H'0002' -CCP1M1 EQU H'0001' -CCP1M0 EQU H'0000' - -;----- RCSTA Bits --------------------------------------------------------- - -SPEN EQU H'0007' -RX9 EQU H'0006' -RC9 EQU H'0006' ; Backward compatibility only -NOT_RC8 EQU H'0006' ; Backward compatibility only -RC8_9 EQU H'0006' ; Backward compatibility only -SREN EQU H'0005' -CREN EQU H'0004' -ADDEN EQU H'0003' -FERR EQU H'0002' -OERR EQU H'0001' -RX9D EQU H'0000' -RCD8 EQU H'0000' ; Backward compatibility only - -;----- CCP2CON Bits ------------------------------------------------------- - -CCP2X EQU H'0005' -CCP2Y EQU H'0004' -CCP2M3 EQU H'0003' -CCP2M2 EQU H'0002' -CCP2M1 EQU H'0001' -CCP2M0 EQU H'0000' - -;----- ADCON0 Bits -------------------------------------------------------- - -ADCS1 EQU H'0007' -ADCS0 EQU H'0006' -CHS2 EQU H'0005' -CHS1 EQU H'0004' -CHS0 EQU H'0003' -GO EQU H'0002' -NOT_DONE EQU H'0002' -GO_DONE EQU H'0002' -CHS3 EQU H'0001' -ADON EQU H'0000' - -;----- OPTION_REG Bits ----------------------------------------------------- - -NOT_RBPU EQU H'0007' -INTEDG EQU H'0006' -T0CS EQU H'0005' -T0SE EQU H'0004' -PSA EQU H'0003' -PS2 EQU H'0002' -PS1 EQU H'0001' -PS0 EQU H'0000' - -;----- TRISE Bits --------------------------------------------------------- - -IBF EQU H'0007' -OBF EQU H'0006' -IBOV EQU H'0005' -PSPMODE EQU H'0004' -TRISE3 EQU H'0003' -TRISE2 EQU H'0002' -TRISE1 EQU H'0001' -TRISE0 EQU H'0000' - -;----- PIE1 Bits ---------------------------------------------------------- - -PSPIE EQU H'0007' -ADIE EQU H'0006' -RCIE EQU H'0005' -TXIE EQU H'0004' -SSPIE EQU H'0003' -CCP1IE EQU H'0002' -TMR2IE EQU H'0001' -TMR1IE EQU H'0000' - -;----- PIE2 Bits ---------------------------------------------------------- - -OSFIE EQU H'0007' -CMIE EQU H'0006' -LVDIE EQU H'0005' -BCLIE EQU H'0003' -CCP3IE EQU H'0001' -CCP2IE EQU H'0000' - -;----- PCON Bits ---------------------------------------------------------- - -SBOREN EQU H'0002' -NOT_POR EQU H'0001' -NOT_BO EQU H'0000' -NOT_BOR EQU H'0000' - -;----- OSCCON Bits ------------------------------------------------------- -IRCF2 EQU H'0006' -IRCF1 EQU H'0005' -IRCF0 EQU H'0004' -OSTS EQU H'0003' -IOFS EQU H'0002' -SCS1 EQU H'0001' -SCS0 EQU H'0000' - -;----- OSCTUNE Bits ------------------------------------------------------- -TUN5 EQU H'0005' -TUN4 EQU H'0004' -TUN3 EQU H'0003' -TUN2 EQU H'0002' -TUN1 EQU H'0001' -TUN0 EQU H'0000' - -;----- SSPCON2 Bits -------------------------------------------------------- - -GCEN EQU H'0007' -ACKSTAT EQU H'0006' -ACKDT EQU H'0005' -ACKEN EQU H'0004' -RCEN EQU H'0003' -PEN EQU H'0002' -RSEN EQU H'0001' -SEN EQU H'0000' - -;----- SSPSTAT Bits ------------------------------------------------------- - -SMP EQU H'0007' -CKE EQU H'0006' -D EQU H'0005' -I2C_DATA EQU H'0005' -NOT_A EQU H'0005' -NOT_ADDRESS EQU H'0005' -D_A EQU H'0005' -DATA_ADDRESS EQU H'0005' -P EQU H'0004' -I2C_STOP EQU H'0004' -S EQU H'0003' -I2C_START EQU H'0003' -R EQU H'0002' -I2C_READ EQU H'0002' -NOT_W EQU H'0002' -NOT_WRITE EQU H'0002' -R_W EQU H'0002' -READ_WRITE EQU H'0002' -UA EQU H'0001' -BF EQU H'0000' - -;----- CCP3CON Bits ------------------------------------------------------- - -CCP3X EQU H'0005' -CCP3Y EQU H'0004' -CCP3M3 EQU H'0003' -CCP3M2 EQU H'0002' -CCP3M1 EQU H'0001' -CCP3M0 EQU H'0000' - -;----- TXSTA Bits --------------------------------------------------------- - -CSRC EQU H'0007' -TX9 EQU H'0006' -NOT_TX8 EQU H'0006' ; Backward compatibility only -TX8_9 EQU H'0006' ; Backward compatibility only -TXEN EQU H'0005' -SYNC EQU H'0004' -BRGH EQU H'0002' -TRMT EQU H'0001' -TX9D EQU H'0000' -TXD8 EQU H'0000' ; Backward compatibility only - -;----- ADCON2 Bits --------------------------------------------------------- - -ACQT2 EQU H'0005' -ACQT1 EQU H'0004' -ACQT0 EQU H'0003' - -;----- CMCON Bits --------------------------------------------------------- - -C2OUT EQU H'0007' -C1OUT EQU H'0006' -C2INV EQU H'0005' -C1INV EQU H'0004' -CIS EQU H'0003' -CM2 EQU H'0002' -CM1 EQU H'0001' -CM0 EQU H'0000' - -;----- CVRCON Bits -------------------------------------------------------- - -CVREN EQU H'0007' -CVROE EQU H'0006' -CVRR EQU H'0005' -CVR3 EQU H'0003' -CVR2 EQU H'0002' -CVR1 EQU H'0001' -CVR0 EQU H'0000' - -;----- ADCON1 Bits -------------------------------------------------------- - -ADFM EQU H'0007' -ADCS2 EQU H'0006' -VCFG1 EQU H'0005' -VCFG0 EQU H'0004' -PCFG3 EQU H'0003' -PCFG2 EQU H'0002' -PCFG1 EQU H'0001' -PCFG0 EQU H'0000' - -;----- WDTCON Bits -------------------------------------------------------- - -WDTPS3 EQU H'0004' -WDTPS2 EQU H'0003' -WDTPS1 EQU H'0002' -WDTPS0 EQU H'0001' -SWDTEN EQU H'0000' -SWDTE EQU H'0000' - -;----- LVDCON Bits -------------------------------------------------------- - -IRVST EQU H'0005' -LVDEN EQU H'0004' -LVDL3 EQU H'0003' -LVDL2 EQU H'0002' -LVDL1 EQU H'0001' -LVDL0 EQU H'0000' - -;----- PMCON1 Bits -------------------------------------------------------- - -RD EQU H'0000' - - -;========================================================================== -; -; RAM Definition -; -;========================================================================== - - __MAXRAM H'1FF' - __BADRAM H'08' - __BADRAM H'88', H'9A' - __BADRAM H'107'-H'108' - __BADRAM H'185', H'187'-H'189', H'18D'-H'18F' - -;========================================================================== -; -; Configuration Bits -; -;========================================================================== - -_CONFIG1 EQU H'2007' -_CONFIG2 EQU H'2008' - -;Configuration Byte 1 Options -_CP_ALL EQU H'1FFF' -_CP_OFF EQU H'3FFF' -_CCP2_RC1 EQU H'3FFF' -_CCP2_RB3 EQU H'2FFF' -_DEBUG_OFF EQU H'3FFF' -_DEBUG_ON EQU H'37FF' -_VBOR_2_0 EQU H'3FFF' -_VBOR_2_7 EQU H'3F7F' -_VBOR_4_2 EQU H'3EFF' -_VBOR_4_5 EQU H'3E7F' -_BOREN_1 EQU H'3FFF' ;MUST BE CONFIGURED IN CONJUCTION W/ BORSEN (CONFIG2) -_BOREN_0 EQU H'3FBF' ;MUST BE CONFIGURED IN CONJUCTION W/ BORSEN (CONFIG2) -_MCLR_ON EQU H'3FFF' -_MCLR_OFF EQU H'3FDF' -_PWRTE_OFF EQU H'3FFF' -_PWRTE_ON EQU H'3FF7' -_WDT_ON EQU H'3FFF' -_WDT_OFF EQU H'3FFB' -_EXTRC_CLKOUT EQU H'3FFF' -_EXTRC_IO EQU H'3FFE' -_INTRC_CLKOUT EQU H'3FFD' -_INTRC_IO EQU H'3FFC' -_EXTCLK EQU H'3FEF' -_HS_OSC EQU H'3FEE' -_XT_OSC EQU H'3FED' -_LP_OSC EQU H'3FEC' - -;Configuration Byte 2 Options -_BORSEN_1 EQU H'3FFF' ;MUST BE CONFIGURED IN CONJUCTION W/ BOREN (CONFIG1) -_BORSEN_0 EQU H'3FBF' ;MUST BE CONFIGURED IN CONJUCTION W/ BOREN (CONFIG1) -_IESO_ON EQU H'3FFF' -_IESO_OFF EQU H'3FFD' -_FCMEN_ON EQU H'3FFF' -_FCMEN_OFF EQU H'3FFE' - - -;**** Brown-out Reset configurations **** (Refer to the 16F7x7 Data Sheet for more details) -;BOREN_1 & BORSEN_1 = BOR enabled and always on -;BOREN_1 & BORSEN_0 = BOR enabled during operation and disabled during sleep by hardware -;BOREN_0 & BORSEN_1 = BOR controlled by software bit SBOREN (PCON,2) -;BOREN_0 & BORSEN_0 = BOR disabled - - -; To use the Configuration Bits, place the following lines in your source code -; in the following format, and change the configuration value to the desired -; setting (such as CP_OFF to CP_ALL). These are currently commented out here -; and each __CONFIG line should have the preceding semicolon removed when -; pasted into your source code. - -;Program Configuration Register 1 -; __CONFIG _CONFIG1, _CP_OFF & _CCP2_RC1 & _DEBUG_OFF & _VBOR_2_0 & BOREN_1 & _MCLR_OFF & _PWRTE_OFF & _WDT_OFF & _HS_OSC - -;Program Configuration Register 2 -; __CONFIG _CONFIG2, _BORSEN_1 & _IESO_OFF & _FCMEN_OFF - - - LIST diff --git a/PICduino/f767duino.HEX b/PICduino/f767duino.HEX deleted file mode 100755 index cfd7f2b..0000000 --- a/PICduino/f767duino.HEX +++ /dev/null @@ -1,126 +0,0 @@ -:020000040000FA -:020000002A28AC -:08000800F1000308F2000A08F0 -:10001000F3008C1E1F28831218080639031D26289A -:100020000408F000560884001A0880007008840054 -:10003000D60A50305606031D1F284030D6007308DC -:100040008A0072088300F10E710E090018121A0856 -:1000500018161F28A001A101A201A301A401A50156 -:10006000A601A701A801A901AA010130AB00063031 -:10007000AC004030D600D700F701F80186018701B7 -:10008000FF3083168500F4008600F5008700F60037 -:1000900083129A20D1015108D2000030D3000E21E2 -:1000A000D10A0E305102031C4B28953083169F0055 -:1000B000831280309F00283083169B0083121F1408 -:1000C000FE308316920083120730920084202B1C8E -:1000D0007128973094200730A82084200030A82071 -:1000E0008420AD012C082D0203186628CE24A130EF -:1000F0002D0794202F0D2E0D073994202F087F39BE -:1001000094208420AD0A7228560857060319080067 -:100110005708840000082522D70A50305706031DCF -:1001200084284030D70084288316981C9528831291 -:100130009900080083162F3099001815831298171C -:10014000831698168C16831218160B178B17080037 -:10015000DA01D900D100D501D4010314D50DD40D95 -:10016000D1080319BE28D103AE28D10A07305106A1 -:100170000319C928D90A0310D50DD40D2608550531 -:10018000031DB52825085405031DB5288524DA0C60 -:10019000B5280310DA0C5A0894200800871B0314B2 -:1001A0000800071B03140800871A03140800071A25 -:1001B0000314080087190314080006180314080024 -:1001C000061A03140800861B03140800061B0314F8 -:1001D0000800861A0314080007190314080087187A -:1001E00003140800071803140800861803140800F5 -:1001F000853004298D30042995300429A53004293F -:10020000873004298F3004299F001F1905291E08F3 -:10021000AE0083161E088312AF000800003053069C -:10022000031D5329982C26102810F61776088316DC -:10023000870083120800A610A81076171629261129 -:100240002811F6161629A611A811761616292612B7 -:100250002812F6151629A612A81275147508831609 -:100260008600831208002613281375162E29A6135C -:10027000A813F5172E292510271075172E29A5105C -:10028000A710F5162E292511271176151629A51167 -:10029000A711F61416292512271276141629A5126D -:1002A000A712F5142E290130530603198A29AA2C06 -:1002B0000800080026152811F6121629A615A811FF -:1002C0007612162926162812F6111629A616A81235 -:1002D00075102E292617281375122E29A617A81374 -:1002E000F5132E292514271075132E29A514A710F0 -:1002F000F5122E292515271176111629A515A711F6 -:10030000F61016292516271276101629A516A712FB -:10031000F5102E290230530603190800BC2C0800E2 -:10032000080026152815F6121629A615A815761206 -:10033000162926162816F6111629A616A8167510BF -:100340002E292617281775122E29A617A817F51378 -:100350002E292514271475132E29A514A714F51278 -:100360002E292515271576111629A515A715F6107E -:1003700016292516271676101629A516A716F51084 -:100380002E29780887000800770886000800F817EB -:10039000031CF813C1297817031C7813C129F81618 -:1003A000031CF812C1297816031C7812C129F8150C -:1003B000031CF811C1297714031C7710C429771680 -:1003C000031C7712C429F717031CF713C4297717E6 -:1003D000031C7713C429F716031CF712C4297815D8 -:1003E000031C7811C129F814031CF810C1297814D2 -:1003F000031C7810C129F714031CF710C429AB01A2 -:1004000008002B1408000301102A0130102A0230C2 -:10041000102A0330102A0430102A0530102A063022 -:10042000AC0008000230A0005808A100080001300C -:10043000A0005808A100080024140800F0309420FF -:1004400000309420013094200800D800A00803193F -:100450007A2AA00322302007840058088000A108CF -:1004600003190800A008031D0800D82C0230D3008F -:100470002308D200093C03194F2A013E0319492AD7 -:10048000013E031D782A0E2122089B000C309D009E -:10049000782A0E21220895000C309700782A0E2128 -:1004A0002208831695000C3097008312782A782A48 -:1004B0000030D3002208D200093C03196B2A013E08 -:1004C0000319682A013E031D782A0E219D01782A0E -:1004D0000E219701782A0E21831697018312782A1C -:1004E0002308D2000230D3000E21782A782A782AF5 -:1004F000A1010800D81B002C2808FF3A2605D500CA -:100500002708FF3A2505D400241CB22AD51F8C2ABF -:10051000031058180314E321541C922A0310D8180E -:100520000314E721D41C982A031058190314EB2153 -:10053000541D9E2A0310D8190314EF21D41DA42A98 -:100540000310581A0314F321541EAA2A0310D81AB0 -:100550000314F721D41EB02A0310581B0314FB21E7 -:10056000A4010800551CB82A031058180314C72109 -:10057000D51CBE2A0310D8180314CB21551DC42A3C -:10058000031058190314CF21D51DCA2A0310D819F6 -:100590000314D321551ED02A0310581A0314D7214F -:1005A000D51ED62A0310D81A0314DB21551FDC2AC6 -:0A05B0000310581B0314DF2108009C -:1008000004308A0058087F3982070800080013293D -:100810001B291F29232927292B29332937293B293C -:100820003F29432947294B294F2908000800080080 -:10083000080008000800FF29012A08000800080035 -:1008400008000800080008000800032A052A072AF3 -:10085000092A0B2A0D2A0F2A0800080008000800A0 -:100860000800080008000800080008000800080048 -:100870000800080008000800080008000800080038 -:100880000800080008000800080008000800080028 -:1008900008000800080008000800582959295A29AA -:1008A0005E29622966296A296E29722976297A29A0 -:1008B0007E2982298629080008000800080008000F -:1008C00008000800080008000800080008000800E8 -:1008D000080008001C2A080008000800080008009A -:1008E000080008000800080008001E2A0800080088 -:1008F0000800080008000800080008000800172A7F -:10090000122A172A122A172A080004308A005908C6 -:1009100003108207CE28D128D428D728DA28DD284A -:10092000E028E328E628E928EC28EF28F228F52833 -:1009300004308A005208820713291B291F29232902 -:1009400027292B29332937293B293F29432947299F -:100950004B294F2904308A00520882075829592907 -:100960005A295E29622966296A296E2972297629FF -:100970007A297E298229862904308A005208820732 -:100980008F2990299129952999299D29A129A5295E -:10099000A929AD29B129B529B929BD2904308A0071 -:1009A0002D088207F828FA28FC28FE2800290229A9 -:1009B00004308A00FA3021028207582A362A762A21 -:0409C000702A772AF8 -:02400E00A23FCF -:02401000BC3FB3 -:00000001FF diff --git a/PICduino/f767duino.asm b/PICduino/f767duino.asm deleted file mode 100755 index aeb21ca..0000000 --- a/PICduino/f767duino.asm +++ /dev/null @@ -1,1940 +0,0 @@ -;******************************************************** -; * -; Filename: f767duino.asm * -; Date: 20061023 * -; File Version: 0.7 * -; implement analogWrite for hardware pwm on * -; digital pins 9,10 and 11. * -; Date: 20061016 * -; File Version: 0.6 * -; Fixed a bug in receive interrupt handler and * -; buffer increment * -; Date: 20061012 * -; File Version: 0.5 * -; Using shadow registers for tris * -; registers to avoid bcf and bsf instructions * -; Date: 20061012 * -; File Version: 0.4 * -; Fixed another bug. Digital out still doesn't * -; work. Next try using shadow registers for tris * -; registers to avoid bcf and bsf instructions * -; Date: 20061011 * -; File Version: 0.3 * -; fixed a couple of bugs. Now analog input works * -; Date: 20060927 * -; File Version: 0.2 * -; completed port to PIC asm * -; Date: 20060921 * -; File Version: 0.1 * -; * -; Author: Martin Peach * -; * -; * -;******************************************************** -; * -; Files required: P16F767.INC * -; * -; * -;************************************************************************************************ -; * -; This is an implementation of the pd firmware on Arduino using a PIC16F767 instead of an ATmega8.* -; See picduino.png for the schematic. * -; * -;************************************************************************************************ -;___Arduino_Pin_Name____=___PIC_Pin_Name____* -; DigitalPin0 RXD = RC7 * -; DigitalPin1 TXD = RC6 * -; DigitalPin2 = RC5 * -; DigitalPin3 = RC4 * -; DigitalPin4 = RC3 * -; DigitalPin5 = RB0 * -; DigitalPin6 = RB4 * -; DigitalPin7 = RB7 * -; DigitalPin8 = RB6 * -; DigitalPin9 PWM = RB5 * -; DigitalPin10 PWM = RC2 * -; DigitalPin11 PWM = RC1 * -; DigitalPin12 = RC0 * -; DigitalPin13 = RB1 * -; AnalogInput0 = RA0/AN0 * -; AnalogInput1 = RA1/AN1 * -; AnalogInput2 = RA2/AN2 * -; AnalogInput3 = RA5/AN4 * -; AnalogInput4 = RB2/AN8 * -; AnalogInput5 = RB3/AN9 * -; VRef = RA3/AN3 * -; * -; Timing parameters using PIC16F767: -; FOsc = 14745600Hz -; TOsc = 67.8168ns -; Tad = 32*TOsc = 2.17014us, Tcnv = 12*Tad = 26.0417us Taqu = 12*Tad = 26.0417us -; ADC needs 20us (~10Tad) to charge the sampling capacitor + 2Tad(~5us) after each conversion -; Total adc time = 26*Tad = 56.4236us -; Maximum ADC rate (1 channel) = 17723.1 conversions per second -; -; Baud rate is 19200 -; ADC conversion packet length 3 bytes = 30 bits -; Time to transmit 30 bits at 19200 baud: 0.0015625s = 640 results per second -;******************************************** -; This is based on Pd_firmware_pde -; Copyright (C) 2006 Hans-Christoph Steiner -; This library is free software; you can redistribute it and/or -; modify it under the terms of the GNU Lesser General Public -; License as published by the Free Software Foundation; either -; version 2.1 of the License, or (at your option) any later version. -; -; This library is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -; Lesser General Public License for more details. -; -; You should have received a copy of the GNU Lesser General -; Public License along with this library; if not, write to the -; Free Software Foundation, Inc., 59 Temple Place, Suite 330, -; Boston, MA 02111-1307 USA -; -; ----------------------------- -; Firmata, the Arduino firmware -; ----------------------------- -; -; Firmata turns the Arduino into a Plug-n-Play sensorbox, servo -; controller, and/or PWM motor/lamp controller. -; -; It was originally designed to work with the Pd object [arduino] -; which is included in Pd-extended. This firmware is intended to -; work with any host computer software package. It can easily be -; used with other programs like Max/MSP, Processing, or whatever can -; do serial communications.; -; @authors: Hans-Christoph Steiner -; help with protocol redesign: Jamie Allen -; key bugfixes: Georg Holzmann -; Gerda Strobl -; @date: 2006-05-19 -; @locations: STEIM, Amsterdam, Netherlands -; IDMI/Polytechnic University, Brookyn, NY, USA -; Electrolobby Ars Electronica, Linz, Austria -; -; -; TODO: add pulseIn functionality -; TODO: add software PWM for servos, etc (servo.h or pulse.h) -; TODO: redesign protocol to accomodate boards with more I/Os -; TODO: -; TODO: add "outputMode all 0/1" command -; TODO: add cycle markers to mark start of analog, digital, pulseIn, and PWM -; -; ========================================================================= - list p=16f767 ; list directive to define processor - #include ; processor specific variable definitions - - __CONFIG _CONFIG1, _CP_OFF & _CCP2_RC1 & _DEBUG_OFF & _VBOR_2_0 & _BOREN_0 & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _HS_OSC - __CONFIG _CONFIG2, _BORSEN_0 & _IESO_OFF & _FCMEN_OFF - -; === CONSTANTS =========================================================== -B19200 equ d'47' ; time constant for baud rate generator -B9600 equ d'95' ; time constant for baud rate generator -; firmware version numbers. The protocol is still changing, so these version -; numbers are important -MAJOR_VERSION equ 0 -MINOR_VERSION equ 1 -; firmata protocol -; =============== -; data: 0-127 -; control: 128-255 -; computer->Arduino commands -; -------------------- -; 128-129 UNUSED -SET_PIN_ZERO_TO_IN equ d'130' ; set digital pin 0 to INPUT -SET_PIN_ONE_TO_IN equ d'131' ; set digital pin 1 to INPUT -SET_PIN_TWO_TO_IN equ d'132' ; set digital pin 2 to INPUT -SET_PIN_THREE_TO_IN equ d'133' ; set digital pin 3 to INPUT -SET_PIN_FOUR_TO_IN equ d'134' ; set digital pin 4 to INPUT -SET_PIN_FIVE_TO_IN equ d'135' ; set digital pin 5 to INPUT -SET_PIN_SIX_TO_IN equ d'136' ; set digital pin 6 to INPUT -SET_PIN_SEVEN_TO_IN equ d'137' ; set digital pin 7 to INPUT -SET_PIN_EIGHT_TO_IN equ d'138' ; set digital pin 8 to INPUT -SET_PIN_NINE_TO_IN equ d'139' ; set digital pin 9 to INPUT -SET_PIN_TEN_TO_IN equ d'140' ; set digital pin 10 to INPUT -SET_PIN_ELEVEN_TO_IN equ d'141' ; set digital pin 11 to INPUT -SET_PIN_TWELVE_TO_IN equ d'142' ; set digital pin 12 to INPUT -SET_PIN_THIRTEEN_TO_IN equ d'143' ; set digital pin 13 to INPUT -; 144-149 UNUSED -DISABLE_DIGITAL_INPUTS equ d'150' ; disable reporting of digital inputs -ENABLE_DIGITAL_INPUTS equ d'151' ; enable reporting of digital inputs -; 152-159 UNUSED -ZERO_ANALOG_INS equ d'160' ; disable reporting on all analog ins -ONE_ANALOG_IN equ d'161' ; enable reporting for 1 analog in (0) -TWO_ANALOG_INS equ d'162' ; enable reporting for 2 analog ins (0,1) -THREE_ANALOG_INS equ d'163' ; enable reporting for 3 analog ins (0-2) -FOUR_ANALOG_INS equ d'164' ; enable reporting for 4 analog ins (0-3) -FIVE_ANALOG_INS equ d'165' ; enable reporting for 5 analog ins (0-4) -SIX_ANALOG_INS equ d'166' ; enable reporting for 6 analog ins (0-5) -; 167-199 UNUSED -SET_PIN_ZERO_TO_OUT equ d'200' ; set digital pin 0 to OUTPUT -SET_PIN_ONE_TO_OUT equ d'201' ; set digital pin 1 to OUTPUT -SET_PIN_TWO_TO_OUT equ d'202' ; set digital pin 2 to OUTPUT -SET_PIN_THREE_TO_OUT equ d'203' ; set digital pin 3 to OUTPUT -SET_PIN_FOUR_TO_OUT equ d'204' ; set digital pin 4 to OUTPUT -SET_PIN_FIVE_TO_OUT equ d'205' ; set digital pin 5 to OUTPUT -SET_PIN_SIX_TO_OUT equ d'206' ; set digital pin 6 to OUTPUT -SET_PIN_SEVEN_TO_OUT equ d'207' ; set digital pin 7 to OUTPUT -SET_PIN_EIGHT_TO_OUT equ d'208' ; set digital pin 8 to OUTPUT -SET_PIN_NINE_TO_OUT equ d'209' ; set digital pin 9 to OUTPUT -SET_PIN_TEN_TO_OUT equ d'210' ; set digital pin 10 to OUTPUT -SET_PIN_ELEVEN_TO_OUT equ d'211' ; set digital pin 11 to OUTPUT -SET_PIN_TWELVE_TO_OUT equ d'212' ; set digital pin 12 to OUTPUT -SET_PIN_THIRTEEN_TO_OUT equ d'213' ; set digital pin 13 to OUTPUT -; 214-228 UNUSED -OUTPUT_TO_DIGITAL_PINS equ d'229' ; next two bytes set digital output data -; 230-239 UNUSED -REPORT_VERSION equ d'240' ; return the firmware version -; 240-249 UNUSED -DISABLE_PWM equ d'250' ; next byte sets pin # to disable -ENABLE_PWM equ d'251' ; next two bytes set pin # and duty cycle -DISABLE_SOFTWARE_PWM equ d'252' ; next byte sets pin # to disable -ENABLE_SOFTWARE_PWM equ d'253' ; next two bytes set pin # and duty cycle -SET_SOFTWARE_PWM_FREQ equ d'254' ; set master frequency for software PWMs -; 255 UNUSED -;*************** -; two byte digital output data format -; ---------------------- -; 0 get ready for digital input bytes (229) -; 1 digitalOut 7-13 bitmask -; 2 digitalOut 0-6 bitmask -; two byte PWM data format -; ---------------------- -; 0 get ready for digital input bytes (ENABLE_SOFTWARE_PWM/ENABLE_PWM) -; 1 pin # -; 2 duty cycle expressed as 1 byte (255 = 100%) -; digital input message format -; ---------------------- -; 0 digital input marker (255/11111111) -; 1 digital read from Arduino // 7-13 bitmask -; 2 digital read from Arduino // 0-6 bitmask -; analog input message format -; ---------------------- -; 0 analog input marker -; 1 high byte from analog input pin 0 -; 2 low byte from analog input pin 0 -; 3 high byte from analog input pin 1 -; 4 low byte from analog input pin 1 -; 5 high byte from analog input pin 2 -; 6 low byte from analog input pin 2 -; 7 high byte from analog input pin 3 -; 8 low byte from analog input pin 3 -; 9 high byte from analog input pin 4 -; 10 low byte from analog input pin 4 -; 11 high byte from analog input pin 5 -; 12 low byte from analog input pin 5 -TOTAL_DIGITAL_PINS equ d'14' - -INPUT equ d'0' ; these aren't defined in Pd_firmware.pde -OUTPUT equ d'1' ; these aren't defined in Pd_firmware.pde -; for comparing along with INPUT and OUTPUT -PWM equ d'2' - -; maximum number of post-command data bytes -MAX_DATA_BYTES equ d'2' - -; == VARIABLES ============================================================ -; this flag says the next serial input will be data -;byte waitForData = 0; -waitForData equ 0x20 ; initialize to 0; -;byte executeMultiByteCommand = 0; // command to execute after getting multi-byte data -executeMultiByteCommand equ 0x21 ; initialize to 0 -;byte storedInputData[MAX_DATA_BYTES] = {0,0}; // multi-byte data -storedInputData0 equ 0x22 ; initialize to 0,0 -storedInputData1 equ 0x23 ; initialize to 0,0 -; this flag says the first data byte for the digital outs is next -;boolean firstInputByte = false; -firstInputByte equ 0x24 ; initialize to 0 -; this int serves as a bit-wise array to store pin status -; 0 = INPUT, 1 = OUTPUT -; int digitalPinStatus; -digitalPinStatusHi equ 0x25 ; initialize to 0,0 -digitalPinStatusLo equ 0x26 ; initialize to 0,0 -; this byte stores the status of whether PWM is on or not -; bit 9 = PWM0, bit 10 = PWM1, bit 11 = PWM2 -; the rest of the bits are unused and should remain 0 -;int pwmStatus; -pwmStatusHi equ 0x27 ; initialize to 0,0 -pwmStatusLo equ 0x28 ; initialize to 0,0 -; this byte stores the status of whether software PWM is on or not -; 00000010 00000000 means bit 10 is softWarePWM enabled -;int softPwmStatus; -softPwmStatusHi equ 0x29 ; initialize to 0,0 -softPwmStatusLo equ 0x2A ; initialize to 0,0 -;boolean digitalInputsEnabled = true; -digitalInputsEnabled equ 0x2B ; initialize to 1 -;byte analogInputsEnabled = 6; -analogInputsEnabled equ 0x2C ; initialize to 6; -;byte analogPin; -analogPin equ 0x2D ; -;int analogData; -analogDataHi equ 0x2E ; -analogDataLo equ 0x2F ; -rxBuf equ 0x40 ; -rxBufEnd equ 0x50 ; -i equ 0x51 ; local variable in setup() -pin equ 0x52 ; pin number for pinMode() -mode equ 0x53 ; pin mode for pinMode() -maskHi equ 0x54 -maskLo equ 0x55 -rxWrPtr equ 0x56 -rxRdPtr equ 0x57 -inputData equ 0x58 -digitalPin equ 0x59 -transmitByte equ 0x5A -digitalData equ 0x5B -fsr_temp equ 0x70 ; variable used for context saving -w_temp equ 0x71 ; variable used for context saving -status_temp equ 0x72 ; variable used for context saving -pclath_temp equ 0x73 ; variable used for context saving -trisa_shadow equ 0x74 -trisb_shadow equ 0x75 -trisc_shadow equ 0x76 -portb_shadow equ 0x77 -portc_shadow equ 0x78 -; ========================================================================= - ORG 0x000 ; processor reset vector - goto setup ; go to beginning of program -; ========================================================================= - ORG 0x004 ; interrupt vector location - movwf w_temp ; save off current W register contents - movf STATUS,w ; move status register into W register - movwf status_temp ; save off contents of STATUS register - movf PCLATH,w ; move pclath register into w register - movwf pclath_temp ; save off contents of PCLATH register - - btfss PIR1,RCIF - goto intout -;receive interrupt -; 6. Flag bit RCIF will be set when reception is complete and an interrupt will be generated if enable bit RCIE is set. -; 7. Read the RCSTA register to get the ninth bit (if enabled) and determine if any error occurred during reception. - bcf STATUS,RP0 ; bank 0 - movf RCSTA,w - andlw b'00000110' ; Framing, Overrun Errors - btfss STATUS,Z - goto RxError -; 8. Read the 8-bit received data by reading the RCREG register. -; handle the character by saving it into rxBuf and incrementing rxWrPtr - movf FSR,w ; first save FSR - movwf fsr_temp - movf rxWrPtr,w ; get the pointer to the buffer - movwf FSR ; into FSR - movf RCREG,w ; read the character - movwf INDF ; store it in the buffer - movf fsr_temp,w ; restore FSR - movwf FSR - incf rxWrPtr,f ; point to next slot in buffer - movlw rxBufEnd ; check for end of buffer - xorwf rxWrPtr,w - btfss STATUS,Z - goto intout ; not yet at end - movlw rxBuf ; reset pointer to start of buffer - movwf rxWrPtr -intout - movf pclath_temp,w ; retrieve copy of PCLATH register - movwf PCLATH ; restore pre-isr PCLATH register contents - movf status_temp,w ; retrieve copy of STATUS register - movwf STATUS ; restore pre-isr STATUS register contents - swapf w_temp,f - swapf w_temp,w ; restore pre-isr W register contents - retfie ; return from interrupt -; 9. If any error occurred, clear the error by clearing enable bit CREN. -RxError - bcf RCSTA,CREN - movf RCREG,w - bsf RCSTA,CREN - goto intout - -; ========================================================================= -; -; ------------------------------------------------------------------------- -;void setup() -;{ -setup - clrf waitForData ; init all the variables - clrf executeMultiByteCommand - clrf storedInputData0 - clrf storedInputData1 - clrf firstInputByte - clrf digitalPinStatusHi - clrf digitalPinStatusLo - clrf pwmStatusHi - clrf pwmStatusLo - clrf softPwmStatusHi - clrf softPwmStatusLo - movlw 1 - movwf digitalInputsEnabled ; initialize to 1 - movlw 6 - movwf analogInputsEnabled ; initialize to 6; - movlw rxBuf - movwf rxWrPtr - movwf rxRdPtr - clrf portb_shadow - clrf portc_shadow - clrf PORTB ; PORTB is cleared anyway at reset - clrf PORTC ; PORTC is cleared anyway at reset - movlw 0xFF ; all inputs (they are anyway after reset) - bsf STATUS,RP0 ; bank 1 - movwf TRISA - movwf trisa_shadow - movwf TRISB - movwf trisb_shadow - movwf TRISC - movwf trisc_shadow - bcf STATUS,RP0 ; bank 0 -; byte i; -; -; beginSerial(19200); - call beginSerial_19200 -; for(i=0; i> 7); // bitshift the big stuff into the output byte - rlf analogDataLo,w ; bit7 into C - rlf analogDataHi,w ; C into bit0 - andlw b'00000111' ; only 10 bits - call printByte -; printByte(analogData % 128); // mod by 32 for the small byte - movf analogDataLo,w - andlw b'01111111' - call printByte -; checkForInput(); - call checkForInput - incf analogPin,f - goto lp_2 -; } -;} -; -; ============subroutines====================================================== -; -; ------------------------------------------------------------------------- -; this function checks to see if there is data waiting on the serial port -; then processes all of the stored data -;void checkForInput() -;{ -checkForInput - movf rxWrPtr,w - xorwf rxRdPtr,w - btfsc STATUS,Z - return -; if(serialAvailable()) -; { -; while(serialAvailable()) -; { - movf rxRdPtr,w - movwf FSR - movf INDF,w -; processInput( (byte)serialRead() ); - call processInput - incf rxRdPtr,f - movlw rxBufEnd - xorwf rxRdPtr,w - btfss STATUS,Z - goto checkForInput - movlw rxBuf ; wrap to start of buffer - movwf rxRdPtr - goto checkForInput -; } -; } -;} -; ------------------------------------------------------------------------- -; printByte: on entry w contains the byte to send -printByte - bsf STATUS,RP0 ; bank 1 - btfss TXSTA,TRMT - goto $-1 - bcf STATUS,RP0 ; bank 0 - movwf TXREG - return -; ------------------------------------------------------------------------- -beginSerial_19200 ; setup USART for 19200 asynchronous receive and transmit, 8bitsNoParity1Stop -; Bits TRISC<7:6> have to be set in order to configure pins RC6/TX/CK and RC7/RX/DT as the USART. -; (They are set at reset) - bsf STATUS,RP0 ; bank 1 -; When setting up an Asynchronous Transmission, follow these steps: -; 1. Initialize the SPBRG register for the appropriate baud rate. If a high-speed baud rate is desired, -; set bit BRGH (see Section 11.1 “AUSART Baud Rate Generator (BRG)”). -; * * * For 14.745600MHz crystal clock, SPBRG=47, BRGH=1 gives 19200 baud. * * * - movlw B19200 ; = d'47' - movwf SPBRG - bsf TXSTA,BRGH -; 2. Enable the asynchronous serial port by clearing bit SYNC and setting bit SPEN. - bcf STATUS,RP0 ; bank 0 - bsf RCSTA,SPEN -; 3. If interrupts are desired, then set enable bit TXIE. -; 4. If 9-bit transmission is desired, then set transmit bit TX9. -; 5. Enable the transmission by setting bit TXEN which will also set bit TXIF. - bsf STATUS,RP0 ; bank 1 - bsf TXSTA,TXEN -; 6. If 9-bit transmission is selected, the ninth bit should be loaded in bit TX9D. -; 7. Load data to the TXREG register (starts transmission). -; 8. If using interrupts, ensure that GIE and PEIE (bits 7 and 6) of the INTCON register are set. -;When setting up an Asynchronous Reception, follow these steps: -; 1. Initialize the SPBRG register for the appropriate baud rate. If a high-speed baud rate is desired, -; set bit BRGH (see Section 11.1 “AUSART Baud Rate Generator (BRG)”). -; 2. Enable the asynchronous serial port by clearing bit SYNC and setting bit SPEN. -; 3. If interrupts are desired, then set enable bit RCIE. - bsf PIE1,RCIE -; 4. If 9-bit reception is desired, then set bit RX9. -; 5. Enable the reception by setting bit CREN. - bcf STATUS,RP0 ; bank 0 - bsf RCSTA,CREN -; 6. Flag bit RCIF will be set when reception is complete and an interrupt will be generated if enable bit RCIE is set. -; 7. Read the RCSTA register to get the ninth bit (if enabled) and determine if any error occurred during reception. -; 8. Read the 8-bit received data by reading the RCREG register. -; 9. If any error occurred, clear the error by clearing enable bit CREN. -; 10. If using interrupts, ensure that GIE and PEIE (bits 7 and 6) of the INTCON register are set. - bsf INTCON,PEIE - bsf INTCON,GIE - return -; ------------------------------------------------------------------------- -;void transmitDigitalInput(byte startPin) -;{ -transmitDigitalInput ; on entry w contains startPin -; byte i; -; byte digitalPin; -;// byte digitalPinBit; -; byte transmitByte = 0; - clrf transmitByte -; byte digitalData; -; - movwf digitalPin - movwf i - clrf maskLo - clrf maskHi - bsf STATUS,C -tdilp_1 ; set up the mask with bit startPin set - rlf maskLo,f - rlf maskHi,f - movf i,f - btfsc STATUS,Z - goto tdi_1 ; mask is at startPin - decf i,f - goto tdilp_1 -; for(i=0;i<7;++i) -; { -tdi_2 -; digitalPin = i+startPin; - incf i,f ; ++i - movlw d'7' - xorwf i,w ; i == 7? - btfsc STATUS,Z - goto tdi_3 ; yes - incf digitalPin,f ; no - bcf STATUS,C - rlf maskLo,f - rlf maskHi,f -;/* digitalPinBit = OUTPUT << digitalPin; -;// only read the pin if its set to input -;if(digitalPinStatus & digitalPinBit) { -;digitalData = 0; // pin set to OUTPUT, don't read -;} -;else if( (digitalPin >= 9) && (pwmStatus & (1 << digitalPin)) ) { -;digitalData = 0; // pin set to PWM, don't read -;}*/ -; if( !(digitalPinStatus & (1 << digitalPin)) ) -tdi_1 - movf digitalPinStatusLo,w - andwf maskLo,w ; maskLo is lowbyte of 1<= 9) && (pin <= 11) ) -; { -; ------------------------------------------------------------------------- -setPinToPwmOrNo - movlw PWM - xorwf mode,w - btfsc STATUS,Z - return ; no more choices - goto setPinToPwm -; digitalPinStatus = digitalPinStatus | (1 << pin); -; pwmStatus = pwmStatus | (1 << pin); -; pinMode(pin,OUTPUT); -; ------------------------------------------------------------------------- -setPinZeroToPWM ; pin0 is RX!!! Don't allow this to happen! TRISC.7 must be 1 -; bsf digitalPinStatusLo,0 -; bsf pwmStatusLo,0 -; bcf trisc_shadow,7 -; goto write_trisc -; bsf STATUS,RP0 ; bank 1 -; bcf TRISC,7 -; bcf STATUS,RP0 ; bank 0 - return -; ------------------------------------------------------------------------- -setPinOneToPWM ; pin1 is TX!!!! Don't allow this to happen! TRISC.6 must be 1 -; bsf digitalPinStatusLo,1 -; bsf pwmStatusLo,1 -; bcf trisc_shadow,6 -; goto write_trisc -; bsf STATUS,RP0 ; bank 1 -; bcf TRISC,6 -; bcf STATUS,RP0 ; bank 0 - return -; ------------------------------------------------------------------------- -setPinTwoToPWM - bsf digitalPinStatusLo,2 - bsf pwmStatusLo,2 - bcf trisc_shadow,5 - goto write_trisc -; ------------------------------------------------------------------------- -setPinThreeToPWM - bsf digitalPinStatusLo,3 - bsf pwmStatusLo,3 - bcf trisc_shadow,4 - goto write_trisc -; ------------------------------------------------------------------------- -setPinFourToPWM - bsf digitalPinStatusLo,4 - bsf pwmStatusLo,4 - bcf trisc_shadow,3 - goto write_trisc -; ------------------------------------------------------------------------- -setPinFiveToPWM - bsf digitalPinStatusLo,5 - bsf pwmStatusLo,5 - bcf trisb_shadow,0 - goto write_trisb -; ------------------------------------------------------------------------- -setPinSixToPWM - bsf digitalPinStatusLo,6 - bsf pwmStatusLo,6 - bcf trisb_shadow,4 - goto write_trisb -; ------------------------------------------------------------------------- -setPinSevenToPWM - bsf digitalPinStatusLo,7 - bsf pwmStatusLo,7 - bcf trisb_shadow,7 - goto write_trisb -; ------------------------------------------------------------------------- -setPinEightToPWM - bsf digitalPinStatusHi,0 - bsf pwmStatusHi,0 - bcf trisb_shadow,6 - goto write_trisb -; ------------------------------------------------------------------------- -setPinNineToPWM - bsf digitalPinStatusHi,1 - bsf pwmStatusHi,1 - bcf trisb_shadow,5 - goto write_trisb -; ------------------------------------------------------------------------- -setPinTenToPWM - bsf digitalPinStatusHi,2 - bsf pwmStatusHi,2 - bcf trisc_shadow,2 - goto write_trisc -; ------------------------------------------------------------------------- -setPinElevenToPWM - bsf digitalPinStatusHi,3 - bsf pwmStatusHi,3 - bcf trisc_shadow,1 - goto write_trisc -; ------------------------------------------------------------------------- -setPinTwelveToPWM - bsf digitalPinStatusHi,4 - bsf pwmStatusHi,4 - bcf trisc_shadow,0 - goto write_trisc -; ------------------------------------------------------------------------- -setPinThirteenToPWM - bsf digitalPinStatusHi,5 - bsf pwmStatusHi,5 - bcf trisb_shadow,1 - goto write_trisb -; } -;} -; return -; ------------------------------------------------------------------------- -; -;void setSoftPwm (int pin, byte pulsePeriod) { -; byte i; -; /* for(i=0; i<7; ++i) { -; mask = 1 << i; -; if(digitalPinStatus & mask) { -; digitalWrite(i, inputData & mask); -; } -; } -; */ -; //read timer type thing -; -; //loop through each pin, turn them on if selected -; //softwarePWMStatus -; //check timer type thing against pulsePeriods for each pin -; //throw pin low if expired -;} -; -; ------------------------------------------------------------------------- -;void setSoftPwmFreq(byte freq) { -;} -; -; -; ------------------------------------------------------------------------- -;void disSoftPwm(int pin) { -; //throw pin low -; -;} -; -write_portc - movf portc_shadow,w - movwf PORTC - return -write_portb - movf portb_shadow,w - movwf PORTB - return -; ------------------------------------------------------------------------- -digitalWrite0 ; write carry bit to digital pin 0 (Pin0 is RX!!!) - bsf portc_shadow,7 - btfss STATUS,C - bcf portc_shadow,7 - goto write_portc -; ------------------------------------------------------------------------- -digitalWrite1 ; write carry bit to digital pin 1 (Pin1 is tX!!!) - bsf portc_shadow,6 - btfss STATUS,C - bcf portc_shadow,6 - goto write_portc -; ------------------------------------------------------------------------- -digitalWrite2 ; write carry bit to digital pin 2 - bsf portc_shadow,5 - btfss STATUS,C - bcf portc_shadow,5 - goto write_portc -; ------------------------------------------------------------------------- -digitalWrite3 ; write carry bit to digital pin 3 - bsf portc_shadow,4 - btfss STATUS,C - bcf portc_shadow,4 - goto write_portc -; ------------------------------------------------------------------------- -digitalWrite4 ; write carry bit to digital pin 4 - bsf portc_shadow,3 - btfss STATUS,C - bcf portc_shadow,3 - goto write_portc -; ------------------------------------------------------------------------- -digitalWrite5 ; write carry bit to digital pin 5 - bsf portb_shadow,0 - btfss STATUS,C - bcf portb_shadow,0 - goto write_portb -; ------------------------------------------------------------------------- -digitalWrite6 ; write carry bit to digital pin 6 - bsf portb_shadow,4 - btfss STATUS,C - bcf portb_shadow,4 - goto write_portb -; ------------------------------------------------------------------------- -digitalWrite7 ; write carry bit to digital pin 7 - bsf portb_shadow,7 - btfss STATUS,C - bcf portb_shadow,7 - goto write_portb -; ------------------------------------------------------------------------- -digitalWrite8 ; write carry bit to digital pin 8 - bsf portb_shadow,6 - btfss STATUS,C - bcf portb_shadow,6 - goto write_portb -; ------------------------------------------------------------------------- -digitalWrite9 ; write carry bit to digital pin 9 - bsf portb_shadow,5 - btfss STATUS,C - bcf portb_shadow,5 - goto write_portb -; ------------------------------------------------------------------------- -digitalWrite10 ; write carry bit to digital pin 10 - bsf portc_shadow,2 - btfss STATUS,C - bcf portc_shadow,2 - goto write_portc -; ------------------------------------------------------------------------- -digitalWrite11 ; write carry bit to digital pin 11 - bsf portc_shadow,1 - btfss STATUS,C - bcf portc_shadow,1 - goto write_portc -; ------------------------------------------------------------------------- -digitalWrite12 ; write carry bit to digital pin 12 - bsf portc_shadow,0 - btfss STATUS,C - bcf portc_shadow,0 - goto write_portc -; ------------------------------------------------------------------------- -digitalWrite13 ; write carry bit to digital pin 13 - bsf portb_shadow,1 - btfss STATUS,C - bcf portb_shadow,1 - goto write_portb -; -; -; ------------------------------------------------------------------------- -disableDigitalInputs - clrf digitalInputsEnabled - return -; ------------------------------------------------------------------------- -enableDigitalInputs - bsf digitalInputsEnabled,0 - return -; ------------------------------------------------------------------------- -setZeroAnalogIns - clrw - goto setAnalogIns -; ------------------------------------------------------------------------- -setOneAnalogIn - movlw d'1' - goto setAnalogIns -; ------------------------------------------------------------------------- -setTwoAnalogIns - movlw d'2' - goto setAnalogIns -; ------------------------------------------------------------------------- -setThreeAnalogIns - movlw d'3' - goto setAnalogIns -; ------------------------------------------------------------------------- -setFourAnalogIns - movlw d'4' - goto setAnalogIns -; ------------------------------------------------------------------------- -setFiveAnalogIns - movlw d'5' - goto setAnalogIns -; ------------------------------------------------------------------------- -setSixAnalogIns - movlw d'6' -; ------------------------------------------------------------------------- -setAnalogIns -; analogInputsEnabled = inputData - ZERO_ANALOG_INS; -; break; - movwf analogInputsEnabled - return -; ------------------------------------------------------------------------- -; case ENABLE_PWM: -enablePwm -; case ENABLE_SOFTWARE_PWM: -enableSoftPwm -; waitForData = 2; // 2 bytes needed (pin#, dutyCycle) - movlw d'2' - movwf waitForData -; executeMultiByteCommand = inputData; - movf inputData,w - movwf executeMultiByteCommand -; break; - return -; ------------------------------------------------------------------------- -; case DISABLE_PWM: -disablePwm -; case SET_SOFTWARE_PWM_FREQ: -setSoftPwmFreq -; case DISABLE_SOFTWARE_PWM: -disableSoftPwm -; waitForData = 1; // 1 byte needed (pin#) - movlw d'1' - movwf waitForData -; executeMultiByteCommand = inputData; - movf inputData,w - movwf executeMultiByteCommand -; break; - return -; ------------------------------------------------------------------------- -; case OUTPUT_TO_DIGITAL_PINS: // bytes to send to digital outputs -setOutputToDigitalPins -; firstInputByte = true; - bsf firstInputByte,0 -; break; - return -; ------------------------------------------------------------------------- -; case REPORT_VERSION: -reportVersion -; printByte(REPORT_VERSION); - movlw REPORT_VERSION - call printByte -; printByte(MAJOR_VERSION); - movlw MAJOR_VERSION - call printByte -; printByte(MINOR_VERSION); - movlw MINOR_VERSION - call printByte -; break; -; } -; } - return -;} -; -; ------------------------------------------------------------------------- -; processInput() is called whenever a byte is available on the -; Arduino's serial port. This is where the commands are handled. -; -;void processInput(byte inputData) -;{ -processInput ; on entry w contains a byte of input data from rxBuf -; int i; -; int mask; - movwf inputData ; save the new byte -; -; // a few commands have byte(s) of data following the command -; if( waitForData > 0) -; { - movf waitForData,f - btfsc STATUS,Z - goto pi_1 -; waitForData--; - decf waitForData,f -; storedInputData[waitForData] = inputData; - movlw storedInputData0 - addwf waitForData,w - movwf FSR - movf inputData,w - movwf INDF -; -; if(executeMultiByteCommand && (waitForData==0)) - movf executeMultiByteCommand,f - btfsc STATUS,Z - return ; executeMultiByteCommand == 0 - movf waitForData,f - btfss STATUS,Z - return ; waitForData != 0 -; { -; //we got everything - goto doMultiByteCommand -; ------------------------------------------------------------------------- -mb_enablePwm -; case ENABLE_PWM: ; 251 -; setPinMode(storedInputData[1],PWM); - movlw PWM - movwf mode - movf storedInputData1,w - movwf pin - sublw d'9' ; 9-PIN pins 9,10,11 only - btfsc STATUS,Z - goto setPWM9 - addlw d'1' - btfsc STATUS,Z - goto setPWM10 - addlw d'1' - btfss STATUS,Z - goto pi_6 ; not a hardware PWM pin -setPWM11 - call setPinMode - movf storedInputData0,w - movwf CCPR2L - movlw b'00001100' ; PWM mode, PWM LSBs=00 - movwf CCP2CON - goto pi_6 -setPWM10 - call setPinMode - movf storedInputData0,w - movwf CCPR1L - movlw b'00001100' ; PWM mode, PWM LSBs=00 - movwf CCP1CON - goto pi_6 -setPWM9 - call setPinMode - movf storedInputData0,w - bsf STATUS,RP0 ; bank 1 - movwf CCPR3L - movlw b'00001100' ; PWM mode, PWM LSBs=00 - movwf CCP3CON - bcf STATUS,RP0 ; bank 0 - goto pi_6 - -; analogWrite(storedInputData[1], storedInputData[0]); -; analogWrite from wiring.c (http://svn.berlios.de/svnroot/repos/arduino/trunk/targets/arduino/wiring.c): -;// Right now, PWM output only works on the pins with -;// hardware support. These are defined in the appropriate -;// pins_*.c file. For the rest of the pins, we default -;// to digital output. -;void analogWrite(int pin, int val) -;{ -; // We need to make sure the PWM output is enabled for those pins -; // that support it, as we turn it off when digitally reading or -; // writing with them. Also, make sure the pin is in output mode -; // for consistenty with Wiring, which doesn't require a pinMode -; // call for the analog output pins. -; pinMode(pin, OUTPUT); -; -; if (analogOutPinToTimer(pin) == TIMER1A) { -; // connect pwm to pin on timer 1, channel A -; sbi(TCCR1A, COM1A1); -; // set pwm duty -; OCR1A = val; -; } else if (analogOutPinToTimer(pin) == TIMER1B) { -; // connect pwm to pin on timer 1, channel B -; sbi(TCCR1A, COM1B1); -; // set pwm duty -; OCR1B = val; -;#if defined(__AVR_ATmega168__) -; } else if (analogOutPinToTimer(pin) == TIMER0A) { -; // connect pwm to pin on timer 0, channel A -; sbi(TCCR0A, COM0A1); -; // set pwm duty -; OCR0A = val; -; } else if (analogOutPinToTimer(pin) == TIMER0B) { -; // connect pwm to pin on timer 0, channel B -; sbi(TCCR0A, COM0B1); -; // set pwm duty -; OCR0B = val; -; } else if (analogOutPinToTimer(pin) == TIMER2A) { -; // connect pwm to pin on timer 2, channel A -; sbi(TCCR2A, COM2A1); -; // set pwm duty -; OCR2A = val; -; } else if (analogOutPinToTimer(pin) == TIMER2B) { -; // connect pwm to pin on timer 2, channel B -; sbi(TCCR2A, COM2B1); -; // set pwm duty -; OCR2B = val; -;#else -; } else if (analogOutPinToTimer(pin) == TIMER2) { -; // connect pwm to pin on timer 2, channel B -; sbi(TCCR2, COM21); -; // set pwm duty -; OCR2 = val; -;#endif -; } else if (val < 128) -; digitalWrite(pin, LOW); -; else -; digitalWrite(pin, HIGH); -;} -; end of analogWrite() from wiring.c -; break; - goto pi_6 -; ------------------------------------------------------------------------- -mb_disablePwm -; case DISABLE_PWM: ; 250 -; setPinMode(storedInputData[0],INPUT); - movlw INPUT - movwf mode - movf storedInputData0,w - movwf pin - sublw d'9' ; 9 - PIN, pins 9,10,11 only - btfsc STATUS,Z - goto disPWM9 - addlw d'1' - btfsc STATUS,Z - goto disPWM10 - addlw d'1' - btfss STATUS,Z - goto pi_6 ; not a hardware PWM pin -disPWM11 - call setPinMode - clrf CCP2CON - goto pi_6 ; not a hardware PWM pin -disPWM10 - call setPinMode - clrf CCP1CON - goto pi_6 ; not a hardware PWM pin -disPWM9 - call setPinMode - bsf STATUS,RP0 ; bank 1 - clrf CCP3CON - bcf STATUS,RP0 ; bank 0 - goto pi_6 ; not a hardware PWM pin -; break; -; ------------------------------------------------------------------------- -mb_enableSoftPwm -; case ENABLE_SOFTWARE_PWM: ; 253 -; setPinMode(storedInputData[1],PWM); - movf storedInputData1,w - movwf pin - movlw PWM - movwf mode - call setPinMode -; setSoftPwm(storedInputData[1], storedInputData[0]); -; break; - goto pi_6 -; ------------------------------------------------------------------------- -mb_disableSoftPwm -; case DISABLE_SOFTWARE_PWM: ; 252 -; disSoftPwm(storedInputData[0]); -; break; - goto pi_6 -; ------------------------------------------------------------------------- -mb_setSoftPwmFreq -; case SET_SOFTWARE_PWM_FREQ: ; 254 -; setSoftPwmFreq(storedInputData[0]); -; break; - goto pi_6 -; } -; ------------------------------------------------------------------------- -pi_6 -; executeMultiByteCommand = 0; - clrf executeMultiByteCommand -; } - return -; } -; ------------------------------------------------------------------------- -; else if(inputData < 128) -; { -pi_1 - btfsc inputData,7 - goto doCommand -; if(firstInputByte) - movf pwmStatusLo,w - xorlw 0xFF - andwf digitalPinStatusLo,w - movwf maskLo - movf pwmStatusHi,w - xorlw 0xFF - andwf digitalPinStatusHi,w - movwf maskHi - btfss firstInputByte,0 - goto pi_8 -; { -; // output data for pins 7-13 -; for(i=7; i> 7)); -; } -; } -pi_06 -; firstInputByte = false; - clrf firstInputByte - return -; } -; else -pi_8 -; { // -; for(i=0; i<7; ++i) -; { -; mask = 1 << i; -; if( (digitalPinStatus & mask) && !(pwmStatus & mask) ) -; { -; digitalWrite(i, inputData & mask); - btfss maskLo,0 - goto pi_13 - bcf STATUS,C ; the data bit is zero - btfsc inputData,0 - bsf STATUS,C ; unless it's one - call digitalWrite0 -pi_13 - btfss maskLo,1 - goto pi_14 - bcf STATUS,C ; the data bit is zero - btfsc inputData,1 - bsf STATUS,C ; unless it's one - call digitalWrite1 -pi_14 - btfss maskLo,2 - goto pi_15 - bcf STATUS,C ; the data bit is zero - btfsc inputData,2 - bsf STATUS,C ; unless it's one - call digitalWrite2 -pi_15 - btfss maskLo,3 - goto pi_16 - bcf STATUS,C ; the data bit is zero - btfsc inputData,3 - bsf STATUS,C ; unless it's one - call digitalWrite3 -pi_16 - btfss maskLo,4 - goto pi_17 - bcf STATUS,C ; the data bit is zero - btfsc inputData,4 - bsf STATUS,C ; unless it's one - call digitalWrite4 -pi_17 - btfss maskLo,5 - goto pi_18 - bcf STATUS,C ; the data bit is zero - btfsc inputData,5 - bsf STATUS,C ; unless it's one - call digitalWrite5 -pi_18 - btfss maskLo,6 - goto pi_19 - bcf STATUS,C ; the data bit is zero - btfsc inputData,6 - bsf STATUS,C ; unless it's one - call digitalWrite6 -; } -; } -; } -pi_19 - return -; } - - ORG 0x400 ; table lookup works better when it doesn't cross a 256-byte page boundary -; ------------------------------------------------------------------------- -; else -; { -; inputData > 127 -; switch (inputData) -; { -doCommand - movlw HIGH commandTab - movwf PCLATH - movf inputData,w - andlw 0x7F ; skip the first 127 values - addwf PCL,f ; jump to command -commandTab -; 128-129 UNUSED - return ; 128 - return ; 129 - goto setPinZeroToIn ;SET_PIN_ZERO_TO_IN equ d'130' ; set digital pin 0 to INPUT - goto setPinOneToIn ;SET_PIN_ONE_TO_IN equ d'131' ; set digital pin 1 to INPUT - goto setPinTwoToIn ;SET_PIN_TWO_TO_IN equ d'132' ; set digital pin 2 to INPUT - goto setPinThreeToIn ;SET_PIN_THREE_TO_IN equ d'133' ; set digital pin 3 to INPUT - goto setPinFourToIn ;SET_PIN_FOUR_TO_IN equ d'134' ; set digital pin 4 to INPUT - goto setPinFiveToIn ;SET_PIN_FIVE_TO_IN equ d'135' ; set digital pin 5 to INPUT - goto setPinSixToIn ;SET_PIN_SIX_TO_IN equ d'136' ; set digital pin 6 to INPUT - goto setPinSevenToIn ;SET_PIN_SEVEN_TO_IN equ d'137' ; set digital pin 7 to INPUT - goto setPinEightToIn ;SET_PIN_EIGHT_TO_IN equ d'138' ; set digital pin 8 to INPUT - goto setPinNineToIn ;SET_PIN_NINE_TO_IN equ d'139' ; set digital pin 9 to INPUT - goto setPinTenToIn ;SET_PIN_TEN_TO_IN equ d'140' ; set digital pin 10 to INPUT - goto setPinElevenToIn ;SET_PIN_ELEVEN_TO_IN equ d'141' ; set digital pin 11 to INPUT - goto setPinTwelveToIn ;SET_PIN_TWELVE_TO_IN equ d'142' ; set digital pin 12 to INPUT - goto setPinThirteenToIn ;SET_PIN_THIRTEEN_TO_IN equ d'143' ; set digital pin 13 to INPUT -; 144-149 UNUSED - return ; 144 - return ; 145 - return ; 146 - return ; 147 - return ; 148 - return ; 149 - goto disableDigitalInputs ;DISABLE_DIGITAL_INPUTS equ d'150' ; disable reporting of digital inputs - goto enableDigitalInputs ;ENABLE_DIGITAL_INPUTS equ d'151' ; enable reporting of digital inputs -; 152-159 UNUSED - return ; 152 - return ; 153 - return ; 154 - return ; 155 - return ; 156 - return ; 157 - return ; 158 - return ; 159 - goto setZeroAnalogIns ;ZERO_ANALOG_INS equ d'160' ; disable reporting on all analog ins - goto setOneAnalogIn ;ONE_ANALOG_IN equ d'161' ; enable reporting for 1 analog in (0) - goto setTwoAnalogIns ;TWO_ANALOG_INS equ d'162' ; enable reporting for 2 analog ins (0,1) - goto setThreeAnalogIns ;THREE_ANALOG_INS equ d'163' ; enable reporting for 3 analog ins (0-2) - goto setFourAnalogIns ;FOUR_ANALOG_INS equ d'164' ; enable reporting for 4 analog ins (0-3) - goto setFiveAnalogIns ;FIVE_ANALOG_INS equ d'165' ; enable reporting for 5 analog ins (0-4) - goto setSixAnalogIns ;SIX_ANALOG_INS equ d'166' ; enable reporting for 6 analog ins (0-5) -; 167-199 UNUSED - return ; 167 - return ; 168 - return ; 169 - return ; 170 - return ; 171 - return ; 172 - return ; 173 - return ; 174 - return ; 175 - return ; 176 - return ; 177 - return ; 178 - return ; 179 - return ; 180 - return ; 181 - return ; 182 - return ; 183 - return ; 184 - return ; 185 - return ; 186 - return ; 187 - return ; 188 - return ; 189 - return ; 190 - return ; 191 - return ; 192 - return ; 193 - return ; 194 - return ; 195 - return ; 196 - return ; 197 - return ; 198 - return ; 199 - goto setPinZeroToOut ;SET_PIN_ZERO_TO_OUT equ d'200' ; set digital pin 0 to OUTPUT - goto setPinOneToOut ;SET_PIN_ONE_TO_OUT equ d'201' ; set digital pin 1 to OUTPUT - goto setPinTwoToOut ;SET_PIN_TWO_TO_OUT equ d'202' ; set digital pin 2 to OUTPUT - goto setPinThreeToOut ;SET_PIN_THREE_TO_OUT equ d'203' ; set digital pin 3 to OUTPUT - goto setPinFourToOut ;SET_PIN_FOUR_TO_OUT equ d'204' ; set digital pin 4 to OUTPUT - goto setPinFiveToOut ;SET_PIN_FIVE_TO_OUT equ d'205' ; set digital pin 5 to OUTPUT - goto setPinSixToOut ;SET_PIN_SIX_TO_OUT equ d'206' ; set digital pin 6 to OUTPUT - goto setPinSevenToOut ;SET_PIN_SEVEN_TO_OUT equ d'207' ; set digital pin 7 to OUTPUT - goto setPinEightToOut ;SET_PIN_EIGHT_TO_OUT equ d'208' ; set digital pin 8 to OUTPUT - goto setPinNineToOut ;SET_PIN_NINE_TO_OUT equ d'209' ; set digital pin 9 to OUTPUT - goto setPinTenToOut ;SET_PIN_TEN_TO_OUT equ d'210' ; set digital pin 10 to OUTPUT - goto setPinElevenToOut ;SET_PIN_ELEVEN_TO_OUT equ d'211' ; set digital pin 11 to OUTPUT - goto setPinTwelveToOut ;SET_PIN_TWELVE_TO_OUT equ d'212' ; set digital pin 12 to OUTPUT - goto setPinThirteenToOut ;SET_PIN_THIRTEEN_TO_OUT equ d'213' ; set digital pin 13 to OUTPUT -; 214-228 UNUSED - return ; 214 - return ; 215 - return ; 216 - return ; 217 - return ; 218 - return ; 219 - return ; 220 - return ; 221 - return ; 222 - return ; 223 - return ; 224 - return ; 225 - return ; 226 - return ; 227 - return ; 228 - goto setOutputToDigitalPins ;OUTPUT_TO_DIGITAL_PINS equ d'229' ; next two bytes set digital output data -; 230-239 UNUSED - return; 230 - return; 231 - return; 232 - return; 233 - return; 234 - return; 235 - return; 236 - return; 237 - return; 238 - return; 239 - goto reportVersion ;REPORT_VERSION equ d'240' ; return the firmware version -; 240-249 UNUSED - return ; 241 - return ; 242 - return ; 243 - return ; 244 - return ; 245 - return ; 246 - return ; 247 - return ; 248 - return ; 249 - goto disablePwm ;DISABLE_PWM equ d'250' ; next byte sets pin # to disable - goto enablePwm ;ENABLE_PWM equ d'251' ; next two bytes set pin # and duty cycle - goto disableSoftPwm ;DISABLE_SOFTWARE_PWM equ d'252' ; next byte sets pin # to disable - goto enableSoftPwm ;ENABLE_SOFTWARE_PWM equ d'253' ; next two bytes set pin # and duty cycle - goto setSoftPwmFreq ;SET_SOFTWARE_PWM_FREQ equ d'254' ; set master frequency for software PWMs -; 255 UNUSED - return ; 255 -; ------------------------------------------------------------------------- -digitalRead ; on entry digitalPin is the pin to read, returns value in carry - movlw HIGH digRdTab - movwf PCLATH - movf digitalPin,w - bcf STATUS,C - addwf PCL,f -digRdTab - goto digitalRead0 - goto digitalRead1 - goto digitalRead2 - goto digitalRead3 - goto digitalRead4 - goto digitalRead5 - goto digitalRead6 - goto digitalRead7 - goto digitalRead8 - goto digitalRead9 - goto digitalRead10 - goto digitalRead11 - goto digitalRead12 - goto digitalRead13 -; ------------------------------------------------------------------------- -setPinToIn -; digitalPinStatus = digitalPinStatus &~ (1 << pin); -; pwmStatus = pwmStatus &~ (1 << pin); -; pinMode(pin,INPUT); - movlw HIGH pinintab - movwf PCLATH - movf pin,w - addwf PCL,f -pinintab - goto setPinZeroToIn - goto setPinOneToIn - goto setPinTwoToIn - goto setPinThreeToIn - goto setPinFourToIn - goto setPinFiveToIn - goto setPinSixToIn - goto setPinSevenToIn - goto setPinEightToIn - goto setPinNineToIn - goto setPinTenToIn - goto setPinElevenToIn - goto setPinTwelveToIn - goto setPinThirteenToIn -; ------------------------------------------------------------------------- -setPinToOut - movlw HIGH pinoutTab - movwf PCLATH - movf pin,w - addwf PCL,f -pinoutTab - goto setPinZeroToOut - goto setPinOneToOut - goto setPinTwoToOut - goto setPinThreeToOut - goto setPinFourToOut - goto setPinFiveToOut - goto setPinSixToOut - goto setPinSevenToOut - goto setPinEightToOut - goto setPinNineToOut - goto setPinTenToOut - goto setPinElevenToOut - goto setPinTwelveToOut - goto setPinThirteenToOut -; ------------------------------------------------------------------------- -setPinToPwm - movlw HIGH pinpwmTab - movwf PCLATH - movf pin,w - addwf PCL,f -pinpwmTab - goto setPinZeroToPWM - goto setPinOneToPWM - goto setPinTwoToPWM - goto setPinThreeToPWM - goto setPinFourToPWM - goto setPinFiveToPWM - goto setPinSixToPWM - goto setPinSevenToPWM - goto setPinEightToPWM - goto setPinNineToPWM - goto setPinTenToPWM - goto setPinElevenToPWM - goto setPinTwelveToPWM - goto setPinThirteenToPWM -; ------------------------------------------------------------------------- -analogRead ; analogRead sets analogDataHi and analogDataLo according to analogPin - movlw HIGH analogRdTab - movwf PCLATH - movf analogPin,w - addwf PCL,f -analogRdTab - goto analogRead0 - goto analogRead1 - goto analogRead2 - goto analogRead3 - goto analogRead4 - goto analogRead5 -; ------------------------------------------------------------------------- -doMultiByteCommand -; switch(executeMultiByteCommand) -; { - movlw HIGH mbctab - movwf PCLATH - movlw DISABLE_PWM ; 250 - subwf executeMultiByteCommand,w ; remove offset of 250 - addwf PCL,f -mbctab - goto mb_disablePwm ; 250 - goto mb_enablePwm ; 251 - goto mb_disableSoftPwm ; 252 - goto mb_enableSoftPwm ; 253 - goto mb_setSoftPwmFreq ; 254 -; ------------------------------------------------------------------------- -; - END ; directive 'end of program' - diff --git a/PICduino/f767duino.mcp b/PICduino/f767duino.mcp deleted file mode 100755 index 597b565..0000000 --- a/PICduino/f767duino.mcp +++ /dev/null @@ -1,30 +0,0 @@ -[HEADER] -magic_cookie={66E99B07-E706-4689-9E80-9B2582898A13} -file_version=1.0 -[PATH_INFO] -dir_src= -dir_bin= -dir_tmp= -dir_sin= -dir_inc= -dir_lib= -dir_lkr= -[CAT_FILTERS] -filter_src=*.asm -filter_inc=*.h;*.inc -filter_obj=*.o -filter_lib=*.lib -filter_lkr=*.lkr -[OTHER_FILES] -file_000=no -file_001=no -[FILE_INFO] -file_000=f767duino.asm -file_001=P16F767.INC -[SUITE_INFO] -suite_guid={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} -suite_state= -[TOOL_SETTINGS] -TS{DD2213A8-6310-47B1-8376-9430CDFC013F}= -TS{BFD27FBA-4A02-4C0E-A5E5-B812F3E7707C}=/o"$(TARGETBASE).cof" /M"$(BINDIR_)$(TARGETBASE).map" -TS{ADE93A55-C7C7-4D4D-A4BA-59305F7D0391}= diff --git a/PICduino/f767duino.mcw b/PICduino/f767duino.mcw deleted file mode 100755 index 12e9215..0000000 Binary files a/PICduino/f767duino.mcw and /dev/null differ diff --git a/PICduino/picduino.png b/PICduino/picduino.png deleted file mode 100755 index c534c4e..0000000 Binary files a/PICduino/picduino.png and /dev/null differ diff --git a/arduino-meta.pd b/arduino-meta.pd deleted file mode 100644 index ee36888..0000000 --- a/arduino-meta.pd +++ /dev/null @@ -1,6 +0,0 @@ -#N canvas 15 49 200 200 10; -#N canvas 25 49 420 300 META 1; -#X text 13 41 NAME arduino; -#X text 10 25 AUTHOR Hans-Chrsitoph Steiner \, Gerda Strobl \, Georg Holzmann; -#X text 10 10 VERSION 0.5.1; -#X restore 10 10 pd META; diff --git a/pduino-meta.pd b/pduino-meta.pd new file mode 100644 index 0000000..1d22a1d --- /dev/null +++ b/pduino-meta.pd @@ -0,0 +1,6 @@ +#N canvas 15 49 200 200 10; +#N canvas 25 49 420 300 META 1; +#X text 13 41 NAME pduino; +#X text 10 25 AUTHOR Hans-Chrsitoph Steiner \, Gerda Strobl \, Georg Holzmann; +#X text 10 10 VERSION 0.5.1; +#X restore 10 10 pd META; -- cgit v1.2.1