Commit graph

1336 commits

Author SHA1 Message Date
George Oikonomou
5f4154a0e3 Adjust AON BatMon usage 2015-05-17 14:09:51 +01:00
Benoît Thébaudeau
25532e8abf Merge pull request #754 from wwhuang/master
[CC2538] Fix SPI_FLUSH
2015-05-16 20:55:30 +02:00
Antonio Lignan
e8b1a57ac6 Merge pull request #809 from cmorty/pull/msp430_gstabs
[MSP430] Add gstabs debug information (dwarf is broken)
2015-05-16 11:01:47 +02:00
Antonio Lignan
32afadea77 Merge pull request #1047 from g-oikonomou/cc26xx/contrib/lpm
CC26xx Ultra Low Power Operation
2015-05-16 10:27:22 +02:00
George Oikonomou
1cf37e0c1a Tidy-up code style 2015-05-15 23:36:54 +01:00
Harald Pichler
877bf27f5a Merge branch 'contiki' into osd 2015-05-15 20:48:26 +02:00
George Oikonomou
78d04f812b Fix typo in macro 2015-05-15 09:21:05 +01:00
George Oikonomou
07272b7cd6 Improve UART power-cycling logic:
* Only enable TX by default.
* Add some magic for RX handling. When an input handler is registered:
  * Automatically enable RX-related and interrupts
  * Automatically lock the SERIAL PD on under all power modes
  * Automatically enable the UART clock under sleep and deep sleep
  * Automatically undo all of the above when the input handler becomes NULL
  * As a result, modules / examples that need UART RX no longer need to clock the UART and manipulate the SERIAL PD. They simply have to specify an input handler
* Don't automatically power on the UART whenever the CM3 is active
* Before accessing the UART, make sure it is powered and clocked
* Avoid falling edge glitches
* Fix garbage characters / Explicitly wait for UART TX to complete
2015-05-15 09:21:04 +01:00
George Oikonomou
34f52ed08e Improve the LPM module:
* Implement new style of PD locks
* Use our own shutdown sequence rather than the one provided by cc26xxware
* Shutdown from within the interrupt that requested it. This allows shutdown to take place even if the code is stuck in a loop somewhere else
* Improve DCDC/GLDO/uLDO switching logic
* Explicitly handle oscillators and retentions
2015-05-15 09:21:04 +01:00
George Oikonomou
eb5b11a85a Re-order instructions in the RTC startup sequence 2015-05-15 09:21:03 +01:00
George Oikonomou
421fbfae25 Change the LPM locks API:
Instead of using a separate data structure to request that a PD remain powered during deep sleep,
we do the same within the main LPM data structure through an additional field.

