log for 5268a8b5858aae31aeb6160e8dd071af1c030d67
Commit 5268a8b5858aae31aeb6160e8dd071af1c030d67
author: Michel Pollet [Sun, 11 Apr 2010 18:36:59 +0000 (19:36 +0100)]
Message:
mega128: Fixes timer comparators

Bits are in the right order now

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit b25803fd49b7c51e7c4bb1fc4336aa77ee78060d
author: Michel Pollet [Sat, 10 Apr 2010 17:05:30 +0000 (18:05 +0100)]
Message:
twi: Stripped down TWI module to fix compile

New system will take it's place soon

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit eca93983ee257cf56d2552444e66723252e35464
author: Michel Pollet [Sat, 10 Apr 2010 12:19:19 +0000 (13:19 +0100)]
Message:
example: Added OC2A to timer test

Uses OC2A toggle with a VCD trace to demo the new compators.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 12785a574be48f05786975caf6a3860b04b65575
author: Michel Pollet [Sat, 10 Apr 2010 12:18:30 +0000 (13:18 +0100)]
Message:
cores: Refactored timer comparators

Based on patch by <tomi.leppikangas@gmail.com> but fixed the other
cores to fix a few cut/paste issues.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 1c66d76823558731f3c7d091bdff84a5816f0a1b
author: Michel Pollet [Sat, 10 Apr 2010 12:16:37 +0000 (13:16 +0100)]
Message:
timer: Added comparator modes for pins

Refactored the comparators code, Added the 3 common modes of pin
toggles.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 34ba1d0838b70899855b3eca896c7852edd010be
author: Michel Pollet [Sat, 10 Apr 2010 12:15:09 +0000 (13:15 +0100)]
Message:
ioport: Added a way to get to the IRQ via register addresses

Now can do a ioctl to get the port IRQs by oassing the address of
a PORT/PIN/DDR register and a pin number.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 6b94d793538d8511466cbc804e1193427f3b080c
author: Michel Pollet [Sat, 10 Apr 2010 12:14:12 +0000 (13:14 +0100)]
Message:
ioport: Aded a way to specify the output value via IRQ

Adding 0x100 to the IRQ value simulates a pin output change
and not just a pin input change.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 14d1c0ae13a659f049bf5907eaaeb6a6c40af27a
author: Michel Pollet [Sat, 10 Apr 2010 10:35:32 +0000 (11:35 +0100)]
Message:
ioport: No longer need pcint to change the value

IRQ callback changes the AVR memory even if the pcint is
not present.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit f1fb1de3fce7aab23e7e52bc8b93067dda2ee5dc
committer: Michel Pollet [Tue, 6 Apr 2010 11:34:43 +0000 (12:34 +0100)]
author: Michel [Sun, 4 Apr 2010 14:36:17 +0000 (15:36 +0100)]
Message:
TWI: Temp TWI changes with new IRQ system

Signed-off-by: <>
Commit 85b82a19d9cd53f7eea9b8b58852f550e53b16fb
author: Michel Pollet [Mon, 5 Apr 2010 12:39:06 +0000 (13:39 +0100)]
Message:
extint: Add more extints IRQs

... and use them on the Mega128 core

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit bb635750795bb0cd7038c4595ee4d4136d05f58c
author: Michel Pollet [Sun, 4 Apr 2010 12:43:32 +0000 (13:43 +0100)]
Message:
core: Added EIND support

Not used in any core, for now. It would still need 24 bits PC support
with return addresses to match.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 93ee08fed2cd1f6ea9aa904f569d516ba3e12c00
author: Michel Pollet [Sun, 4 Apr 2010 11:24:29 +0000 (12:24 +0100)]
Message:
cores: Added Mega128

Contributed by Tomi Leppikangas <tomi.leppikangas@gmail.com>

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit d8ba7b5ac558214e0baa3ea39ee79c4a1b9bc451
author: Michel Pollet [Sun, 4 Apr 2010 11:22:42 +0000 (12:22 +0100)]
Message:
watchdog/eeprom: Added declaration blocks for older cores

For the mega128 generation

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 6356c90c173e9d1672001048b15468cbbe2cfd08
author: Michel Pollet [Sun, 4 Apr 2010 11:21:45 +0000 (12:21 +0100)]
Message:
timer: Added (non functional) C interrupt block

