Provide IRQs on PORT register when updated via PIN
Fixes issue #164
Merge pull request #128 from Zirias/threadsafe-console
make console output thread-safe (q&d)
make console output thread-safe
Merge pull request #154 from squell/master
added ELPM instruction with implied r0 register (opcode 1001 0101 110…
Merge pull request #158 from dougszumski/feature/ds1338_real_time_clock_part
Feature/ds1338 real time clock part
examples: TWI driver used by the DS1338 RTC demo
examples: take the DS1338 virtual real time clock for a test drive
This demo consists of a DS1338 RTC connected via the TWI bus of an
atmega32. The square wave output of the DS1338 is enabled, with the
tick-rate set to 1HZ. This is then fed to pin D3 on the atmega32
which is configured to generate an interrupt on a rising edge. When
the interrupt fires the time is read from the DS1338.
parts: DS1338 real time clock which runs on the TWI bus
Features:
> External oscillator synced to the AVR core
> Square wave output with scalable frequency
> Leap year correction until 2100 (just like the real thing!)
Should also work for the pin compatible DS1307 device, but that part
hasn't been tested against actual hardware.
added ELPM instruction with implied r0 register (opcode 1001 0101 1101 1000)
Merge pull request #148 from jedahan/install-instructions
Add install instructions
Merge pull request #149 from jedahan/homebrew-prefix
Allow for homebrew installed avr-gcc to any prefix
Merge pull request #152 from stevedrake/macports-support
Update support for building with MacPorts
Merge pull request #153 from stevedrake/fix-sleep-1s
Support sleep interval of 1s or greater in gdb
build: updated support for building with MacPorts
Updated Macports support based on Homebrew support. Set correct paths
for MacPorts-provided avr-gcc and libelf.
gdb: support sleep interval of 1s or greater
Split sleep interval into seconds and microseconds to create a valid
timeval to pass as the timeout to select().
Removed comment, which refers to old code that used a fixed interval.
Allow for homebrew installed avr-gcc to any prefix
Merge pull request #145 from xqms/interrupt_fifo_fix
sim_interrupts: fix FIFO move operation
sim_interrupts: fix FIFO move operation
The variable 'mini' is a FIFO index, not a direct index into the buffer!
Add the current read pointer to fix the operation.
Fixes a regression introduced in
599733f261f94317489c2cc8751fb84fd604e6fa.
Merge pull request #141 from bsekisser/bsekisser-master-core-access-r16-fixup
core: fixup missing dependancy from r16 commit
core: fixup missing dependancy from r16 commit
several commits were pushed to a branch which I later split...
one commit had a dependency I missed which this fixes.
modified: sim/sim_core.c
fix missing dependance in MOVW instruction.
Merge pull request #135 from bsekisser/bsekisser-master-timer-clear-cancel-changes
avr_timer: add avr_timer_clear_and_cancel_all_cycle_timers
Merge pull request #134 from bsekisser/bsekisser-master-core-access-r16
core: add pair of 16 bit set register functions
timer: rework timer clear commit.
reworked to use single function with const flag to clear.
set to inline, depends on dce.
modified: sim/avr_timer.c
Merge pull request #133 from bsekisser/bsekisser-master-core-access-flash16
core: change 16 bit flash access
avr_timer: add avr_timer_clear_and_cancel_all_cycle_timers
modified: sim/avr_timer.c
added: avr_timer_clear_and_cancel_all_cycle_timers
fixes a few oversights in original commit(s)
core: add pair of 16 bit set register functions
added: _avr_set_r16le and _avr_set_r16le_hl
_avr_set_r16le_hl preserves reverse register set order where used
two register set calls become a single call.
core: change 16 bit flash access
modified: sim/sim_core.c
added _avr_flash_read16le accessor function
changed "avr->flash[addr] | (avr->flash[addr + 1] << 8)"
to "_avr_flash_read16le(avr, addr)"
ioport: Don't crash if core defition is incomplete
This is not something that happends on existing cores, but can be
annoying when defining a new one.
Signed-off-by: Michel Pollet <buserror@gmail.com>
io: No functional changes
Just reformating
Signed-off-by: Michel Pollet <buserror@gmail.com>
timer: Added a selective trace option
Allows tracing one timer only
Signed-off-by: Michel Pollet <buserror@gmail.com>
arduidio: Simplified pin mapping
Again...
Signed-off-by: Michel Pollet <buserror@gmail.com>
timers: Gratuitous realignment
Go on with the new, improved narrow codestyle
Signed-off-by: Michel Pollet <buserror@gmail.com>
ADC: Skip SRB register if not present
the mega8/16/32 don't have ADCSRB, this lead to a crash when we tried to
register a callback on it.
Signed-off-by: Michel Pollet <buserror@gmail.com>
cores: Mega 8/16/32 and PORTA
Still register portA, regardless of PORTA constant initialisation
Signed-off-by: Michel Pollet <buserror@gmail.com>
cores: Gratuitous realignment
ODC got the better of me
Signed-off-by: Michel Pollet <buserror@gmail.com>
interrupts: Converted to use the standard fifo
There's already a standard way to make FIFO's, so converted the
interrupt code to use that.
Signed-off-by: Michel Pollet <buserror@gmail.com>
cores: Added support for mega324a / pa..
Support for the renamed SPI block, somehow my headers (debian) don't
have any definition of a second one, but, the macro /should/ support it
now.
Signed-off-by: Michel Pollet <buserror@gmail.com>
Merge pull request #130 from TheCrazyT/twi_i2c_write_fix
Twi i2cwrite fix
fix for wrong return value of i2c_write.
Merge pull request #1 from dougszumski/twi_delay_fix
twi: Remove start condition delay
Merge pull request #126 from ddaygold/typo
Fixed a typo in the manual
Fixed a typo in the manual
Merge pull request #124 from frej/enable-adc-for-atiny13
cores: Add ADC to the ATtiny13
cores: Add ADC to the ATtiny13
gdb: Cleanup
Also make sure we mask of only 24 bits of the address, newer gdb use one
somehow..
Signed-off-by: Michel Pollet <buserror@gmail.com>
cores: Added TIMER2_COMPB to m2560
This was commented out, dunno why..
Signed-off-by: Michel Pollet <buserror@gmail.com>
ihex: Streamlined implementation
Use ihex_read_chunk to implement ihex_read_file, and add a
ihex_free_chuncks for consistency sake
Signed-off-by: Michel Pollet <buserror@gmail.com>
avr: Add a 'reset pc' that can be nonzero
This allows the AVR to soft reset into the bootloader for example.
A watchdog reset will re-run the bootloader with the correct flag.
Signed-off-by: Michel Pollet <buserror@gmail.com>
watchdog: Some cleanup
No functional changes
Signed-off-by: Michel Pollet <buserror@gmail.com>
hex: Supports offsets larger then 64/128KB
New segemnt type for loading atmega2560 bootloaders
Signed-off-by: Michel Pollet <buserror@gmail.com>
simduino: Simplified, made compatible with m2560
Allow testing on atmega256 bootloader too.
Signed-off-by: Michel Pollet <buserror@gmail.com>
avr: Renamed special_* core fields
Added a 'custom' sub struct
Signed-off-by: Michel Pollet <buserror@gmail.com>
Whitespaces at end of line removed..
Dunno how these came to be..
Signed-off-by: Michel Pollet <buserror@gmail.com>
elf: Detect start address (for bootloaders)
Allows loading a bootloader ELF as well as .hex with the right starting
PC
Signed-off-by: Michel Pollet <buserror@gmail.com>
vcd: Prevent crash when close() is called twice
flahs() wasn't checking for a valid file pointer
Signed-off-by: Michel Pollet <buserror@gmail.com>
interrupts: Redone the logic of delivery
Simplified a few expressions
Signed-off-by: Michel Pollet <buserror@gmail.com>
interrupts: Now track pending and running states
Introduced two new IRQs per vector; one to track pending, and one to
track running state. So you can see any latency issues.
Also introduced a global pending/running IRQ, so you can track issues if
your interrupts overrun etc.
It is reasonably transparent, and seems to have had little impact on the
rest of the code... Hooray for nice clean APIs!
Signed-off-by: Michel Pollet <buserror@gmail.com>
vcd: Increased limits
Turns out it's easy to reach 32 if you try hard enough!
Signed-off-by: Michel Pollet <buserror@gmail.com>
twi: Revert to NO_STATE after a stop
Otherwise the interrupt might get re-triggered
Signed-off-by: Michel Pollet <buserror@gmail.com>
adc: Removed spurious trace
Accidentally commited this earlier
Signed-off-by: Michel Pollet <buserror@gmail.com>
arduidiot: Further pinout tweaks for 256's
Endless tweaks
Signed-off-by: Michel Pollet <buserror@gmail.com>
twi: Always release STOP bit
Seems some libraries assume this bit will autoclear, even if
the stop condition was not really called for.
Signed-off-by: Michel Pollet <buserror@gmail.com>
adc: bit of reformating
No functional changes
Signed-off-by: Michel Pollet <buserror@gmail.com>
shared: Some more tweaks to arduidiot_pins
Added remaining 2560 pins
Signed-off-by: Michel Pollet <buserror@gmail.com>
Small reformat of long lines
New screen format..
Signed-off-by: Michel Pollet <buserror@gmail.com>
simavr: Fixed mega250 pinouts for arduidiots
Referenced their headers
Signed-off-by: Michel Pollet <buserror@gmail.com>
uart_pty: Added a flush timer
Makes sure the FIFO gets a chance to be cleared after a XOFF
Signed-off-by: Michel Pollet <buserror@gmail.com>
arduidiot_pins: Added mega2560
And added a few utilitarian macros.
Signed-off-by: Michel Pollet <buserror@gmail.com>
Merge pull request #121 from guyzmo/improved_osx_support
added support for MacOSX homebrew
added support for MacOSX homebrew
Signed-off-by: Bernard `Guyzmo` Pratz <guyzmo+github@m0g.net>
Merge pull request #120 from frej/avoid-buffer-overrun
Avoid buffer overrun on smaller AVRs
Avoid buffer overrun on smaller AVRs
On smaller AVRs, such as the attiny13, MAX_IOs will be larger than the
size of SRAM which will lead to out of range writes to a malloc
allocated buffer. Therefore limit the number of bytes cleared to the
size of SRAM.
Merge pull request #119 from bsekisser/bsekisser-adc-initfix
adc: check r_adcsrb is valid before init
adc: check r_adcsrb is valid before init
fix issue #118
modified: simavr/sim/avr_adc.c
Merge pull request #117 from bsekisser/bsekisser-flash-writefix
flash: be sure to use current page for writing
flash: be sure to use current page for writing
bound z to ~(page size - 1), otherwise write may start at anywhere in page to write and fail.
also corrected log line to previous state as was missleading/inacurate.
modified: simavr/sim/avr_flash.c
lin: Don't reset regs at init time
the reset handler does it
Signed-off-by: Michel Pollet <buserror@gmail.com>
lin: Checked a divide by zero condition
As it turn out, static analizer doesn't know lbt is >= 8. Added a
comment there all same for anyon else reading this.
Signed-off-by: Michel Pollet <buserror@gmail.com>
ioport: Don't deref NULL on bad param
that ioctl requires a parameter, but doesn't check it. Static analyzer
doesn't like that at all.
Signed-off-by: Michel Pollet <buserror@gmail.com>
Merge pull request #96 from bsekisser/bsekisser-master-core-remove-bclr-bset
core: Removal of duplicate code...
Merge pull request #110 from cskarai/fix-optiboot-watchdog
Optiboot bootloader unintentionally enables watchdog
Merge pull request #114 from xqms/atmega2560_uart3
Support IO register addresses >= 256
sim_avr.h: increase MAX_IOs by one to 280
ATmega2560 has UDR0 at 0x136 = 310
sim_core + sim_regbit: use 16 bit integers for IO addresses
This is necessary on the larger ATmegas (e.g. ATmega2560).
sim_core: don't hardcode max io register address, use MAX_IOs
add unit test for UART3 echo on ATmega2560
This fails currently because IO addresses >= 256 are not handled correctly
in the core.
Merge pull request #112 from cskarai/fix-timer-ocra-top
Reconfigure fast pwm timer at OCRA write if OCRA is the top
Merge pull request #111 from cskarai/fix-adc-adate
Implemented: ADC free running mode
Reconfigure fast pwm timer at OCRA write if OCRA is the top
Fixed: issue with indentation
Added: free_running autotrigger mode
Added: ADC trigger sources
Fixed: optiboot issue, watchdog is unintentionally enabled
Merge pull request #101 from dougszumski/mx_core_add_extint
cores: Adds missing external interrupt for m16/m32
Merge pull request #103 from distributed/dispatch
sim_io: do not overwrite _avr_io_mux_write in avr_register_io_write
do not overwrite _avr_io_mux_write in avr_register_io_write
Merge pull request #98 from bsekisser/bsekisser-watchdog-software-reset
watchdog: reworked to add support for software reset.
watchdog: reworked to add support for software reset.
support for software reset due to watchdog timeout...
based on watchdog documentation.
modified: sim/sim_avr.c
modifications to avr_reset and avr_init to support software
reset.
modified: sim/sim_avr.h
added type avr_run_t...
avr_t.run updated accordingly.
modified: sim/avr_watchdog.c
largely rewritten to support software reset.
modified: sim/avr_watchdog.h
data record 'reset_context' added to support software reset
modified: sim/sim_regbit.h
added: avr_regbit_from_value
for checking flags before commiting register value.
added: avr_regbit_set_array_from_value
reverse operation of avr_regbit_get_array
Merge pull request #95 from bsekisser/master-core-run-many-limited-interrupt-state
interrupts: modify handling of interrupt state