This allows us to maintain only one linked list of LPM modules and overall improves code clarity
2015-05-15 09:21:02 +01:00
George Oikonomou
b3ac3ac0c1 Add function to unregister a module from LPM 2015-05-15 09:21:02 +01:00
George Oikonomou
cf99160706 Change lpm_shutdown() API call:
So that the caller can specify pin pull and wakeup state
2015-05-15 09:21:01 +01:00
George Oikonomou
5644e95fb6 Fix global interrupt manipulation 2015-05-15 09:21:00 +01:00
George Oikonomou
bd79e18e1e Switch between oscillator's using the dedicated module's functions 2015-05-15 09:21:00 +01:00
George Oikonomou
ad52d68a0c Add function to configure a pin to a default state 2015-05-15 09:21:00 +01:00
George Oikonomou
3877190196 Change function to static 2015-05-15 09:21:00 +01:00
George Oikonomou
3bbf3cc435 Add SysCtrl glue macros 2015-05-15 09:20:57 +01:00
George Oikonomou
8a42af682d Make sure PERIPH is on before accessing GPT registers 2015-05-15 09:20:57 +01:00
George Oikonomou
9d97dee00b Clock the GPT module only when we need it 2015-05-15 09:20:57 +01:00
George Oikonomou
b7e7d48f0b Add oscillator control wrappers 2015-05-15 09:20:56 +01:00
Brad Campbell
3b6d9e5a64 mc1322x: remove rest tutorial
This tutorial was written for the older implementation of CoAP, and
while it may be possible to update it, the directions include URLs and
repos that no longer exist, so it's better to just remove it.
2015-05-14 17:20:46 -04:00
Benoît Thébaudeau
c9324d133f Merge pull request #1060 from g-oikonomou/cc26xx/contrib/ihex
Produce ihex files usable with TI's Flash Programmer
2015-05-14 19:24:36 +02:00
Benoît Thébaudeau
d64927397f Merge pull request #968 from g-oikonomou/cc2538-contrib-on-chip-sensors
Move CC2538 VDD/3 and On-Chip Temp sensors to the CPU dir
2015-05-14 19:21:56 +02:00
Benoît Thébaudeau
71f22b1775 Merge pull request #966 from g-oikonomou/cc2538-startup-to-cpu-dir
Move cc2538 startup-gcc.c to the CPU dir
2015-05-14 18:43:39 +02:00
George Oikonomou
69c4f19336 Produce ihex files usable with TI's Flash Programmer 2015-05-14 13:22:11 +01:00
George Oikonomou
f7baf5aba2 Change CC2538 USB and UART handlers to weak 2015-05-13 01:31:26 +01:00
George Oikonomou
96e1647270 Move cc2538 startup-gcc.c to the CPU dir 2015-05-13 01:31:10 +01:00
George Oikonomou
3717522680 Re-work the CC2538 driver to be a driver for the Srf06 ALS only 2015-05-12 23:42:19 +01:00
George Oikonomou
06b0ee4a8b Include CC2538 sensors in the build 2015-05-12 23:42:19 +01:00
George Oikonomou
9cc800d728 Add CC2538 VDD sensor driver 2015-05-12 23:42:19 +01:00
George Oikonomou
f474514ee5 Add CC2538 tmp sensor driver 2015-05-12 23:42:19 +01:00
George Oikonomou
40716ab515 Add generic header for CC2538 sensors 2015-05-12 23:42:18 +01:00
George Oikonomou
cf1f722a93 Merge pull request #1045 from g-oikonomou/cc26xx/contrib/cc26xx-rf-wakeup
Fix "CC26xx delayed wakeup after RF TX" bug
2015-05-09 22:50:50 +01:00
George Oikonomou
bd5e35c968 Merge pull request #1052 from simonduq/packetbuf-cleanup
Packetbuf cleanup
2015-05-09 22:30:21 +01:00
George Oikonomou
33526be5ab Merge pull request #985 from g-oikonomou/cc26xx-minor-updates
Minor Updates to the CC26xx Port
2015-05-09 22:29:30 +01:00
George Oikonomou
a2d6df225e Merge pull request #967 from g-oikonomou/cc2538-contrib-rf-local-vars
Use local variable to store RF on/off state
2015-05-09 22:23:31 +01:00
George Oikonomou
94299af9f7 Merge pull request #983 from g-oikonomou/cc26xx-watchdog
Fix typo in CC26xx WDT-related macros
2015-05-09 22:04:06 +01:00
Simon Duquennoy
290fc829ea Consistently use PACKETBUF_ATTR_MAC_SEQNO for MAC sequence number, both input and output. Disable PACKETBUF_ATTR_PACKET_ID in the non-Rime case. 2015-05-06 16:34:44 +02:00
Simon Duquennoy
bb76bb8beb Remove unused flag SICSLOWPAN_CONF_ACK_ALL. Include packetbuf attribute PACKETBUF_ATTR_RELIABLE only when RIME is compiled. 2015-05-06 16:34:26 +02:00
George Oikonomou
c77cf4bb90 Fix BLE on/off check 2015-05-03 22:36:03 +01:00
George Oikonomou
f83c4e7286 Improve code style 2015-05-03 22:36:03 +01:00
George Oikonomou
2059be3a43 Merge pull request #1031 from bthebaudeau/cc2538-gpio-irqs
cc2538: gpio: Improve and fix IRQ management
2015-05-03 18:42:53 +01:00
George Oikonomou
0c827a9739 Fix typo in CC26xx WDT-related macros 2015-05-01 17:13:38 +01:00
George Oikonomou
5cbde8b19b Fix CC26xx RF delayed wakeup after TX bug 2015-05-01 15:26:57 +01:00
Ulf Knoblich
8e624c750d cc2538 i2c bug in clock computation 2015-04-29 11:07:59 +02:00
Benoît Thébaudeau
3d9d52de87 cc2538: gpio: Fix missed interrupts
Only the interrupt flags that have been handled must be cleared.
Otherwise, if a new interrupt occurs after the interrupt statuses are
read and before they are cleared, then it is discarded without having
been handled. This issue was particularly likely with two interrupt
trigger conditions occurring on different pins of the same port in a
short period of time.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
2015-04-27 01:14:51 +02:00
Benoît Thébaudeau
1a5632cba0 cc2538: gpio: Fix missed power-up interrupts
Power-up interrupts do not always update the regular interrupt status.
Because of that, in order not to miss power-up interrupts, the ISR must
handle both the regular and the power-up interrupt statuses.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
2015-04-27 01:14:51 +02:00
Benoît Thébaudeau
1e67ab3941 cc2538: gpio: Add macros to get interrupt status
Introduce new useful GPIO macros to:
 - get the raw interrupt status of a port,
 - get the masked interrupt status of a port,
 - get the power-up interrupt status of a port.