Needs some code

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 1575146c480915b29d2a7c74d34689557135953c
author: Michel Pollet [Sun, 4 Apr 2010 11:20:59 +0000 (12:20 +0100)]
Message:
flash: Add support for RAMPZ

If declared...

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 1cbc06407c5d63714195e3e62a7de66b87e702b5
author: Michel Pollet [Sun, 4 Apr 2010 11:20:34 +0000 (12:20 +0100)]
Message:
core: Add support for RAMPZ and refactor instructions

Added RAMPZ as an optional IOREG for the core.
Factored the [E]I[JMP/CALL] into one blob.
Added the ELMP Instruction with RAMPZ support.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit a66d8340ffef8679d66c438f4e92a6a8b3de5404
author: Michel Pollet [Sun, 4 Apr 2010 11:18:31 +0000 (12:18 +0100)]
Message:
Fixed multiple warnings for -Wall

Twasn't that bad really.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 8476fda9ee4e5eb6f58b23af5b758b99a9549242 v1.0a1
author: Michel [Fri, 12 Mar 2010 08:06:13 +0000 (08:06 +0000)]
Message:
run_avr: Cosmetics

Comments, prints etc.

Signed-off-by: Michel Pollet <buserro@gmail.com>
Commit 6aca02e8e4ff9d146e865b79d99a5b32cee1e7aa
author: Michel [Wed, 10 Mar 2010 18:08:02 +0000 (18:08 +0000)]
Message:
Makefile: Include eeprom data in .hex files

Now that the loader can load them, include the eeprom
section in the .hex files generated for the examples

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 5d6254c8da54127276ecdd48069f00f19788693f
author: Michel [Wed, 10 Mar 2010 18:07:07 +0000 (18:07 +0000)]
Message:
run_avr: Supports loading new hex files

Can now load .hex files multiple sections, and also allow
specifying multiple .hex files to load in flash and/or
eeprom.
./run_avr ... -ff flash.hex -ee eeprom.hex ...

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 2fcc8cad6c1b9170df90e0e6463d9f77b263ecf5
author: Michel [Wed, 10 Mar 2010 18:05:42 +0000 (18:05 +0000)]
Message:
elf: Added constants for flash & eeprom start

Added some constants for the addresses used by gcc
to link the flash and eeprom data.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 8e4434caffc71abb2fd984e807c70bb211c99a68
author: Michel [Wed, 10 Mar 2010 18:04:53 +0000 (18:04 +0000)]
Message:
hex: Added a new reader for multiple chunks

.hex files can contain more than one section of data
this new loader handles that, allowing to have multiple
section of flash (app + bootloader) and/or eeprom.
Oh, a test unit too.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 28a1de8141b4483249fc4d39c5414d343037a7dd
author: Michel Pollet [Thu, 25 Feb 2010 22:13:11 +0000 (22:13 +0000)]
Message:
VCD: Fixed a buffer overflow

In case we're dumping 32 bits wide traces (!)

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit cf3a3b74da7cfe027bcaa5ef22302785da8a034e
author: Michel Pollet [Thu, 25 Feb 2010 22:12:36 +0000 (22:12 +0000)]
Message:
TWI: Work in progress

Changed to look more like qemu

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 2ad03ef173cc675dbd798aff01ffb97eabfe1d0e
author: Michel Pollet [Mon, 11 Jan 2010 08:06:59 +0000 (08:06 +0000)]
Message:
Readme fix

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 2f67001d8fab0cf3d51100b15e79f53caccc31b0
committer: Michel Pollet [Wed, 6 Jan 2010 22:47:36 +0000 (22:47 +0000)]
author: Michel Pollet [Wed, 6 Jan 2010 22:45:30 +0000 (22:45 +0000)]
Message:
core: Simplify changes to SREG

SREG is no longer re-synthetized at every instruction,
but only when the firmware reads the register.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 7e88785f549405846d957a8d74dc92d92bc57ba6
committer: Michel Pollet [Wed, 6 Jan 2010 22:47:18 +0000 (22:47 +0000)]
author: Michel Pollet [Wed, 6 Jan 2010 22:37:50 +0000 (22:37 +0000)]
Message:
misc: Small cleanup

