Add "clear interrupt on write 1 to flag" function to avr_ioport.c
and some code to test it in atmega168_ioport.c and friend.
Make the 2560 PORTE/0 pin change interrupt visible as it mostly works.
Add the missing pin change interrupts for 1280 and 1281.
In avr_ioport.[ch], fix multiple causes (but not all) of
mis-triggering of pin change interrupts including upstream issue #343:
Pin change interrupts incorrectly fire when a timer compare event occurs.
Other causes are initial setting of DDR and the AVR_IOPORT_OUTPUT bit.
Move the mask and shift data for ATmega2560 into the ioport structure.
Add a test for pin change interrupts.
Fixes for ATmega2560 and friend:
enable pin change interrupts on PORTK;
conditionally enable pin change interrupts on PORTE/0 - shared with PORTJ;
run the ACOMP initialisation function;
add close relative ATmega2561.
Do not set filter flag as handlers for IOPORT_IRQ_REG_PIN should be
called on every read of the port pins, so they can set new values.
Add a test for basic port functions and fix problems found.
avr_extint.c: prevent spurious interrupts.
avr_ioport.c: allow calling program to control value read from PIN.
Merge pull request #401 from vintagepc/Fix-TWI-status-delay
Fix high speed TWI delay calcs and ACK bug (#137)
Merge pull request #413 from bsekisser/sim_regbit_clear_check_valid_reg
Remove kludge "avr_uart_regbit_clear" from uart
Merge pull request #410 from akosthekiss/make-tests
Test-related maintenance
Merge pull request #412 from bsekisser/avr_regbit_h_file_format_corrections
Formatting and style corrections to avr_regbit.h
Merge pull request #411 from bsekisser/uart_raise_udr_raised_with_tx_enable
Set udre flag when (re)enabling uart transmitter.
Merge pull request #407 from akosthekiss/gitignore-maintenance
List git-ignored executables in one place
Merge pull request #405 from akosthekiss/update-fix-manual
Update/fix manual
Merge pull request #396 from akosthekiss/makecommon-avrgcc-verbose
Ensure that verbosity is applied in avr-gcc recipes
Merge pull request #397 from akosthekiss/remove-exec
Remove execute permission from source and header files
Merge pull request #409 from akosthekiss/button-release
Add support for non-auto release to button
Remove kludge "avr_uart_regbit_clear" from uart
modified: sim/avr_uart.c
Change use of kludge function avr_uart_regbit_clear to avr_regbit_clear.
modified: sim/sim_regbit.h
Add check that avr_regbit_clear was passed a valid existing register.
Formatting and style corrections to avr_regbit.h
Set udre flag when (re)enabling uart transmitter.
modified: sim/avr_uart.c
Previously, disabling the uart transmitter cleared the udrc
interrupt and cleared the udre (udrc.raised) flag. Upon
reenabling the transmitter, the udre flag is still clear
signifying the buffer is full, thus waiting for the udr to
clear via udre flag hangs.
Test-related maintenance
- Ensure that make reports an error if any of the tests fail
- Don't duplicate compilation commands only for the sake of
verbosity control
- Simplify recipe for .tst files
- Drop outdated and unnecessary .gitignore from tests directory
- Add the execution of tests to Travis CI
Add support for non-auto release to button
This allows better control of key press length, if needed.
To minimize negative effect on existng code, if the duration
argument of button_press is non-zero, functionality is kept as is
(i.e., using auto-release). If duration is set to zero, then button
will have to be explicitly released using a new API function,
button_release.
If simulation uses GLUT, it may make use of glutKeyboardUpFunc and
glutIgnoreKeyRepeat (in addition to glutKeyboardFunc found in
existing examples) to have more exact control over button presses
and releases.
List git-ignored executables in one place
Update/fix manual
- Updated GitHub repository links.
- Removed the requirement for a German babel language definition
file.
- Commented out missing references (citations of external manual
and references to non-existing sections).
- Added a .gitignore file to the directory of the manual to help
git disregard temporary latex files.
Partial for TWI fixes (#137)
Remove execute permission from source and header files
Ensure that verbosity is applied in avr-gcc recipes
Merge pull request #393 from vintagepc/Timer_PWM2
Support 3rd PWM pin on timers with OCRxC
Merge pull request #392 from vintagepc/SPI-clock-rates
Clock out SPI data according to SPCR/SPSR
Support 3rd PWM pin on timers with OCRxC
Clock out SPI data according to SPCR/SPSR
Merge pull request #390 from vintagepc/unaligned-PCINTs
Support for non-aligned PCINTs
Merge pull request #389 from vintagepc/fix-adcs-over-7
Fix ADCs>7
Fix PCINT on PORTJ for 2560
Merge pull request #384 from msquirogac/fix-370
Support for GDB monitor commands
gdb monitor command clean-up
new gdb commands kill, detach and monitor
monitor parser engine supports reset and halt
Merge pull request #319 from uffejakobsen/uart_tap_symlink
Symlink for UART tap was never created during uart_pty_connect()
Merge pull request #377 from msquirogac/fix-375
Update of the display_usage function.
Merge pull request #379 from msquirogac/fix-378
used attribute for _MMCU_ , should avoid dropping the .mmcu section
used attribute for _MMCU_ , should avoid dropping the .mmcu section
Fix for issue #285
Update of the display_usage function.
Some arguments changed name to make them more like the already existent ones.
Some arguments were merged to one to reduce redundant code.
Fix issue #375
Merge pull request #373 from simark/sram
Compare address with I/O end address in _avr_set_ram
Compare address with I/O end address in _avr_set_ram
In _avr_set_ram, we check if the address is smaller than `MAX_IOs + 31`
to know if it is a register or SRAM location. In reality, many devices
have less I/Os than that, so the SRAM begins before this address.
As shown in issue #372, this causes watchpoints to not be triggered when
writing to an SRAM location that is smaller than `MAX_IOs + 31`. For
example, a global variable on an atmega328 gets placed at address 0x100,
which is less than `MAX_IOs + 31`.
Fix this by comparing the address to the `ioend` property of `avr`.
Fixes #372
Merge pull request #361 from aldobrrrr/is-instruction-32-bits-mask-fix
Fix a bug in the bitmask inside _avr_is_instruction_32_bits() function in sim_core.c file.
Merge pull request #366 from becmer/musl-tests
Don't assign stderr on non-glibc
Don't assign stderr on non-glibc
Signed-off-by: Kamil Becmer <kamil.becmer@gmail.com>
Merge pull request #364 from aykevl/lldb
Add support for debugging with LLDB
Add support for debugging with LLDB
LLDB requires the qRegisterInfo packet to work correctly. While it is
possible to specify the registers manually using a Python script, having
them directly in the emulator simplifies things a lot.
Fix a bug in the bitmask inside _avr_is_instruction_32_bits() function in sim_core.c file.
Merge pull request #358 from jcvdev/gdb-tcp-port
Optionally specify TCP listening port for -g,--gdb option (default 1234)
Allow to optionally specify gdb listening port
Merge pull request #333 from edgargrimberg/edgar_Add_ATMega64M1
Add ATMega64M1
Merge pull request #352 from ZsoltSaskovy/to_be_merged_back
Minor fix to make code compile on Windows, and separated code and mcu_t structure for Mega2560
Moved mcu_t structure declaration into separate header file
Changed the order of winsock2 and windows includes. Wrong onder caused compilation errors under Windows
Merge pull request #346 from TomasHubelbauer/patch-1
Note that it is possible to install through Aptitude
Merge pull request #321 from endofexclusive/pr/do-not-mix-tab-and-space
Do not mix tab and space in --help output
Merge pull request #349 from helargus/vcd-325
#325 Converts timescale from vcd input to internal us.
Merge pull request #348 from thecky/master
added OC0A/OC0B support for attiny13
Converts timescale from vcd input to internal us.
added OC0A/OC0B support for attiny13
.com and .com_pin settings for timer0 in section .comp were missed
Note that it is possible to install through Aptitude
I've found that there is a maintainer who publishes SimAVR for Ubuntu here:
https://packages.ubuntu.com/bionic/simavr
Seems to be kept reasonably up-to-date (the latest there is 1.15 whereasy here on GitHub it is 1.16).
I know that maintainers do not always keep in contact with the software vendor so I would not be surprised to learn you were not aware of this. If you are okay with it though and consider it to be a legit enough source, I figure it's good to call that out in the README.
Add ATMega64M1
Signed-off-by: Edgar Grimberg <edgar.grimberg@visuray.com>
Merge pull request #311 from glitchub/master
Also search for /usr/lib64/librt.so
Merge pull request #320 from endofexclusive/pr/freebsd-misc
Make simavr build on Freebsd
Merge pull request #324 from hsoft/tiny-timer1
Fix timer1 on tinyx5
Fix timer1 on tinyx5
The prescaler list for timer1 on the tinyx5 was incomplete. Moreover,
having no WGM data made the timer run in `avr_timer_wgm_none`, with a
zero size (it would overflow all the time).
Setting a default wgm_op makes time timer run in normal mode witha size
of 8 bits.
Do not mix tab and space in help output
gettimeofday() prototype is in sys/time.h
Symlink for UART tap was never created during uart_pty_connect()
Also search for /usr/lib64/librt.so
Merge pull request #301 from aznoohwee/bugfix/polling-flag-within-isr
allow polling interrupt flag within ISR
reorder check to ensure that flag is allowed to be raised within ISR, but no nested IRQs occur
allow polling interrupt flag within ISR
Merge pull request #295 from myokaski/fix-uart-pty
Fix receiving after fifo overrun
Merge pull request #299 from aznoohwee/bugfix/atmega32U4-ramend
Fix atmega32u4 RAMEND
For #276 fix atmega32u4 RAMEND
Fix receiving after fifo overrun
After fifo overrun buffer_done remains less than buffer_len and
FD_SET(p->port[ti].s, &read_set) is not called. If firmware has nothing
to send, select always returns 0 and new data is never read even if
fifo buffer gets flushed.
This patch removes check for select timeout, so the remaining data in
buffer may go to fifo.
Merge pull request #294 from dougszumski/bugfix/gcc8_warnings
Forcibly null terminate input strings
Fix GCC 8 warning for input strings
As described in issue #293 GCC 8 fails the build in the current
configuration on warnings like:
sim/run_avr.c:193:4: error: ‘strncpy’ specified bound 128
equals destination size [-Werror=stringop-truncation]
strncpy(f.tracename, argv[++pi], sizeof(f.tracename));
This isn't the only solution, but it get's the build working.
misc: Fix static analyzer warnings
Mostly intenting.
Signed-off-by: Michel Pollet <buserror@gmail.com>
Merge pull request #291 from nspring/parts-install-separately
For RHEL 6.9 without glut: Parts install separately ; add rpath to rpath-link using RELEASE=1 ; appease gcc 4.6.1, use librt
Fix installation of examples/parts to occur within the
examplesbparts makefile rather than use the simavr
makefile, allowing installation of simavr (alone) on
machines without a working glut.
Fix RELEASE=1 option to additionally specify rpath (not
just rpath-link) if simavr will be installed in a special
directory.
Add detection and use of librt when available (e.g.,
RHEL 6.9).
Merge pull request #287 from dougszumski/feature/rotary_encoder_rebase_04_2018
Rotary encoder and demo board
Merge pull request #280 from dgeelen/dgeelen/wrap_memory_accesses
On actual hardware, memory accesses seem to wrap.
Merge pull request #282 from dgeelen/dgeelen/cmdline_vcd
Add support for configuring VCD traces from the commandline.
Add more white space around expressions.
Add more white space around expressions.
If() statements should be followed by a space.
parts: add rotary encoder demo board
This connects an LED bar up to an ATMega, and uses the
rotary encoder to scroll an LED up and down the bar.
parts: add rotary encoder part
Add a rotary encoder virtual part, based on the Panasonic
EVEP rotary encoder. This could easily be extended to virtualise
other rotary encoders.
Merge pull request #275 from k3a/patch-1
Update Makefile