These macros are cleaner and less error-prone than raw register access
code copied all over the place.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
2015-04-27 01:14:51 +02:00
Benoît Thébaudeau
41d9078ed4 cc2538: gpio: Factor out duplicated ISR code
This makes the code easier to maintain, and this reduces the binary
image size.

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
2015-04-27 01:14:50 +02:00
Oliver Schmidt
a824722862 Merge remote-tracking branch 'upstream/master' 2015-04-26 14:35:40 +02:00
Oliver Schmidt
7b3e80a957 Remove received packet(s) to allow to send one.
Behave just like the CS8900A driver: Both the CS8900A and the LAN91C96 dynamically share a buffer for received packets and packets to be send. If the chip is exposed to a network with a lot of broadcasts the shared buffer might fill quicker with received packets than the 6502 reads them (via polling). So we might need to drop some received packets in order to be able to send anything at all.
2015-04-26 14:23:33 +02:00
George Oikonomou
692d50d22f Don't reject frames with version==1 2015-04-14 12:58:49 +01:00
Nicolas Tsiftes
8f50d9709d Merge pull request #999 from adamdunkels/lebrush-rdnss-support-rebased
RDNSS support, again
2015-03-30 17:21:23 +02:00
George Oikonomou
489f9618e8 Update #if guard to match header filename
Closes #952
2015-03-28 23:53:05 +00:00
George Oikonomou
48e987baac Merge pull request #1005 from alignan/i2c_cc2538
CC2538 I2C driver
2015-03-28 23:23:06 +00:00
Benoît Thébaudeau
19fd7a3551 Use additive offsets
OR-ing an offset to a base address instead of adding it is dangerous
because it can only work if the base address is aligned enough for the
offset.

Moreover, if the base address or the offset has a value unknown at
compile time, then the assembly instructions dedicated to 'base +
offset' addressing on most CPUs can't be emitted by the compiler because
this would require the alignment of the base address against the offset
to be known in order to optimize 'base | offset' into 'base + offset'.
In that case, the compiler has to emit more instructions in order to
compute 'base | offset' on most CPUs, e.g. on ARM, which means larger
binary size and slower execution.

Hence, replace all occurrences of 'base | offset' with 'base + offset'.
This must become a coding rule.