Removed mutiple defined constants etc

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit d66e69e76555ea18c8bc8c1c8b72fb051061965d
committer: Michel Pollet [Wed, 6 Jan 2010 22:47:18 +0000 (22:47 +0000)]
author: Michel Pollet [Wed, 6 Jan 2010 22:44:15 +0000 (22:44 +0000)]
Message:
eeprom: fix a less-than bug

Prevented loading the eeprom entire size

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit eb090a5c1e8e418281c79081620896772f08e977
committer: Michel Pollet [Wed, 6 Jan 2010 22:47:18 +0000 (22:47 +0000)]
author: Michel Pollet [Wed, 6 Jan 2010 22:38:25 +0000 (22:38 +0000)]
Message:
watchdog: Added a test module

Small module that tests the watchdog timer

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit bd30ae8119d72bf624b771d4a99006c5581302b5
committer: Michel Pollet [Wed, 6 Jan 2010 22:43:10 +0000 (22:43 +0000)]
author: Michel Pollet [Wed, 6 Jan 2010 22:37:09 +0000 (22:37 +0000)]
Message:
cores: Add watchdog

Add watchdog block to the existing cores

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 163dd8199d1c63b6321ea54bb382339a3b35a5e3
committer: Michel Pollet [Wed, 6 Jan 2010 22:43:10 +0000 (22:43 +0000)]
author: Michel Pollet [Wed, 6 Jan 2010 22:35:51 +0000 (22:35 +0000)]
Message:
core: Add watchdog timer support

Working base support for the watchdog timer,
and the WDT instruction that resets it.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 4570a6e37e546fa40d59d6c7d2e9b8a2204b66e3
author: Michel [Sat, 26 Dec 2009 14:52:59 +0000 (14:52 +0000)]
Message:
examples: Ported to Snow Leopard

Uses OSX frameworks if applicable

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit a01329d1ee30a22840908d26087a72f22355f496
author: Michel Pollet [Sat, 26 Dec 2009 13:34:15 +0000 (13:34 +0000)]
Message:
core: Shuffled code around

Moved cycle timer code into it's own files

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 741c561aa23730f12c93e420f80be00072a732cd
author: Michel Pollet [Sat, 26 Dec 2009 13:33:15 +0000 (13:33 +0000)]
Message:
UART: Added documentation

On how to use the xon/xoff IRQs

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 8df158553ef7f2f9569dc307bc4dee6c66e860f4
author: Michel Pollet [Sat, 26 Dec 2009 13:32:41 +0000 (13:32 +0000)]
Message:
cores: Added selfprog bootloader support to x4 series

Untested, but behaves the same as x8 so it should work..

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 9ae2524d677910b10ef8c5740c7283a4f54189c6
author: Michel Pollet [Sat, 26 Dec 2009 13:31:06 +0000 (13:31 +0000)]
Message:
doc: Added a doc directory, and a callgraph generator

You need ctags, graphviz and ruby to re-generate it

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 0a764c4ef24512959bcbb47eb905470a113fa856
author: Michel Pollet [Thu, 24 Dec 2009 16:59:33 +0000 (16:59 +0000)]
Message:
simduino: Bootloader now works!

Can program simduino with avrdude!
See the readme for the howto

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 25384aea24b0679e539672b21d749a8720b5f6f5
author: Michel Pollet [Thu, 24 Dec 2009 16:58:08 +0000 (16:58 +0000)]
Message:
UART: Added a flag to disable stdio traces

Also fixed the UART when used in non-interupt mode.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit a69c6da93a2eb6f4c182789b64ee73f50b2577a0
author: Michel Pollet [Thu, 24 Dec 2009 16:56:27 +0000 (16:56 +0000)]
Message:
SPM: Added Self Programming Instruction & Support

Added the SPM support to the core, and to the x8 devices.
Tested with Arduino's bootloader.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit ebe62299d3a9c513ca5b28ad0af013d8b7743ea2
author: Michel Pollet [Thu, 24 Dec 2009 16:54:25 +0000 (16:54 +0000)]
Message:
timer: No longer craksh when reading TCNT with timer off

Thanks to Jon Escombe

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 06c9a359fc67f1cd5254c4bb6e36a496b8f65588
author: Michel Pollet [Wed, 23 Dec 2009 22:42:51 +0000 (22:42 +0000)]
Message:
Simduino: Teaser

