| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863 |
- --
- -- Copyright (C) 2004-2005 by egnite Software GmbH. All rights reserved.
- --
- -- Redistribution and use in source and binary forms, with or without
- -- modification, are permitted provided that the following conditions
- -- are met:
- --
- -- 1. Redistributions of source code must retain the above copyright
- -- notice, this list of conditions and the following disclaimer.
- -- 2. Redistributions in binary form must reproduce the above copyright
- -- notice, this list of conditions and the following disclaimer in the
- -- documentation and/or other materials provided with the distribution.
- -- 3. Neither the name of the copyright holders nor the names of
- -- contributors may be used to endorse or promote products derived
- -- from this software without specific prior written permission.
- --
- -- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- -- ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- -- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- -- FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- -- COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- -- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- -- BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- -- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- -- AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- -- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
- -- THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- -- SUCH DAMAGE.
- --
- -- For additional information see http://www.ethernut.de/
- --
- -- AVR Architecture
- --
- -- $Log$
- -- Revision 1.29 2009/02/06 15:37:40 haraldkipp
- -- Added stack space multiplier and addend. Adjusted stack space.
- --
- -- Revision 1.28 2009/02/04 23:40:52 hwmaier
- -- Added support for a receive buffer size configuration entry ATCAN_RX_BUF_SIZE.
- --
- -- Revision 1.27 2009/01/18 16:46:18 haraldkipp
- -- Properly distinguish between PIO IDs and port numbers.
- -- Call internal Lua functions when needed only.
- --
- -- Revision 1.26 2009/01/09 17:54:21 haraldkipp
- -- Added SPI bus controller for AVR and AT91.
- --
- -- Revision 1.25 2008/09/02 14:29:01 haraldkipp
- -- Disabled the old vs1001k driver.
- --
- -- Revision 1.24 2008/08/11 11:51:19 thiagocorrea
- -- Preliminary Atmega2560 compile options, but not yet supported.
- -- It builds, but doesn't seam to run properly at this time.
- --
- -- Revision 1.23 2008/07/19 02:54:52 thiagocorrea
- -- * conf/arch/avr.nut: Fix LCD size configuration for AVR.
- -- Previously, LCD Bus config settings would be used instead
- -- of the actual LCD Driver config settings.
- --
- -- Revision 1.22 2008/06/16 13:02:50 haraldkipp
- -- Temporarily removed wlandrv.c from build due to GCC 4.3 warnings.
- --
- -- Revision 1.21 2008/04/29 16:58:21 thiagocorrea
- -- Simplified HD44780 code for AVR based on the ARM driver.
- --
- -- Revision 1.20 2008/04/29 02:28:34 thiagocorrea
- -- Add configurable DTR pin to AVR USART driver.
- --
- -- Revision 1.19 2008/01/31 09:22:32 haraldkipp
- -- Added first version of platform independent GPIO routines. Consider the
- -- AVR version untested.
- --
- -- Revision 1.18 2007/10/05 23:47:50 olereinhardt
- -- Added a missin colon :-)
- --
- -- Revision 1.17 2007/10/04 19:32:52 olereinhardt
- -- SJA_BASE (base address for sja1000 driver) can now be set in configurator
- --
- -- Revision 1.16 2007/09/11 13:40:37 haraldkipp
- -- Typo corrected.
- --
- -- Revision 1.15 2007/04/12 09:07:54 haraldkipp
- -- Configurable SPI added.
- --
- -- Revision 1.14 2007/01/18 15:37:54 thiagocorrea
- -- Fixed macro for enabling CTS on the second USART port from the nutconf program
- --
- -- Revision 1.13 2006/10/08 16:40:17 haraldkipp
- -- Many thanks to Thiago Correa for adding LCD port configuration.
- --
- -- Revision 1.12 2006/10/05 17:16:04 haraldkipp
- -- Added exclusivity attribute.
- --
- -- Revision 1.11 2006/05/25 09:27:42 haraldkipp
- -- Watchdog API for AVR added.
- --
- -- Revision 1.10 2006/03/02 23:56:53 hwmaier
- -- NUT_THREAD_NICRXSTACK entry added
- --
- -- Revision 1.9 2006/02/08 15:20:22 haraldkipp
- -- ATmega2561 Support
- --
- -- Revision 1.8 2006/01/23 17:28:30 haraldkipp
- -- HW_NVMEM is now provided by specific modules.
- --
- -- Revision 1.7 2005/11/24 11:26:33 haraldkipp
- -- Added TLC16C550 driver.
- --
- -- Revision 1.6 2005/11/22 16:42:39 haraldkipp
- -- ICCAVR fixed. Re-enabled AHDLC and old UART driver.
- --
- -- Revision 1.5 2005/11/20 14:43:11 haraldkipp
- -- AHDLC driver and deprecated AVR UART driver temporarely removed from ICCAVR
- -- build. Will look into this later.
- --
- -- Revision 1.4 2005/10/24 11:14:07 haraldkipp
- -- NUT_CPU_FREQ option removed. This is handled in os.nut.
- --
- -- Revision 1.3 2005/10/04 05:51:49 hwmaier
- -- Added CAN driver for AT90CAN128
- --
- -- Revision 1.2 2005/09/17 09:28:26 drsung
- -- Added irqstack.c to sources for avr target.
- --
- -- Revision 1.1 2005/07/26 15:41:06 haraldkipp
- -- All target dependent code is has been moved to a new library named
- -- libnutarch. Each platform got its own script.
- --
- --
- nutarch_avr =
- {
- --
- -- Runtime Initialization
- --
- {
- name = "nutarch_avr_cstartup_icc",
- brief = "ICCAVR Startup",
- description = "There are five different ICCAVR startup files available.\n\n"..
- "crtnut.s, if globals and static variables use less than 4kB.\n"..
- "crtenut.s, same as above but including EEPROM emulation.\n"..
- "crtnutram.s, if globals and static variables use more than 4kB.\n"..
- "crtenutram.s, same as above but including EEPROM emulation.\n\n"..
- "crtnutm256.s, for the ATmega2560 and ATmega2561.\n\n"..
- "Ethernut 1.3 Rev-G boards require EEPROM emulation.",
- sources =
- {
- "avr/init/crtnut.s",
- "avr/init/crtnutram.s",
- "avr/init/crtenut.s",
- "avr/init/crtenutram.s",
- "avr/init/crtnutm256.s"
- },
- targets =
- {
- "avr/init/crtnut.o",
- "avr/init/crtnutram.o",
- "avr/init/crtenut.o",
- "avr/init/crtenutram.o",
- "avr/init/crtnutm256.o"
- },
- requires = { "TOOL_CC_AVR", "TOOL_ICC" },
- },
- --
- -- Board Initialization
- --
- {
- name = "nutarch_avr_bs",
- brief = "Board Support",
- sources =
- function()
- return { "avr/board/"..string.lower(c_macro_edit("PLATFORM"))..".c" };
- end,
- requires = { "HW_BOARD_SUPPORT" },
- },
- --
- -- Context Switching
- --
- {
- name = "nutarch_avr_context_gcc",
- brief = "Context Switching (AVRGCC)",
- provides = { "NUT_CONTEXT_SWITCH" },
- requires = { "HW_MCU_AVR", "TOOL_GCC" },
- sources = { "avr/os/context_gcc.c" },
- },
- {
- name = "nutarch_avr_context_icc",
- brief = "Context Switching (ICCAVR)",
- provides = { "NUT_CONTEXT_SWITCH" },
- requires = { "HW_MCU_AVR", "TOOL_ICC" },
- sources = { "avr/os/context_icc.c" },
- },
- --
- -- System Timer Hardware
- --
- {
- name = "nutarch_avr_ostimer",
- brief = "System Timer",
- requires = { "HW_MCU_AVR" },
- provides = { "NUT_OSTIMER_DEV" },
- sources = { "avr/dev/ostimer.c" },
- },
- {
- name = "nutarch_avr_wdt",
- brief = "Watchdog Timer (AVR)",
- requires = { "HW_MCU_AVR" },
- sources = { "avr/dev/wdt_avr.c" },
- },
- --
- -- AVR interrupt handling.
- --
- {
- name = "nutarch_avr_irq",
- brief = "Interrupt Handler",
- requires = { "HW_MCU_AVR" },
- provides = { "DEV_IRQ_AVR" },
- sources =
- {
- "avr/dev/ih_adc.c",
- "avr/dev/ih_analog_comp.c",
- "avr/dev/ih_canit.c",
- "avr/dev/ih_ee_ready.c",
- "avr/dev/ih_int0.c",
- "avr/dev/ih_int1.c",
- "avr/dev/ih_int2.c",
- "avr/dev/ih_int3.c",
- "avr/dev/ih_int4.c",
- "avr/dev/ih_int5.c",
- "avr/dev/ih_int6.c",
- "avr/dev/ih_int7.c",
- "avr/dev/ih_ovrit.c",
- "avr/dev/ih_spi_stc.c",
- "avr/dev/ih_spm_ready.c",
- "avr/dev/ih_timer0_comp.c",
- "avr/dev/ih_timer0_ovf.c",
- "avr/dev/ih_timer1_capt.c",
- "avr/dev/ih_timer1_compa.c",
- "avr/dev/ih_timer1_compb.c",
- "avr/dev/ih_timer1_compc.c",
- "avr/dev/ih_timer1_ovf.c",
- "avr/dev/ih_timer2_comp.c",
- "avr/dev/ih_timer2_ovf.c",
- "avr/dev/ih_timer3_capt.c",
- "avr/dev/ih_timer3_compa.c",
- "avr/dev/ih_timer3_compb.c",
- "avr/dev/ih_timer3_compc.c",
- "avr/dev/ih_timer3_ovf.c",
- "avr/dev/ih_twi.c",
- "avr/dev/irqstack.c"
- },
- options =
- {
- {
- macro = "IRQSTACK_SIZE",
- brief = "Separate Stack",
- description = "If this option is enabled, Nut/OS will use a separate "..
- "stack of the specified size for interrupts.\n"..
- "If this option is disabled, make sure to reserve "..
- "additional stack space for each thread.\n\n"..
- "Available for AVR-GCC only.",
- requires = { "HW_MCU_AVR", "TOOL_GCC" },
- flavor = "booldata",
- file = "include/cfg/dev.h"
- },
- }
- },
- {
- name = "nutarch_avr_irq_uart0",
- brief = "UART0 Interrupts",
- description = "UART0 interrupts.",
- requires = { "HW_MCU_AVR", "HW_AVR_HAVE_UART0" },
- provides = { "DEV_IRQ_UART0" },
- sources = {
- "avr/dev/ih_usart0_rx.c",
- "avr/dev/ih_usart0_tx.c",
- "avr/dev/ih_usart0_udre.c"
- },
- },
- {
- name = "nutarch_avr_irq_uart1",
- brief = "UART1 Interrupts",
- description = "UART1 interrupts.",
- requires = { "HW_MCU_AVR", "HW_AVR_HAVE_UART1" },
- provides = { "DEV_IRQ_UART1" },
- sources = {
- "avr/dev/ih_usart1_rx.c",
- "avr/dev/ih_usart1_tx.c",
- "avr/dev/ih_usart1_udre.c"
- },
- },
- --
- -- Device Drivers
- --
- {
- name = "nutarch_avr_ahdlc_uart0",
- brief = "AHDLC Device0",
- description = "HDLC device0, required for HDLC/PPP.",
- requires = { "DEV_IRQ_UART0" },
- provides = { "PROTO_HDLC_DEV" },
- sources = { "avr/dev/ahdlc0.c"},
- },
- {
- name = "nutarch_avr_ahdlc_uart1",
- brief = "AHDLC Device1",
- description = "HDLC device1, required for HDLC/PPP.",
- requires = { "DEV_IRQ_UART1" },
- provides = { "PROTO_HDLC_DEV" },
- sources = { "avr/dev/ahdlc1.c"},
- },
- {
- name = "nutarch_avr_ahdlc",
- brief = "AHDLC Protocol",
- description = "HDLC driver, required for PPP.",
- requires = { "HW_UART_AVR", "NUT_EVENT", "PROTO_HDLC_DEV" },
- provides = { "PROTO_HDLC" },
- sources = { "avr/dev/ahdlcavr.c" },
- options =
- {
- {
- macro = "NUT_THREAD_AHDLCRXSTACK",
- brief = "Receiver Thread Stack",
- description = "Number of bytes to be allocated for the stack of the AHDLC receive thread.",
- default = "512",
- type = "integer",
- file = "include/cfg/ahdlc.h"
- }
- }
- },
- {
- name = "nutarch_avr_debug0",
- brief = "UART Debug Output",
- description = "This simple UART output driver uses polling instead of "..
- "interrupts and can be used within interrupt routines. It "..
- "is mainly used for debugging and tracing.\n\n"..
- "Call NutRegisterDevice(&devDebug0, 0, 0) for U(S)ART0"..
- "Then you can use any of the stdio functions to open "..
- "device uart0.",
- requires = { "HW_AVR_HAVE_UART0", "HW_UART_AVR" },
- provides = { "DEV_UART", "DEV_FILE", "DEV_WRITE" },
- sources = { "avr/dev/debug0.c" }
- },
- {
- name = "nutarch_avr_debug1",
- brief = "UART Debug Output",
- description = "This simple UART output driver uses polling instead of "..
- "interrupts and can be used within interrupt routines. It "..
- "is mainly used for debugging and tracing.\n\n"..
- "Call NutRegisterDevice(&devDebug1, 0, 0) for U(S)ART1. "..
- "Then you can use any of the stdio functions to open "..
- "device uart1 resp.",
- requires = { "HW_AVR_HAVE_UART1", "HW_UART_AVR" },
- provides = { "DEV_UART", "DEV_FILE", "DEV_WRITE" },
- sources = { "avr/dev/debug1.c" }
- },
- {
- name = "nutarch_avr_usartcb",
- brief = "USART Driver CB",
- description = "Experimental driver.",
- requires = { "HW_MCU_ATMEGA128", "NUT_EVENT" },
- provides = { "DEV_UART_CBRXTX", "DEV_UART_HWCTRL" },
- sources = {
- "avr/dev/usart_cb_avr.c",
- "avr/dev/usart0cb_avr.c",
- "avr/dev/usart1cb_avr.c"
- }
- },
- {
- name = "nutarch_avr_usart0",
- brief = "USART0 Driver",
- description = "Hardware specific USART driver. Implements hardware "..
- "functions for the generic driver framework.",
- requires = {
- "HW_MCU_AVR",
- "HW_AVR_HAVE_UART0",
- "DEV_IRQ_AVR",
- "DEV_UART_GENERIC",
- "NUT_EVENT",
- "CRT_HEAPMEM"
- },
- provides = { "DEV_UART_SPECIFIC" },
- sources = { "avr/dev/usart0avr.c" },
- -- options =
- -- {
- -- {
- -- macro = "UART0_RTS_BIT",
- -- brief = "RTS Bit",
- -- description = "Bit number of UART0 RTS handshake output. If enabled, "..
- -- "the driver provides RS 232 input hardware handshake.\n\n"..
- -- "Ethernut 2.x:\n"..
- -- "Short JP1 pins 4 and 6 to select bit 2 on PORTE.",
- -- provides = { "UART0_RTS_BIT" },
- -- flavor = "booldata",
- -- type = "enumerated",
- -- choices = avr_bit_choice,
- -- file = "include/cfg/arch/avrpio.h"
- -- },
- -- {
- -- macro = "UART0_RTS_AVRPORT",
- -- brief = "RTS Port",
- -- description = "Port register name of UART0 RTS handshake output.",
- -- requires = { "UART0_RTS_BIT" },
- -- type = "enumerated",
- -- choices = avr_port_choice,
- -- file = "include/cfg/arch/avrpio.h"
- -- },
- -- {
- -- macro = "UART0_CTS_IRQ",
- -- brief = "CTS Interrupt",
- -- description = "Interrupt number of UART0 CTS handshake input. If enabled, "..
- -- "the driver provides RS 232 output hardware handshake.\n\n"..
- -- "Ethernut 2.x:\n"..
- -- "Short JP1 pins 7 and 8 to select INT7.",
- -- flavor = "booldata",
- -- type = "enumerated",
- -- choices = avr_irq_choice,
- -- file = "include/cfg/arch/avrpio.h"
- -- },
- -- {
- -- macro = "UART0_DTR_BIT",
- -- brief = "DTR Bit",
- -- description = "Bit number of UART0 DTR handshake output. If enabled, "..
- -- "the driver provides RS 232 output hardware handshake.\n\n",
- -- provides = { "UART0_DTR_BIT" },
- -- flavor = "booldata",
- -- type = "enumerated",
- -- choices = avr_bit_choice,
- -- file = "include/cfg/arch/avrpio.h"
- -- },
- -- {
- -- macro = "UART0_DTR_AVRPORT",
- -- brief = "DTR Port",
- -- description = "Port register name of UART0 DTR handshake output.",
- -- requires = { "UART0_DTR_BIT" },
- -- type = "enumerated",
- -- choices = avr_port_choice,
- -- file = "include/cfg/arch/avrpio.h"
- -- },
- -- {
- -- macro = "UART0_HDX_BIT",
- -- brief = "Half Duplex Bit",
- -- description = "Bit number of UART0 half duplex control output. If enabled, "..
- -- "the driver provides RS 485 half duplex mode.",
- -- provides = { "UART0_HDX_BIT" },
- -- flavor = "booldata",
- -- type = "enumerated",
- -- choices = avr_bit_choice,
- -- file = "include/cfg/arch/avrpio.h"
- -- },
- -- {
- -- macro = "UART0_HDX_AVRPORT",
- -- brief = "Half Duplex Port",
- -- description = "Port register name of UART0 half duplex control output.",
- -- requires = { "UART0_HDX_BIT" },
- -- type = "enumerated",
- -- choices = avr_port_choice,
- -- file = "include/cfg/arch/avrpio.h"
- -- },
- -- }
- },
- {
- name = "nutarch_avr_usart1",
- brief = "USART1 Driver",
- description = "Hardware specific USART driver. Implements hardware "..
- "functions for the generic driver framework.",
- requires =
- {
- "HW_MCU_AVR",
- "HW_AVR_HAVE_UART1",
- "DEV_UART_GENERIC",
- "NUT_EVENT",
- "CRT_HEAPMEM"
- },
- provides = { "DEV_UART_SPECIFIC" },
- sources = { "avr/dev/usart1avr.c" },
- -- options =
- -- {
- -- {
- -- macro = "UART1_RTS_BIT",
- -- brief = "RTS Bit",
- -- description = "Bit number of UART1 RTS handshake output. If enabled, "..
- -- "the driver provides RS 232 input hardware handshake.\n\n"..
- -- "Ethernut 2.x:\n"..
- -- "Short JP1 pins 4 and 6 to select bit 2 on PORTE.",
- -- provides = { "UART1_RTS_BIT" },
- -- flavor = "booldata",
- -- type = "enumerated",
- -- choices = avr_bit_choice,
- -- file = "include/cfg/arch/avrpio.h"
- -- },
- -- {
- -- macro = "UART1_RTS_AVRPORT",
- -- brief = "RTS Port",
- -- description = "Port register name of UART1 RTS handshake output.",
- -- requires = { "UART1_RTS_BIT" },
- -- type = "enumerated",
- -- choices = avr_port_choice,
- -- file = "include/cfg/arch/avrpio.h"
- -- },
- -- {
- -- macro = "UART1_CTS_IRQ",
- -- brief = "CTS Interrupt",
- -- description = "Interrupt number of UART1 CTS handshake input. If enabled, "..
- -- "the driver provides RS 232 output hardware handshake.\n\n"..
- -- "Ethernut 2.x:\n"..
- -- "Short JP1 pins 7 and 8 to select INT7.",
- -- flavor = "booldata",
- -- type = "enumerated",
- -- choices = avr_irq_choice,
- -- file = "include/cfg/arch/avrpio.h"
- -- },
- -- {
- -- macro = "UART1_DTR_BIT",
- -- brief = "DTR Bit",
- -- description = "Bit number of UART1 DTR handshake output. If enabled, "..
- -- "the driver provides RS 232 input hardware handshake.\n\n",
- -- provides = { "UART1_DTR_BIT" },
- -- flavor = "booldata",
- -- type = "enumerated",
- -- choices = avr_bit_choice,
- -- file = "include/cfg/arch/avrpio.h"
- -- },
- -- {
- -- macro = "UART1_DTR_AVRPORT",
- -- brief = "DTR Port",
- -- description = "Port register name of UART1 DTR handshake output.",
- -- requires = { "UART1_DTR_BIT" },
- -- type = "enumerated",
- -- choices = avr_port_choice,
- -- file = "include/cfg/arch/avrpio.h"
- -- },
- -- {
- -- macro = "UART1_HDX_BIT",
- -- brief = "Half Duplex Bit",
- -- description = "Bit number of UART1 half duplex control output. If enabled, "..
- -- "the driver provides RS 485 half duplex mode.",
- -- provides = { "UART1_HDX_BIT" },
- -- flavor = "booldata",
- -- type = "enumerated",
- -- choices = avr_bit_choice,
- -- file = "include/cfg/arch/avrpio.h"
- -- },
- -- {
- -- macro = "UART1_HDX_AVRPORT",
- -- brief = "Half Duplex Port",
- -- description = "Port register name of UART1 half duplex control output.",
- -- requires = { "UART1_HDX_BIT" },
- -- type = "enumerated",
- -- choices = avr_port_choice,
- -- file = "include/cfg/arch/avrpio.h"
- -- },
- -- }
- },
- {
- name = "nutarch_avr_usart2",
- brief = "USART2 Driver",
- description = "Hardware specific USART driver. Implements hardware "..
- "functions for the generic driver framework.",
- requires =
- {
- "HW_MCU_AVR",
- "DEV_IRQ_AVR",
- "DEV_UART_GENERIC",
- "NUT_EVENT",
- "CRT_HEAPMEM",
- "HW_AVR_HAVE_UART2"
- },
- provides = { "DEV_UART_SPECIFIC" },
- sources = { "avr/dev/usart2avr.c", "avr/dev/ih_usart2_rx.c", "avr/dev/ih_usart2_tx.c", "avr/dev/ih_usart2_udre.c" },
- options =
- {
- {
- macro = "UART2_RTS_BIT",
- brief = "RTS Bit",
- description = "Bit number of UART1 RTS handshake output. If enabled, "..
- "the driver provides RS 232 input hardware handshake.\n\n",
- provides = { "UART2_RTS_BIT" },
- flavor = "booldata",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "UART2_RTS_AVRPORT",
- brief = "RTS Port",
- description = "Port register name of UART2 RTS handshake output.",
- requires = { "UART2_RTS_BIT" },
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "UART2_CTS_IRQ",
- brief = "CTS Interrupt",
- description = "Interrupt number of UART2 CTS handshake input. If enabled, "..
- "the driver provides RS 232 output hardware handshake.\n\n",
- flavor = "booldata",
- type = "enumerated",
- choices = avr_irq_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "UART2_DTR_BIT",
- brief = "DTR Bit",
- description = "Bit number of UART2 DTR handshake output. If enabled, "..
- "the driver provides RS 232 input hardware handshake.\n\n",
- provides = { "UART2_DTR_BIT" },
- flavor = "booldata",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "UART2_DTR_AVRPORT",
- brief = "DTR Port",
- description = "Port register name of UART2 DTR handshake output.",
- requires = { "UART2_DTR_BIT" },
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "UART2_HDX_BIT",
- brief = "Half Duplex Bit",
- description = "Bit number of UART2 half duplex control output. If enabled, "..
- "the driver provides RS 485 half duplex mode.",
- provides = { "UART2_HDX_BIT" },
- flavor = "booldata",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "UART2_HDX_AVRPORT",
- brief = "Half Duplex Port",
- description = "Port register name of UART2 half duplex control output.",
- requires = { "UART2_HDX_BIT" },
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- }
- },
- {
- name = "nutarch_avr_usart3",
- brief = "USART3 Driver",
- description = "Hardware specific USART driver. Implements hardware "..
- "functions for the generic driver framework.",
- requires =
- {
- "HW_MCU_AVR",
- "DEV_IRQ_AVR",
- "DEV_UART_GENERIC",
- "NUT_EVENT",
- "CRT_HEAPMEM",
- "HW_AVR_HAVE_UART3"
- },
- provides = { "DEV_UART_SPECIFIC" },
- sources = { "avr/dev/usart3avr.c" },
- options =
- {
- {
- macro = "UART3_RTS_BIT",
- brief = "RTS Bit",
- description = "Bit number of UART3 RTS handshake output. If enabled, "..
- "the driver provides RS 232 input hardware handshake.\n\n",
- provides = { "UART3_RTS_BIT" },
- flavor = "booldata",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "UART3_RTS_AVRPORT",
- brief = "RTS Port",
- description = "Port register name of UART3 RTS handshake output.",
- requires = { "UART3_RTS_BIT" },
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "UART3_CTS_IRQ",
- brief = "CTS Interrupt",
- description = "Interrupt number of UART3 CTS handshake input. If enabled, "..
- "the driver provides RS 232 output hardware handshake.\n\n",
- flavor = "booldata",
- type = "enumerated",
- choices = avr_irq_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "UART3_DTR_BIT",
- brief = "DTR Bit",
- description = "Bit number of UART3 DTR handshake output. If enabled, "..
- "the driver provides RS 232 input hardware handshake.\n\n",
- provides = { "UART3_DTR_BIT" },
- flavor = "booldata",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "UART3_DTR_AVRPORT",
- brief = "DTR Port",
- description = "Port register name of UART3 DTR handshake output.",
- requires = { "UART3_DTR_BIT" },
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "UART3_HDX_BIT",
- brief = "Half Duplex Bit",
- description = "Bit number of UART3 half duplex control output. If enabled, "..
- "the driver provides RS 485 half duplex mode.",
- provides = { "UART3_HDX_BIT" },
- flavor = "booldata",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "UART3_HDX_AVRPORT",
- brief = "Half Duplex Port",
- description = "Port register name of UART3 half duplex control output.",
- requires = { "UART3_HDX_BIT" },
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- }
- },
- {
- name = "nutarch_avr_ace",
- brief = "TL16C550 Driver",
- description = "TL16C550 UART driver for ATmega128.\n"..
- "Initially contributed by William Basser and later "..
- "enhanced by Przemyslaw Rudy. Only available for GCC.",
- sources = { "avr/dev/ace.c", "avr/dev/tlc16c550.c" },
- requires = { "HW_MCU_ATMEGA128", "DEV_IRQ_AVR", "NUT_EVENT", "CRT_HEAPMEM", "TOOL_GCC" },
- provides = { "DEV_FILE", "DEV_READ", "DEV_WRITE" },
- },
- {
- name = "nutarch_avr_uart0",
- brief = "UART0 Device0",
- description = "UART0 Device for interrupt driven uart driver.",
- requires = { "DEV_IRQ_UART0" },
- provides = { "UART_AVR_DEV" },
- sources = { "avr/dev/uart0.c"},
- },
- {
- name = "nutarch_avr_uart1",
- brief = "UART1 Device0",
- description = "UART1 Device for interrupt driven uart driver.",
- requires = { "DEV_IRQ_UART1" },
- provides = { "UART_AVR_DEV" },
- sources = { "avr/dev/uart1.c"},
- },
- {
- name = "nutarch_avr_uart",
- brief = "UART driver",
- description = "Interrupt driven, buffered UART driver.\n"..
- "Deprecated, use the USART driver.",
- sources = { "avr/dev/uartavr.c" },
- requires = { "HW_MCU_AVR", "DEV_IRQ_AVR", "UART_AVR_DEV", "NUT_EVENT", "CRT_HEAPMEM" },
- provides = { "DEV_FILE", "DEV_READ", "DEV_WRITE" },
- },
- {
- name = "nutarch_avr_lanc111",
- brief = "LAN91C111 Driver",
- description = "LAN driver for SMSC LAN91C111. AVR only.",
- requires = { "HW_MCU_AVR", "NUT_EVENT", "NUT_TIMER" },
- provides = { "NET_PHY" },
- sources = { "avr/dev/lanc111.c" },
- options =
- {
- {
- macro = "LANC111_BASE_ADDR",
- brief = "Controller Base Address",
- description = "The driver supports memory mapped controllers only, using "..
- "the specified based address.\n\n"..
- "The Ethernut 2 reference design uses 0xC000.",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LANC111_SIGNAL_IRQ",
- brief = "Ethernet Interrupt",
- description = "Ethernet controller interrupt, typically INT5.",
- default = "INT5",
- type = "enumerated",
- choices = avr_irq_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LANC111_RESET_BIT",
- brief = "Ethernet Reset Bit",
- description = "Bit number of the Ethernet controller reset output.\n\n"..
- "Should be disabled when the LAN91C111 hardware reset "..
- "is not connected to a port pin.\n\n"..
- "On Ethernut 2 boards the controller's reset pin "..
- "is connected to the system reset. However, on early "..
- "board revisions of Ethernut 2.0 no supervisory chip "..
- "had been mounted, which causes problems with some "..
- "power supplies. Mounting R30 or R31 connects the reset "..
- "to bit 3 or bit 7 of PORTE.",
- provides = { "LANC111_RESET_BIT" },
- flavor = "booldata",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LANC111_RESET_AVRPORT",
- brief = "Ethernet Reset Port",
- description = "Port register name of the Ethernet controller reset output.",
- requires = { "LANC111_RESET_BIT" },
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- }
- },
- {
- name = "nutarch_avr_rtl8019as",
- brief = "RTL8019AS Driver",
- requires = { "HW_MCU_AVR", "NUT_TIMER" },
- provides = { "NET_PHY" },
- sources = { "avr/dev/nicrtl.c", "avr/dev/eth0rtl.c" },
- options =
- {
- {
- macro = "RTL_BASE_ADDR",
- brief = "Controller Base Address",
- description = "The driver supports memory mapped controllers only, using "..
- "the specified based address.\n\n"..
- "The Ethernut 1 reference design uses 0x8300.",
- default = "0x8300",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "RTL_SIGNAL_IRQ",
- brief = "Ethernet Interrupt",
- description = "Ethernet controller interrupt, typically INT5.",
- default = "INT5",
- type = "enumerated",
- choices = avr_irq_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "RTL_IRQ_RISING_EDGE",
- brief = "IRQ Rising Edge Trigger",
- description = "Configures rising edge trigger for RTL interrupt.\n\n"..
- "Don't enable this for Ethernut boards! "..
- "Used only on custom hardware designs without "..
- "inverter gate for the interrupt.\n\n"..
- "Valid only for ATMega 128 or AT90CAN128 parts, "..
- "not supported by ATMega 103.",
- flavor = "boolean",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "RTL_RESET_BIT",
- brief = "Ethernet Reset Bit",
- description = "Bit number of the Ethernet controller reset output.\n\n"..
- "Early Ethernut revisions use bit 4 on PORTE to hard "..
- "reset the RTL8019AS. Later the controller's reset pin "..
- "had been connected to the system reset.\n\n"..
- "Should be disabled when the RTL8019AS hardware reset "..
- "is not connected to a port pin.",
- provides = { "RTL_RESET_BIT" },
- flavor = "booldata",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "RTL_RESET_AVRPORT",
- brief = "Ethernet Reset Port",
- description = "Port register name of the Ethernet controller reset output.",
- requires = { "RTL_RESET_BIT" },
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "RTL_EESK_BIT",
- brief = "Ethernet EESK Bit",
- description = "Bit number of the Ethernet controller EEPROM clock input.\n\n"..
- "This function, when enabled, uses three port pins to emulate "..
- "a serial EEPROM for the RTL8019AS. The clock pin is driven "..
- "by the Ethernet controller and will be monitored by the "..
- "driver to shift the correct values out of the EEDO pin.\n\n"..
- "Ethernut 1.3 Rev-G uses Bit 5 on Port C. On previous board "..
- "revisions the EEDO pin is connected to high. As a result, "..
- "the full duplex bit is permanently enabled. But the RTL8019AS "..
- "does not provide link level handshake, which makes the "..
- "peer believe, that it's half duplex only and any full duplex "..
- "traffic from the RTL8019AS is considered a collision. This "..
- "is not fatal, but noticeably reduces throughput.\n\n"..
- "Should be disabled when the hardware doesn't support "..
- "EEPROM Emulation or provides a real EEPROM.",
- provides = { "RTL_EESK_BIT" },
- flavor = "booldata",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "RTL_EESK_AVRPORT",
- brief = "Ethernet EESK Port",
- description = "Port register name of the Ethernet controller EEPROM clock input.\n\n"..
- "Ethernut 1.3 Rev-G uses Bit 5 on Port C.",
- requires = { "RTL_EESK_BIT" },
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "RTL_EEDO_BIT",
- brief = "Ethernet EEDO Bit",
- description = "Bit number of the Ethernet controller EEPROM data output.\n\n"..
- "Ethernut 1.3 Rev-G uses Bit 6 on Port C.",
- requires = { "RTL_EESK_BIT" },
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "RTL_EEDO_AVRPORT",
- brief = "Ethernet EEDO Port",
- description = "Port register name of the Ethernet controller EEPROM data output.\n\n"..
- "Ethernut 1.3 Rev-G uses Bit 6 on Port C.",
- requires = { "RTL_EESK_BIT" },
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "RTL_EEMU_BIT",
- brief = "Ethernet EEMU Bit",
- description = "Bit number of the Ethernet controller EEPROM emulator output.\n\n"..
- "Ethernut 1.3 Rev-G uses Bit 7 on Port C to keep A15 high.\n\n"..
- "Disable this option if the hardware doesn't use this signal.",
- requires = { "RTL_EESK_BIT" },
- provides = { "RTL_EEMU_BIT" },
- flavor = "booldata",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "RTL_EEMU_AVRPORT",
- brief = "Ethernet EEMU Port",
- description = "Port register name of the Ethernet controller reset output.\n\n"..
- "Ethernut 1.3 Rev-G uses Bit 7 on Port C.",
- requires = { "RTL_EEMU_BIT" },
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "NUT_THREAD_NICRXSTACK",
- brief = "Receiver Thread Stack",
- description = "Number of bytes to be allocated for the stack of the NIC receive thread.",
- flavor = "booldata",
- type = "integer",
- file = "include/cfg/dev.h"
- }
- }
- },
- {
- name = "nutarch_avr_ide",
- brief = "ATA/IDE driver",
- description = "Mass storage driver.",
- requires = { "HW_MCU_AVR", "GCC_LE_4_5" },
- sources = { "avr/dev/ide.c" }
- },
- {
- name = "nutarch_avr_cs8900",
- brief = "CS8900 Driver",
- requires = { "HW_MCU_AVR", "NUT_TIMER", "GCC_LE_4_5" },
- sources = { "avr/dev/cs8900.c", "avr/dev/eth0cs.c" }
- },
- {
- name = "nutarch_avr_wlan",
- brief = "WLAN Driver",
- description = "Not well maintained. Disabled after compile problems with latest GCC.",
- requires = { "NOT_AVAILABLE", "NUT_EVENT", "HW_MCU_AVR" },
- provides = { "NET_PHY" },
- sources = { "avr/dev/wlan.c", "avr/dev/wlandrv.c" }
- },
- --
- -- Additional Hardware Support
- --
- {
- name = "nutarch_avr_gpio",
- brief = "AVR GPIO",
- requires = { "HW_MCU_AVR" },
- description = "Generic GPIO API.",
- sources = { "avr/dev/gpio_avr.c" }
- },
- {
- name = "nutarch_avr_adc",
- brief = "ADC Driver",
- description = "Driver for the ATmega analog to digital converter.\n\n"..
- "Only available for AVR-GCC.\n\n"..
- "Contributed by Ole Reinhardt from www.kernelconcepts.de",
- requires = { "HW_MCU_AVR", "TOOL_GCC" },
- sources = { "avr/dev/adc.c" },
- options =
- {
- {
- macro = "ADC_BUF_SIZE",
- brief = "Buffer Size",
- description = "Defaults to 16",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "ADC_INITIAL_CHANNEL",
- brief = "Initial Channel",
- description = "Set to ADC0..ADC7",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "ADC_INITIAL_REF",
- brief = "Initial Reference",
- description = "Set to AVCC (supply voltage), "..
- "AREF (external reference) "..
- "or INTERNAL_256 (2.56V)",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "ADC_INITIAL_MODE",
- brief = "Initial Mode",
- description = "Set to\n\nFREE_RUNNING:\n"..
- "Free-running mode. Samples continuously taken "..
- "every 13 cycles of ADC clock after "..
- "ADC_start_conversion() is called.\n\n"..
- "SINGLE_CONVERSION:\n"..
- "Single-conversion mode. One sample taken every "..
- "time ADC_start_conversion() is called.",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "ADC_INITIAL_PRESCALE",
- brief = "Initial Prescale",
- description = "Set to\n"..
- "ADC_PRESCALE_DIV2 for CPU clk/2\n"..
- "ADC_PRESCALE_DIV4 for CPU clk/4\n"..
- "ADC_PRESCALE_DIV8 for CPU clk/8\n"..
- "ADC_PRESCALE_DIV16 for CPU clk/16\n"..
- "ADC_PRESCALE_DIV32 for CPU clk/32\n"..
- "ADC_PRESCALE_DIV64 for CPU clk/64\n"..
- "ADC_PRESCALE_DIV128 for CPU clk/128",
- file = "include/cfg/arch/avrpio.h"
- },
- }
- },
- {
- name = "nutarch_avr_ir",
- brief = "IR Driver",
- requires = { "HW_MCU_AVR", "NUT_EVENT" },
- description = "Infrared remote control for Sony protocol.",
- sources = { "avr/dev/ir.c", "avr/dev/irsony.c" }
- },
- {
- name = "nutarch_avr_hd44780",
- brief = "HD44780 Driver",
- requires = { "HW_MCU_AVR" },
- provides = { "DEV_FILE", "DEV_WRITE" },
- sources = { "avr/dev/hd44780.c" },
- options =
- {
- {
- macro = "LCD_ROWS",
- brief = "Rows",
- description = "The number of available display rows, either 1, 2 or 4.",
- default = "2",
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_COLS",
- brief = "Columns",
- description = "The number of available display colums, either 8, 16, 20 or 40.",
- default = "16",
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "KS0073_CONTROLLER",
- brief = "KS0073 Controller",
- flavor = "boolean",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_SHORT_DELAY",
- brief = "Short delay",
- description = "Number of milliseconds",
- flavor = "booldata",
- type = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_LONG_DELAY",
- brief = "Long delay",
- description = "Number of milliseconds",
- flavor = "booldata",
- type = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_DATA_AVRPORT",
- brief = "Data port",
- description = "Port of the databits to use",
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_DATA_BITS",
- brief = "Bits Data Port",
- description = "Choose between 4 bits mode (upper or lower) and 8 bits mode",
- type = "enumerated",
- choices = hd44780_databits_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_ENABLE_AVRPORT",
- brief = "Enable Port",
- description = "Choose port used for the enable line",
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_ENABLE_BIT",
- brief = "Enable Bit",
- description = "Choose bit used for the enable line",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_REGSEL_AVRPORT",
- brief = "RS Port",
- description = "Choose port for the Register Select line",
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_REGSEL_BIT",
- brief = "RS Bit",
- description = "Choose bit for the Register Select line",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_RW_AVRPORT",
- brief = "RW Port",
- description = "Choose port for the Read Write line",
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_RW_BIT",
- brief = "RW Bit",
- description = "Choose bit for the Read Write line",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- }
- }
- },
- {
- name = "nutarch_arv_hd44780_bus",
- brief = "HD44780 Bus Driver",
- description = "Alternate memory mapped LCD Driver.\n\n"..
- "This is a terminal device driver for a memory "..
- "mapped HD44780 compatible LCD. It is connected "..
- "to the databus / adressbus. A chip select is "..
- "generated from /RD, /WR, and the address decoder. "..
- "It is connected to the LCD's enable signal. "..
- "A0 is connected to the register select pin and A1 "..
- "to the read/write signal. Therefore you'll read from "..
- "an address with an offset of two.\n\n"..
- "Only available for AVR-GCC.\n\n"..
- "Contributed by Ole Reinhardt from www.kernelconcepts.de",
- requires = { "HW_MCU_AVR", "TOOL_GCC" },
- provides = { "DEV_FILE", "DEV_WRITE" },
- sources = { "avr/dev/hd44780_bus.c" },
- options =
- {
- {
- macro = "LCD_4x20",
- brief = "LCD 4x20",
- flavor = "boolean",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_4x16",
- brief = "LCD 4x16",
- flavor = "boolean",
- file = "include/cfg/arch/avrpio.h"
- }, {
- macro = "LCD_2x40",
- brief = "LCD 2x40",
- flavor = "boolean",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_2x20",
- brief = "LCD 2x20",
- flavor = "boolean",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_2x16",
- brief = "LCD 2x16",
- flavor = "boolean",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_2x8",
- brief = "LCD 2x8",
- flavor = "boolean",
- file = "include/cfg/arch/avrpio.h"
- }, {
- macro = "LCD_1x20",
- brief = "LCD 1x20",
- flavor = "boolean",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_1x16",
- brief = "LCD 1x16",
- flavor = "boolean",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "LCD_1x8",
- brief = "LCD 1x8",
- flavor = "boolean",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "KS0073_CONTROLLER",
- brief = "KS0073 Controller",
- flavor = "boolean",
- file = "include/cfg/arch/avrpio.h"
- }
- }
- },
- {
- name = "nutarch_avr_sja1000",
- brief = "SJA1000 CAN Driver",
- description = "Driver for SJA1000 CAN-Bus controller.\n\n"..
- "The SJA1000 controller is connected to the memory "..
- "bus. It's base address and interrupt is set by "..
- "NutRegisterDevice().\n\n"..
- "Only available for AVR-GCC.\n\n"..
- "Contributed by Ole Reinhardt from www.embedded-it.de",
- provides = { "DEV_CAN_SPECIFIC"},
- requires = { "HW_MCU_AVR", "TOOL_GCC" },
- sources = { "avr/dev/sja1000.c" },
- options =
- {
- {
- macro = "SJA_BASE",
- brief = "Base address of SJA1000 controller",
- description = "Default is 0x8800.",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SJA_SIGNAL_BIT",
- brief = "Interrupt Number",
- description = "Default is 7. Must correspond "..
- "to SJA_SIGNAL.",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SJA_SIGNAL",
- brief = "Interrupt Signal",
- description = "Default is sig_INTERRUPT7. Must correspond "..
- "to SJA_SIGNAL_BIT.",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SJA_EICR",
- brief = "Interrupt Control",
- description = "Default is EICRB. Must correspond "..
- "to SJA_SIGNAL_BIT.",
- file = "include/cfg/arch/avrpio.h"
- }
- }
- },
- {
- name = "nutarch_avr_atcan",
- brief = "AT CAN Driver",
- description = "Driver for Atmel's internal Full CAN controller "..
- "found in AT90 parts like the AT90CAN128 MCU.\n\n"..
- "Requires a fixed MCU clock setting of either 12 or 16 MHz. "..
- "Check setting in System Timer category.\n"..
- "Currently only available for AVR-GCC.\n\n"..
- "Contributed by Henrik Maier from www.proconx.com",
- requires = { "HW_CAN_AVR", "TOOL_GCC"},
- provides = { "DEV_CAN_SPECIFIC"},
- sources = { "avr/dev/atcan.c" },
- options =
- {
- {
- macro = "ATCAN_RX_BUF_SIZE",
- brief = "Receive buffers",
- description = "Number of CAN messages in receive buffer. Default is 64.",
- file = "include/cfg/arch/avrpio.h"
- }
- }
- },
- {
- name = "nutarch_avr_spibus_avr",
- brief = "AVR SPI Bus Controller",
- description = "SPI bus controllers.\n\n",
- provides = { "SPIBUS_CONTROLLER" },
- sources =
- {
- "avr/dev/spibus_avr.c",
- "avr/dev/spibus0avr.c"
- },
- options =
- {
- {
- macro = "SPIBUS0_POLLING_MODE",
- brief = "Polling Mode (First Controller)",
- description = "If enabled, the controller will use polling mode. By default "..
- "interrupt mode is used.",
- flavor = "boolean",
- file = "include/cfg/spi.h"
- },
- {
- macro = "SPIBUS0_DOUBLE_BUFFER",
- brief = "Double buffer IRQ (First Controller)",
- description = "If enabled, the controller will use double buffered interrupt mode.\n\n"..
- "By default a single buffer is used. Ignored when polling mode is enabled.",
- flavor = "boolean",
- file = "include/cfg/spi.h"
- },
- {
- macro = "SPI0_CS0_PIO_ID",
- brief = "CS0 Port (First Controller)",
- description = "ID of the port used for SPI bus 0 chip select 0.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetAvrPorts() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPI0_CS0_PIO_BIT",
- brief = "CS0 Port Bit (First Controller)",
- description = "Port bit used for SPI bus 0 chip select 0.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetGpioBits() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPI0_CS1_PIO_ID",
- brief = "CS1 Port (First Controller)",
- description = "ID of the port used for SPI bus 0 chip select 1.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetAvrPorts() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPI0_CS1_PIO_BIT",
- brief = "CS1 Port Bit (First Controller)",
- description = "Port bit used for SPI bus 0 chip select 1.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetGpioBits() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPI0_CS2_PIO_ID",
- brief = "CS2 Port (First Controller)",
- description = "ID of the port used for SPI bus 0 chip select 2.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetAvrPorts() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPI0_CS2_PIO_BIT",
- brief = "CS2 Port Bit (First Controller)",
- description = "Port bit used for SPI bus 0 chip select 2.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetGpioBits() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPI0_CS3_PIO_ID",
- brief = "CS3 Port (First Controller)",
- description = "ID of the port used for SPI bus 0 chip select 3.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetAvrPorts() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPI0_CS3_PIO_BIT",
- brief = "CS3 Port Bit (First Controller)",
- description = "Port bit used for SPI bus 0 chip select 3.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetGpioBits() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPIBUS1_POLLING_MODE",
- brief = "Polling Mode (Second Controller)",
- description = "If enabled, the controller will use polling mode. By default "..
- "interrupt mode is used.",
- flavor = "boolean",
- file = "include/cfg/spi.h"
- },
- {
- macro = "SPIBUS1_DOUBLE_BUFFER",
- brief = "Double buffer IRQ (Second Controller)",
- description = "If enabled, the controller will use double buffered interrupt mode.\n\n"..
- "By default a single buffer is used. Ignored when polling mode is enabled.",
- flavor = "boolean",
- file = "include/cfg/spi.h"
- },
- {
- macro = "SPI1_CS0_PIO_ID",
- brief = "CS0 Port (Second Controller)",
- description = "ID of the port used for SPI bus 1 chip select 0.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetAvrPorts() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPI1_CS0_PIO_BIT",
- brief = "CS0 Port Bit (Second Controller)",
- description = "Port bit used for SPI bus 1 chip select 0.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetGpioBits() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPI1_CS1_PIO_ID",
- brief = "CS1 Port (Second Controller)",
- description = "ID of the port used for SPI bus 1 chip select 1.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetAvrPorts() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPI1_CS1_PIO_BIT",
- brief = "CS1 Port Bit (Second Controller)",
- description = "Port bit used for SPI bus 1 chip select 1.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetGpioBits() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPI1_CS2_PIO_ID",
- brief = "CS2 Port (Second Controller)",
- description = "ID of the port used for SPI bus 1 chip select 2.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetAvrPorts() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPI1_CS2_PIO_BIT",
- brief = "CS2 Port Bit (Second Controller)",
- description = "Port bit used for SPI bus 1 chip select 2.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetGpioBits() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPI1_CS3_PIO_ID",
- brief = "CS3 Port (Second Controller)",
- description = "ID of the port used for SPI bus 1 chip select 3.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetAvrPorts() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPI1_CS3_PIO_BIT",
- brief = "CS3 Port Bit (Second Controller)",
- description = "Port bit used for SPI bus 1 chip select 3.",
- requires = { "HW_GPIO" },
- type = "enumerated",
- choices = function() return GetGpioBits() end,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- },
- },
- {
- name = "nutdev_sppif0",
- brief = "Polled SPI0 (AVR)",
- description = "Polling hardware SPI driver, AVR and master mode only.",
- requires = { "HW_MCU_AVR" },
- provides = { "DEV_SPI" },
- sources = { "avr/dev/sppif0.c" },
- options =
- {
- {
- macro = "SPPI0_CS0_AVRPORT",
- brief = "CS0 Port",
- description = "ID of the port used for SPI chip select 0.",
- type = "enumerated",
- choices = avr_port_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_CS0_BIT",
- brief = "CS0 Port Bit",
- description = "Port bit used for SPI chip select 0.",
- type = "enumerated",
- choices = avr_bit_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_CS1_AVRPORT",
- brief = "CS1 Port",
- description = "ID of the port used for SPI chip select 1.",
- type = "enumerated",
- choices = avr_port_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_CS1_BIT",
- brief = "CS1 Port Bit",
- description = "Port bit used for SPI chip select 1.",
- type = "enumerated",
- choices = avr_bit_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_CS2_AVRPORT",
- brief = "CS2 Port",
- description = "ID of the port used for SPI chip select 2.",
- type = "enumerated",
- choices = avr_port_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_CS2_BIT",
- brief = "CS2 Port Bit",
- description = "Port bit used for SPI chip select 2.",
- type = "enumerated",
- choices = avr_bit_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_CS3_AVRPORT",
- brief = "CS3 Port",
- description = "ID of the port used for SPI chip select 3.",
- type = "enumerated",
- choices = avr_port_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_CS3_BIT",
- brief = "CS3 Port Bit",
- description = "Port bit used for SPI chip select 3.",
- type = "enumerated",
- choices = avr_bit_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_RST0_AVRPORT",
- brief = "RESET0 Port",
- description = "ID of the port used for SPI chip reset 0.",
- type = "enumerated",
- choices = avr_port_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_RST0_BIT",
- brief = "RESET0 Port Bit",
- description = "Port bit used for SPI chip reset 0.",
- type = "enumerated",
- choices = avr_bit_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_RST1_AVRPORT",
- brief = "RESET1 Port",
- description = "ID of the port used for SPI chip reset 1.",
- type = "enumerated",
- choices = avr_port_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_RST1_BIT",
- brief = "RESET1 Port Bit",
- description = "Port bit used for SPI chip reset 1.",
- type = "enumerated",
- choices = avr_bit_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_RST2_AVRPORT",
- brief = "RESET2 Port",
- description = "ID of the port used for SPI chip reset 2.",
- type = "enumerated",
- choices = avr_port_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_RST2_BIT",
- brief = "RESET2 Port Bit",
- description = "Port bit used for SPI chip reset 2.",
- type = "enumerated",
- choices = avr_bit_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_RST3_AVRPORT",
- brief = "RESET3 Port",
- description = "ID of the port used for SPI chip reset 3.",
- type = "enumerated",
- choices = avr_port_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPPI0_RST3_BIT",
- brief = "RESET3 Port Bit",
- description = "Port bit used for SPI chip reset 3.",
- type = "enumerated",
- choices = avr_bit_choice,
- flavor = "integer",
- file = "include/cfg/arch/avrpio.h"
- },
- },
- },
- {
- name = "nutarch_avr_spidigio",
- brief = "Shift Register I/O",
- description = "Digital I/O using shift registers.\n"..
- "This driver supports upto 32 digital inputs or outputs "..
- "and occupies 5 port bits only:\n"..
- "- Shift register data output\n"..
- "- Shift register data input\n"..
- "- Shift register clock output\n"..
- "- Shift register input latch\n"..
- "- Shift register output latch\n"..
- "The hardware is very simple, using standard TTL 74165 "..
- "shift registers for inputs and Allegro's UCN5841A for "..
- "outputs. All shift are connected in series, with the "..
- "first output register connected to the MCU data output "..
- "and the last input register connected to the data input.",
- sources = { "avr/dev/spidigio.c" },
- requires = { "HW_MCU_AVR" },
- options =
- {
- {
- macro = "SPIDIGIO_SOUT_BIT",
- brief = "Shift Output Bit",
- description = "Bit number of the serial data output.\n"..
- "Coconut uses bit 5 of PORTD.",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPIDIGIO_SOUT_AVRPORT",
- brief = "Shift Output Port",
- description = "Port register name of serial data output.",
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPIDIGIO_SIN_BIT",
- brief = "Shift Input Bit",
- description = "Bit number of the serial data input.\n"..
- "Coconut uses bit 6 of PIND.",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPIDIGIO_SIN_AVRPORT",
- brief = "Shift Input Port",
- description = "Port register name of serial data input.",
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPIDIGIO_SCLK_BIT",
- brief = "Clock Output Bit",
- description = "Bit number of the serial clock output.\n"..
- "Coconut uses bit 7 of PORTD.",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPIDIGIO_SCLK_AVRPORT",
- brief = "Clock Output Port",
- description = "Port register name of serial clock output.",
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPIDIGIO_LDI_BIT",
- brief = "Input Latch Bit",
- description = "Bit number of the input latch output.\n"..
- "Coconut uses bit 7 of PORTB.",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPIDIGIO_LDI_AVRPORT",
- brief = "Input Latch Port",
- description = "Port register name of the input latch output.",
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPIDIGIO_LDO_BIT",
- brief = "Output Latch Bit",
- description = "Bit number of the output latch signal, which is "..
- "connected to the strobe input of the UCN5841A\n"..
- "Coconut uses bit 5 of PORTB.",
- type = "enumerated",
- choices = avr_bit_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- {
- macro = "SPIDIGIO_LDO_AVRPORT",
- brief = "Output Latch Port",
- description = "Port register name of the output latch output.",
- type = "enumerated",
- choices = avr_port_choice,
- file = "include/cfg/arch/avrpio.h"
- },
- }
- },
- {
- name = "nutarch_avr_i2cbus",
- brief = "I2C Bus Controller",
- description = "Hardware dependent part of the I2C bus driver.\n\n"..
- "The new NutI2cBusXXX API introduced in Nut/OS version 5 "..
- "can be used with this controller driver.",
- requires = { "HW_MCU_AVR_ENHANCED" },
- provides = { "I2CBUS_CONTROLLER" },
- sources = { "avr/dev/i2cbus_avr.c" }
- },
- {
- name = "nutarch_avr_twif",
- brief = "TWI Driver",
- description = "This legacy TWI driver allows to use several I2C busses, "..
- "as long as they are based on the same hardware. It is not "..
- "possible, though, to mix bit-banging drivers and drivers "..
- "based on the AVR TWI hardware.\n\n"..
- "The driver is kept for backward compatibility. New applications "..
- "should consider to use the I2C bus controller driver.",
- requires = { "HW_MCU_AVR", "NUT_EVENT" },
- provides = { "DEV_TWI" },
- sources = { "avr/dev/twif.c" }
- },
- -- {
- -- name = "nutarch_avr_vs1001k",
- -- brief = "VS1001 Driver",
- -- requires = { "NUT_SEGBUF", "HW_MCU_AVR" },
- -- sources = { "avr/dev/vs1001k.c" }
- -- },
- {
- name = "nutarch_avr_arthernet_cpld",
- brief = "Arthernet CPLD",
- requires = { "HW_MCU_AVR" },
- options =
- {
- {
- macro = "ARTHERCPLDSTART",
- brief = "CPLD Base Address",
- default = "0x1100",
- file = "include/cfg/memory.h"
- },
- {
- macro = "ARTHERCPLDSPI",
- brief = "CPLD SPI Base Address",
- default = "0x1200",
- file = "include/cfg/memory.h"
- }
- }
- },
- {
- name = "nutarch_avr_pcmcia",
- brief = "PCMCIA Driver",
- requires = { "HW_MCU_AVR" },
- sources = { "avr/dev/pcmcia.c" },
- },
- {
- name = "nutarch_avr_eeprom",
- brief = "EEPROM Access",
- requires = { "HW_MCU_AVR" },
- provides = { "DEV_NVMEM" },
- sources = { "avr/dev/eeprom.c" }
- },
- }
|