Here are the results for the cc2538-demo example:
 - Compilation of uart_init():
    * before:
        REG(regs->base | UART_CC) = 0;
        200b78:	f446 637c 	orr.w	r3, r6, #4032	; 0xfc0
        200b7c:	f043 0308 	orr.w	r3, r3, #8
        200b80:	2200      	movs	r2, #0
        200b82:	601a      	str	r2, [r3, #0]

    * now:
        REG(regs->base + UART_CC) = 0;
        200b7a:	2300      	movs	r3, #0
        200b7c:	f8c4 3fc8 	str.w	r3, [r4, #4040]	; 0xfc8

 - Size of the .text section:
    * before:	0x4c7c
    * now:	0x4c28
    * saved:	84 bytes

Signed-off-by: Benoît Thébaudeau <benoit.thebaudeau.dev@gmail.com>
2015-03-28 17:28:15 +01:00
William Huang
1e39c9a454 fixed SPI_FLUSH. current implementation waits for rx buffer to fill first. Thus, if we call SPI_FLUSH to make sure the rx fifo is empty when the rx fifo is already empty, we enter an infinite loop 2015-03-26 14:17:06 -04:00
Antonio Lignan
22be9fd8b7 I2C driver taken from PR #677, uncrustified, made functions static and added burst modes 2015-03-25 16:44:12 +01:00
Harald Pichler
560117e8f3 Merge branch 'contiki' into osd 2015-03-23 13:07:28 +01:00
George Oikonomou
c169b3e3bb Merge pull request #845 from alignan/fix_region
Changed code region to any
2015-03-10 22:04:38 +00:00
Jonas Olsson
5e5e9b92fd Add CC26xx CPU files 2015-02-25 13:09:56 +01:00
Harald Pichler
d31ecbf486 Merge branch 'contiki' into osd 2015-02-18 10:04:47 +01:00
George Oikonomou
5288725af7 Use local variable to store RF on/off state
Fixes #823
2015-02-18 09:05:02 +01:00
Nicolas Tsiftes
080de75c87 Merge pull request #959 from g-oikonomou/cc2538-doc
Improve CC2538 documentation
2015-02-17 08:50:18 +01:00
Jim Paris
d350aa4dd7 Fix aducrf101 builds with GCC 4.9+
Mixing LTO and libraries requires the use of gcc-ar instead of ar.
See https://gcc.gnu.org/wiki/LinkTimeOptimizationFAQ?action=recall&rev=5#ar.2C_nm_and_ranlib
2015-02-16 14:52:05 -05:00
George Oikonomou
6bd8bb05f6 Improve wording 2015-02-16 10:17:58 +01:00
George Oikonomou
72914369e8 Re-structure CC2538 doxygen module hierarchy 2015-02-16 10:17:58 +01:00
George Oikonomou
8751e55c94 Improve wording, fix warnigs in the SSI/SPI docs 2015-02-16 10:17:58 +01:00
George Oikonomou
a93a8912c2 Clarify GPIO read and write macros 2015-02-16 10:17:57 +01:00
George Oikonomou
4100cbc9c0 Fix doxygen warning in the CC2538 uDMA driver's header 2015-02-16 10:17:57 +01:00
George Oikonomou
88e190103c Fix doxygen warning in the CC2538 SPI driver 2015-02-16 10:17:57 +01:00
George Oikonomou
b6bd556805 Fix clock.h warnings caused by multiple, conflicting documentation blocks of clock functions 2015-02-15 21:48:30 +01:00
George Oikonomou
a4e7cc29e8 Merge pull request #946 from e120guru/hotfix-radio-driver-error-reinit
CC2538 RF driver issues x3
2015-02-13 14:19:49 +01:00
Michael Karlsson
62fc6f2f07 corrected code style error 2015-02-13 13:46:57 +01:00
George Oikonomou
2f5db64b2b Merge pull request #947 from zwpaper/enableFlowControl
Fix the uart0 flow control register P0SEL setting in cpu cc253x
2015-02-12 08:49:33 +01:00
Harald Pichler
98be2c25ea remove for test purose 2015-01-29 11:01:27 +01:00
PapEr
cd4322cec2 Fix the uart0 flow control register P0SEL setting in cpu cc253x 2015-01-25 13:57:40 +08:00
Michael Karlsson
be9879cf18 fixed error in saving status 2015-01-21 22:35:30 +01:00
Michael Karlsson
37def294ce fixed bug that made radio die after error when not using default channel and/or not using a RDC protocol 2015-01-21 22:28:31 +01:00
Víctor Ariño
ccc0d27da0 Integrates uip-nameserver API
On the same commit the src have been uncrustified and some typo
fixes as well as includes missing.
2015-01-09 09:44:06 +01:00
Harald Pichler
9efc5d41c1 Merge branch 'contiki' into osd 2014-12-29 08:20:00 +01:00
Nicolas Tsiftes
1f13be10fc Merge pull request #908 from bbc2/fix-rndis-macro
usb/rndis: Add parentheses to an unsafe macro
2014-12-19 22:16:33 +01:00
Jelmer Tiete
b088326b5e Corrected the register offset value of ANA_REGS_IVCTRL. TI was using the address offset instead of the physical address in their header file. 2014-12-19 04:14:34 -05:00
Bertrand Bonnefoy-Claudet
9baa378c97 usb/rndis: Add parentheses to an unsafe macro 2014-12-12 19:17:46 +01:00
Luis Alves
1bddbae297 rf230bb: Fix missing ')' and indentation. 2014-12-09 22:06:12 +00:00
Harald Pichler
a02be51f08 Merge branch 'contiki' into osd 2014-12-07 15:24:00 +01:00
Nicolas Tsiftes
9e7927e415 Merge pull request #765 from ejoerns/pull-req/avr-asflags
[avr] Add mcu parameter to ASFLAGS
2014-12-02 19:16:14 +01:00
Simon Duquennoy
a9cc909794 Network layer configuration: replace UIP_CONF_* with NETSTACK_CONF_WITH_* 2014-12-01 21:02:57 +01:00
Simon Duquennoy
722b3258d1 Cleanup of the Contiki network layer configuration. Now using CONTIKI_WITH_IPV6, CONTIKI_WITH_IPV4, and CONTIKI_WITH_RIME in makefiles, and UIP_CONF_IPV6, UIP_CONF_IPV4, UIP_CONF_RIME in c code. Now only the stacks that are used are compiled (via makefile MODULES). Make IPv6 the default network stack. 2014-12-01 20:13:09 +01:00
Nicolas Tsiftes
9b90c378e8 Merge pull request #812 from kkrentz/packetbuf-holds-broadcast
packetbuf_holds_broadcast()
2014-11-28 19:15:19 +01:00
Josef Lusticky
c6bea7d0e7 avr: fix divide when CLOCK_SECOND is not a power of two 2014-11-26 22:47:50 +01:00
Ralf Schlatterbeck
f0ad042bfc Minor optimisations of timer init 2014-11-19 13:53:21 +01:00
Ralf Schlatterbeck
fd54bc9ca4 Inline timer init functions, no static storage
Hardware init function profit a great deal from being inlined if the
given parameters are constant -- which is the common use-case, we could
probably call this for all timers and still have less overhead. The
hwtimer_pwm_ini (which calls hwtimer_ini) gets completely computed at
compile-time resulting only in the register settings of hwtimer_ini.

This is now possible because we get rid of static storage for the
max_ticks and instead compute this in hwtimer_pwm_max_ticks from the
timer register settings.
2014-11-19 13:52:42 +01:00
Ralf Schlatterbeck
08abd8807d Fixes for platform timer code
Some platforms are missing timer channels, this is now left to the
(missing) preprocessor definitions on those platforms, no
platform-specific defines needed anymore.
Also fix usage of timer counter register 3 (hardcoded) in
cpu/avr/dev/clock.c -- this code isn't used on many platforms as it
requires a very special quartz clock frequency but this now also uses
the platform timer specification.
2014-11-19 13:48:42 +01:00
Ralf Schlatterbeck
b6be226e69 Add Arduino compatibility layer
We can now directly compile arduino sketches (.pde) files.
Arduino compatible analogWrite works now.
But there is still a long way to go, serial I/O and timer stuff (delay,
millis etc) currently don't work (not tested but I don't expect this to
work).
It can be used in an arduino sketch or in a normal contiki program.
We get a PWM frequency of 490.2 Hz (a period of 2.040 ms), that's
Arduino compatible. If you need different frequencies see native timer
usage in examples/osd/pwm-example
In a contiki program you have to call arduino_pwm_timer_init to
initialize the timer before pwm works. The arduino sketch wrapper
already does this.
For running a sketch, see examples/osd/arduino-sketch
2014-11-19 13:48:05 +01:00
Ralf Schlatterbeck
b17934c491 Allow compilation of c++ files (extension .cpp) 2014-11-19 13:47:51 +01:00
Ralf Schlatterbeck
cfec3c6e2d Initial implementation of avr hardware timer
Mainly for PWM use for now.
With example to set the LED to different brightness via COAP.
We switch the LED with 50 kHz (20µs) in this example.
2014-11-19 13:47:37 +01:00
Ralf Schlatterbeck
4ceffb090d Make HW timer for contiki rtimer configurable
... and configure osd platform to use timer 5. With the new
configuration we can use timer 3 for generating hardware PWM.
2014-11-19 13:44:55 +01:00
Harald Pichler
34d64b4eb0 bugfix blockmode, 8 Hz dutycyle as standard 2014-11-19 13:34:07 +01:00