Forget about it, it doesn't work yet. Loads the bootloader
and thats about it.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit c510e78a26f9fdccd19cfa3b5500de8cb63798fb
author: Michel Pollet [Wed, 23 Dec 2009 22:28:01 +0000 (22:28 +0000)]
Message:
Makefile: minor update

Added the optional trace define

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 90d3defe5aae8bbc85d9f71c4b788f98d6666f77
author: Michel Pollet [Wed, 23 Dec 2009 22:27:31 +0000 (22:27 +0000)]
Message:
UART: Implement a system of flow control

+ The uart now signals (using IRQs) when it's fifo is full and
empty. This allow controling code to send new bytes, or to pause.
+ The uart also now understand the Baud rate and prints it.
+ Added new IOCTL to get/set the UART emulation flags

A new mode of the UART was made specialy for code that spinloops
waiting to get/send a byte. Now if the uart detects that, it will
insert a usleep() when the uart is idle, this will prevent
code from eating 100% cpu doing nothing.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit f93ae3d0b1d2c92859ffb1838c4b6edbaaa1b828
author: Michel Pollet [Wed, 23 Dec 2009 22:23:21 +0000 (22:23 +0000)]
Message:
core: No longer crash if "codeline" is missing

Debug macros were crashing if the symbols had not been loaded,
and they are never loaded when usin a .hex file

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit a2c20ba4beff2186de521d35f137a0e2fef47779
author: Michel Pollet [Wed, 23 Dec 2009 22:22:23 +0000 (22:22 +0000)]
Message:
run_avr et al. New HEX format loader

simavr can now load .hex files directly, It is obviously a lot
more primitive than the ELF loader, but it works.
You have to specify the MCU and the AVR frequency on the command
line to run a .hex, otherwise simavr has no clue what it's suposed
to do.

Also reworked run_avr to get rid of getopt, moved the
read_hex_string function into the new sim_hex.[ch], and now
understand that the base addresd of code is not always zero.

This allows loading of a bootloader (tada!)

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit cb533ae28fd0e051e42bdeae43965ec6faf9ae1f
author: Michel Pollet [Wed, 23 Dec 2009 22:17:46 +0000 (22:17 +0000)]
Message:
core: Added a new ELF tag with AVR->simavr command path

This new mode allow the AVR firmware to specify an (unused)
AVR IO register as a "command path" to send commands back to
simavr.
It allows for example the firmware to start/stop the VCD trace
dump, exactly where it should from the ooint of view of the
firmware being ran.

See atmega88_uart_echo.c for an example.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 5b4715f65f3f199bdff178dce139912ed64addb8
author: Michel Pollet [Wed, 23 Dec 2009 00:52:41 +0000 (00:52 +0000)]
Message:
comments: What don't you typo the comments, too ?

Fixed a few!

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 358619f222d2a3610168eb34a0db2c4b09e4e618
author: Michel Pollet [Tue, 22 Dec 2009 16:24:35 +0000 (16:24 +0000)]
Message:
timer: Implemented some of the ICR based timers

Also made a PWM and a Fast PWM mode. Fast pwm doesm't use the
interrupts, as most of the time it's never used. Aldo it kills
performanves when calling a timer every 400 cycles.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 31d6eeca16f2cbdfae2043f73f4b27001ec4b254
author: Michel Pollet [Tue, 22 Dec 2009 16:22:24 +0000 (16:22 +0000)]
Message:
misc: Disabled debug traces

No functionsl changes

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 63b8526237faa8e32e6753ec02150df668bced16
author: Michel Pollet [Tue, 22 Dec 2009 16:21:45 +0000 (16:21 +0000)]
Message:
cores: Also disable fuse macros

For silly ubuntu

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit e3a37a324adcd5db12fe8ee11384f9bd0f9081bb
author: Michel Pollet [Mon, 21 Dec 2009 21:08:45 +0000 (21:08 +0000)]
Message:
timers: Added TCNT reading/writing support

TCNT read/write is now working. It is recalculated at read time.
You can also write to it to reset the timer to a fixed value, this resets
the simavr timer base accordingly.
Note that some timer modes should /not/ let the AVR write to TCNT, this
is not handled right now.

Also added an example of AVR code that uses timers, change TCNT1 and
generates a nice trace file with all the changes.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 22055328357d8b6490c1d648f7ea1b39f8831a6d
author: Michel Pollet [Mon, 21 Dec 2009 21:07:42 +0000 (21:07 +0000)]
Message:
IRQ: Made the hook structure private

No functional changes

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 32fc69660340c9251403ba07f7968265f3a0d20f
author: Michel Pollet [Mon, 21 Dec 2009 08:18:43 +0000 (08:18 +0000)]
Message:
cores: Disable signatures to help compile on ubuntu

Ubuntu and gento uses old avr toolchain, that lacks
the SIGNATURE defines.
So I disabled it in simavr, it was not used for
anything functional for now anyway

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 58396a3ec11232a967ba5aca3bf49ad8f859e091
author: Michel Pollet [Sun, 20 Dec 2009 23:08:31 +0000 (23:08 +0000)]
Message:
examples: Minor updates

New timers etc...

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit affaa58c85b0405ca77be949237dff1a105994a6
author: Michel Pollet [Sun, 20 Dec 2009 23:07:56 +0000 (23:07 +0000)]
Message:
cores: Added ATTiny2313

Another new core...

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit bf452d6df74162ae0621a1615b82f9ce4d0d39cc
author: Michel Pollet [Sun, 20 Dec 2009 23:07:29 +0000 (23:07 +0000)]
Message:
cores: Updated for 16 bits timers and ADCs

Also made a macro for EXTINT declarations.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit eee46acd8c68d2576d4851d3f24fa22ced608f1e
author: Michel Pollet [Sun, 20 Dec 2009 23:05:38 +0000 (23:05 +0000)]
Message:
ADC: Placeholder IO module

Not doing anything for now, but the IO blocks are filled
in the core definitiond already.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 501725d8c3dca6d908eb5c5c5e7d5831672fdb37
author: Michel Pollet [Sun, 20 Dec 2009 23:04:43 +0000 (23:04 +0000)]
Message:
timer: Masssive timer update. 8 & 16 bits

Re-massaged the timer code. It now works as 8 or 16 bits,
Also added a way to soecify the mode the timer run, and made
the TOV, COMPA and COMPB work as they should.
Now support the "Normal" timer mode too.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit f6ca3d424e173484953bb28b7c8f2911bf90ca3a
author: Michel Pollet [Sun, 20 Dec 2009 23:02:44 +0000 (23:02 +0000)]
Message:
README an Makefiles update

Makefiles for the examples should work in ubuntu

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 4854e70c0ebf7fccc35fe0fd4b25b7bd6ce727e3
author: Michel Pollet [Thu, 17 Dec 2009 20:31:23 +0000 (20:31 +0000)]
Message:
timer_64led: Brand new example board, opengl display too

This example is a real board firmware that was built and
works. The firmware was adapted lightly and now runs
perfectly in simavr. It's a "stopwatch" timer with a lot
of features.
The "board" generates a very complete waveform for a LOT
of interesting signals, like the 74HC595 latches, intetupts,
SPI activity and the lot.

This example is the crown jewel of simavr development so far,
because simavr was design with the goal of being able to simulate
one's own project, for real.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 2467b8b7d75cf7d2adde82dac31f8ad3cc1a7f10
author: Michel Pollet [Thu, 17 Dec 2009 20:27:10 +0000 (20:27 +0000)]
Message:
ledramp: Use a larger VCD update window

No longer needs a 5usec window, the timer does the job

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 30f8bc4c3d81fb442a71ec6ce207559f25c2e940
author: Michel Pollet [Thu, 17 Dec 2009 20:25:54 +0000 (20:25 +0000)]
Message:
Makefiles: Small updates

For consistency only...

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 306786ccd14dde0bcc2c6378bc54d03ef9ad6e3a
author: Michel Pollet [Thu, 17 Dec 2009 20:25:01 +0000 (20:25 +0000)]
Message:
ELF: Use a much larger VCD flush window

With the new log VCD handling, a much larger timeout is
perfectly fine.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 64f4695fc0818cf29a3b762ef276c606281f0204
author: Michel Pollet [Thu, 17 Dec 2009 20:24:11 +0000 (20:24 +0000)]
Message:
VCD: Reworked

More or less re-did the VCD handling, now ues a "log" of signal
changes instead of a timeslice. The log is flushed at regular
interval using a timer.
The log also handles signal changes that are smaller than one usec
(the minimum time slice in our VCD).

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 4db6cb7af34780c0028bd7b1228184ffe1ea831a
author: Michel Pollet [Thu, 17 Dec 2009 20:22:10 +0000 (20:22 +0000)]
Message:
interrupts: Added a "raised" IRQ

Added a "raise" IRQ that is set to 1 when the interrupt is
scheduled, and to 0 when the handler is called.
This allows the interrupts to be traced into a VCD file
waveform, amongst other things.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 9475768fbc5ceebb6b648909040e48c5de7efa03
author: Michel Pollet [Thu, 17 Dec 2009 19:56:01 +0000 (19:56 +0000)]
Message:
core: Reworked the cycle timers

Ensure that a timer when called does not continue to have a
"call next" that is smaller than the current cycle, bogging
down the rest of the core.
Also ensure the cycle is always incremented by at least one
when sleeping, even if a cycle callback is called.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 3cee361fbf6efd5b4fc76509efadc4a7aff977ce
author: Michel Pollet [Thu, 17 Dec 2009 19:53:42 +0000 (19:53 +0000)]
Message:
core: Added an avr_terminate() call

This allow the VCD file to be flushed and closed properly.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit ff9ccdb6a1ad827c6d8c719f40c783b8e225d34c
author: Michel Pollet [Thu, 17 Dec 2009 19:50:37 +0000 (19:50 +0000)]
Message:
uart: Register the interupt vectors

This has no functiinal change, apart to keep the table of
"handled" interupts in the avr_t structure complete.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 913f8d42d0a150f8696a51b675ff6db51997fc33
author: Michel Pollet [Thu, 17 Dec 2009 19:49:17 +0000 (19:49 +0000)]
Message:
timer8: Implements "fast PWM" mode

Added IRQs that outputs the PWM duty cycle when changed
by the AVR code.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 2826ca4e314fb3e4efcd0541099f377772bd3a1a
author: Michel Pollet [Thu, 17 Dec 2009 19:48:14 +0000 (19:48 +0000)]
Message:
spi: Use a timer to send the bytes out, when master

No longer output the bytes too fast, that could create collisions
with the SPI in IRQ.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 2b3fa0405f06adcf414e4014e0da9af5d280033e
author: Michel Pollet [Thu, 17 Dec 2009 19:46:25 +0000 (19:46 +0000)]
Message:
cores: Add a few more mega cores

Added mega164, mega324, mega328

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit ed76382b2f6abe7742c95825fb29b38167efcee9
author: Michel Pollet [Wed, 16 Dec 2009 00:16:55 +0000 (00:16 +0000)]
Message:
Fixed 'ledramp' example to reflect new loader

No functional changes

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 91732f87fc955cf93ab83f8fc955b97986e53ff2
author: Michel Pollet [Tue, 15 Dec 2009 21:42:25 +0000 (21:42 +0000)]
Message:
ELF: Updated example firmware to generate new traces

Example firmware declares two traces that will generate a
trace file automaticaly when run with run_avr. The file is
created at load time using the .mmcu declarations.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 51d5f4b07034798845f5d975c6d4df1cc3d0b79f
author: Michel Pollet [Tue, 15 Dec 2009 21:39:49 +0000 (21:39 +0000)]
Message:
ELF: Redone the .mmcu section

The section now uses :tags: that can be parsed regardless
of order, size, alignment and so on.
Also added tags to allow a firmware to register VCD traces
directly from macros placed in the firmware itself.

This allows very quick and painless trace generation of any IO
register/bit without having to know the real values for the
addresses.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 8d56964c56a3269be707316382dd36c11ed9ea2f
author: Michel Pollet [Tue, 15 Dec 2009 21:38:43 +0000 (21:38 +0000)]
Message:
VCD: Traces now have the correct timestamps

Traces in multiple of the "period" and use the
correct stamps for value changes.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 50176cc716e54b91ab9226c0f33b5234d2b58f40
author: Michel Pollet [Tue, 15 Dec 2009 21:37:53 +0000 (21:37 +0000)]
Message:
UART: Delay TX interupt a few cycles

Also clear the "buffer empty" flag when UDR is written

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit eab7a03e7ab811e50497f1316f6dac1b622d007f
author: Michel Pollet [Tue, 15 Dec 2009 21:35:02 +0000 (21:35 +0000)]
Message:
Added support for IRQ triggers on any IO register

Each IO address has it's own IRQ list now, dynamicaly
allocated when needed. It allows any code to register
an IRQ callback for any change made to any register.

Even registers that have no IO drivers (yet?) can be
monitored.

As a silver lining, this means any register or register bit
can be traced in a VCD file and displayed in gtkwave.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit f49e7379d136ee4d72d44ec1527deb1fbb5c7a69
author: Michel Pollet [Tue, 15 Dec 2009 21:32:03 +0000 (21:32 +0000)]
Message:
Added support for external interrupts (ie INT0 etc)

Small module to implement the INT0 .. INT3 interrupts.
These hook up in ioport pin IRQs to trigger the
vectors.
Added vectors for the existing cores.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 09a568486c9d386621e0fd6638abed590b74c3f2
author: Michel Pollet [Tue, 15 Dec 2009 00:06:16 +0000 (00:06 +0000)]
Message:
Missing bits from previous commit...

Key maps etc..

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 51db2fae30b0fa6b9d5f2f9760fd16edd64640e2
author: Michel Pollet [Mon, 14 Dec 2009 21:03:18 +0000 (21:03 +0000)]
Message:
Updated "ledramp" to demo the VCD gtkwave traces

This patch is all that is needed to allow the demo "board"
to dump a file that will display graphicaly in gtkwave.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit e198c93ab297f763a18a77c64dbdfc0adc7ee4bb
author: Michel Pollet [Mon, 14 Dec 2009 21:00:04 +0000 (21:00 +0000)]
Message:
Adds VCD (Value Change Dump) file output support (gtkwave)

This subsystem is not called by the core itself, it is
an utility available to other "boards".

Allows the simulator to dump graphical traces readable
in gtkwave.
The subsystem allows any number of trace files in parallel,
any sampling periods, and a maximum of 32 traces per file.

See updated "ledramp.c" example for a very simple way to use
the code.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 7d859a4b1eb18a3ef13636587ba051a54d7a69b3
author: Michel Pollet [Mon, 14 Dec 2009 20:57:55 +0000 (20:57 +0000)]
Message:
Streamlined avr_irq subsystem

Made the IRQ subsytem even more generic, allows
IRQs to be directly connected to other IRQ without
the glue callback.
Also added flags to allow changing IRQ polarity, and
to enable/disable a "filter" that won't trigger the
callbacks when the IRQ value is the same as before.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 1828d61a7a1b5751ddc70f93bd16bd9b0d4b2c6e
author: Michel Pollet [Mon, 14 Dec 2009 20:55:48 +0000 (20:55 +0000)]
Message:
Disable the debugging traces

Added a (Disabled by default) compile flag for the
heavy-duty debugger that helped debug the core. No
longer needed in full builds since 1) it works
2) gdb works for user code..

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 5f2fe2466b5a69ca24dee3a3ca99742f412bf8fc
author: Michel Pollet [Mon, 14 Dec 2009 20:54:27 +0000 (20:54 +0000)]
Message:
Cleanup of the Makefiles

General cleanup, updated comments

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 0bfce45007c162fa3f98f4369f7069f3da372502
author: Michel Pollet [Mon, 7 Dec 2009 19:45:17 +0000 (19:45 +0000)]
Message:
Added a real example on how to integrate simavr, etc

+ OpenGL app loads, runs a firmware and interacts with it.
  See the README in examples/ledramp
+ Updated Makefiles & Readme
  Streamlined the makefiles, so they use the Makefile.common
  rules and so on.  Also updated README to bring it up to date.
+ Adding TWI - work in progress
  Non working implementation skeleton. Defines a "slave" and a "bus"
  And the AVR twi interface that has one of each

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 024a09bbfa3065b99b2e7309dd157987b788c7fd
author: Michel Pollet [Sun, 6 Dec 2009 23:12:23 +0000 (23:12 +0000)]
Message:
Added a typedef for IO addresses

Used to be 8 bits only in the code, but bit megas use 9 bits,
so the new type is uint16_t.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 48920c7ff8859847e7befe65c4d663782f056bd5
author: Michel Pollet [Sun, 6 Dec 2009 10:41:23 +0000 (10:41 +0000)]
Message:
Added tiny13

And macros to declare eeprom with 8 bits address.

Signed-off-by: Jon Escombe <lists@dresco.co.uk>
Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 1898613e4ff3926250bc98e9917fc57b078f48f0
author: Michel Pollet [Fri, 4 Dec 2009 22:27:46 +0000 (22:27 +0000)]
Message:
Many more changes, timed callbacks etc

Now have functions to convert from/to cycles & usecs, use them for
implementing the new "one shot" timer callbacks.
IO modules now use "one shots" to implement "call later" subsystems,
like eeprom, uart, timers and so on.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 4acd890a940f5f0cc5a028017aa6b6d3136c33c8
author: Michel Pollet [Thu, 3 Dec 2009 23:56:57 +0000 (23:56 +0000)]
Message:
tiny25/45 cores added

Same method as the mega48/88/168...

Signed-off-by: Jon Escombe <lists@dresco.co.uk>
Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 4ebde35337d05315c5170390377ef3a0f9dde53c
author: Michel Pollet [Thu, 3 Dec 2009 23:31:42 +0000 (23:31 +0000)]
Message:
Polished gdb support, etc

GDB handler re-done, removed the thread, removed the pauses,
Now as fast as possible for stepping trhu code.
Note you /need/ the dwarf-2 debug symbols for gdb to work
properly, a simple '-g' will not work.

Also added a mode that starts the gdb server and waits if the
AVR core detects a "crash". Added a piece if test unit to
test just that.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 24c5c6069017010fd7d27eda7585e38b5fff7a4b
committer: Michel Pollet [Wed, 2 Dec 2009 21:52:53 +0000 (21:52 +0000)]
author: Michel Pollet [Wed, 2 Dec 2009 21:50:09 +0000 (21:50 +0000)]
Message:
GDB working, some more source massaging

Big news is gdb support, you can trace, breakpoint,
resume, inspect (including eeprom addresses!).
You can't modify variables on the fly yet.
It's not very fast rignt now, but some very obvious
changes will help that a lot.

Other changes are more moving, shuffling. "simavr"
is gone, replaced by a simple "run_avr" that does
the same, but no longer has any emulation specific
code.

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit b2cf6bdf2b6443199a36526915b4486efe3d7b0f
committer: Michel Pollet [Wed, 2 Dec 2009 00:16:45 +0000 (00:16 +0000)]
author: Michel [Wed, 2 Dec 2009 00:02:16 +0000 (00:02 +0000)]
Message:
Build works on Snow Leopard, using Arduino toolchain

Tried the make system on Snow Leopard with a change in the
Makefiles to go and get avr-gcc and such in the Arduino.app
bundle.
Also fixed the .mmcu ELF header to be compatible with x86_64

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 0b698ce0c4148375fba91ab0295e5624067f3cac
author: Michel Pollet [Tue, 1 Dec 2009 21:47:48 +0000 (21:47 +0000)]
Message:
uart, ioports, etc. Many more changes

+ Reorganized source, split simavr.c
+ IRQ support added to IO modules
+ timer8: fixed a bug related to disabling clock
+ uart:
  - Added support for txen/rxen flags
  - Added a receive fifo, and the rx interupt
  - added a "atmega88_uart_echo" test case
+ simavr: hook rx & tx irqs on first uart, for tests

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit 6dc37c42aa8c60ee6e41f20718c858e1374dd2c6
author: Michel Pollet [Mon, 30 Nov 2009 21:36:55 +0000 (21:36 +0000)]
Message:
Cores, decoder, uart, ioports - lots of changes

+ Cores now use eeprom declare macro
+ Cores now use the "TXCE" etc bits
+ Uart now raise TXC interupt/flag
+ ioports now use new internal IRQ system
+ New command line options for mcu, freq and trace
+ Decoder updates:
  - Fixed the last known "crash" bug.
  - Added cycles to most multi-cycle opcodes.
  - Added optional stack frame watcher
  - Skip instruction now handle 32 bits skips

Signed-off-by: Michel Pollet <buserror@gmail.com>
Commit d8e5774323d5408e119b5fa3cce1c73c7345e8f7
committer: Michel Pollet [Tue, 24 Nov 2009 13:14:03 +0000 (13:14 +0000)]
author: Michel Pollet [Tue, 24 Nov 2009 13:11:54 +0000 (13:11 +0000)]
Message:
Initial Commit

Signed-off-by: Michel Pollet <buserror@gmail.com>