Fix error in PR #482 that breaks build when tracing is enabled.
Merge pull request #406 from akosthekiss/fix-hd44780-memory
Fixes to HD44780
Merge pull request #440 from gatk555/firmware
Fix run-avr's --output and --add-trace options.
Merge pull request #479 from gatk555/vcd
Fix #478 and improve VCD input.
Merge pull request #475 from adbancroft/vscode
Ignore Visual Studio Code folder
Merge pull request #472 from gatk555/run_avr_help
Show whether instruction tracing is enabled in the usage message.
Merge pull request #471 from gatk555/attinyx5_adc
Fix attinyx5 ADC multiplexer values.
Merge pull request #470 from WGH-/fix-wdie-autoclearing
Fix WDIE being wrongly cleared in Interrupt Mode
Merge pull request #469 from couchand/2021-12/example-bug
simduino: wait to init avr until we pick a core
Merge pull request #468 from taylorconor/intr_fifo_swap
Fix interrupt servicing with multiple pending interrupts
Merge pull request #482 from gatk555/gdb
Gdb: add support for "load" and "info_registers" and fix bugs.
Really fix handling of 'break' (testing blunder) and include
a helpful message when it is executed. Also add help message
response for gdb's "monitor" command.
Fix bugs in handling vFlashWrite in sim_gdb.c and reset the
cycle counter on reset so that there is no crash on restart.
Make the break instruction useful. The previous implementation
could never move past it, as gdb knows it is in ROM and will
not replace it. Distinguish hard and soft breaks.
Fix access (read/write) watchpoints and incorrect reporting of watchpoint
stops (always reported as "awatch"). Fix the kill command and allow
the simulator to continue running on detach.
Add "monitor say" for debugging.
Fix three problems with gdb support:
1. Do not report a TRAP signal on every stop, as it confuses gdb.
Initial symptom was failure to step into an ISR.
2. AVR was running after reset command.
3. Excessive processor activity (buzzing) while AVR stopped.
Support for gdb's "load" command, based on
https://github.com/msquirogac/simavr/tree/fix-371
This implements the vFlashxxxx remote protocol commands and should fix
issue #371 - "GDB Error on OS X: Remote target does not support flash erase".
Fix issue #478 - input changes not reflected in VCD output file.
Change the way I/O register IRQs are called so that they report
changes made by peripheral code as well as the core.
Also, do not call them for reads. Add some test code.
Minor improvements to VCD file input.
avr_adc.h: Remove space from ioctl name as it would break VCD parsing.
sim_vcd_file.*: Allow nano-second input timing, compatible with output.
Extend VCD parsing.
Fix bug in short-form parsing where variable alias is a digit.
Fix input bug with slow clock.
Ignore Visual Studio Code files.
Fix WDIE being wrongly cleared in Interrupt Mode
WDIE must be automatically cleared only in "Interrupt and System
Reset Mode" (where it's used to transition to "System Reset Mode").
In other modes, watchdog interrupt must not clear WDIE.
Strictly speaking, the modified condition also clears it in
"System Reset Mode" as well, but the system is reset on
interrupt anyway, so it doesn't matter.
See #456
simduino: wat to init avr until we pick a core
Show whether instruction tracing is enabled in the usage message.
Fix attinyx5 ADC multiplexor values.
Fix interrupt servicing with multiple pending interrupts
Merge pull request #441 from gatk555/timer
Fix TOV/ICR handling, SEI delay - updated version
Merge pull request #427 from gatk555/ioport
Ioport
Merge branch 'upstream' into timer
Merge branch 'upstream' into firmware
Merge branch 'upstream' into ioport
Accept review comments on PR #427 - data type and tabs/spaces.
Merge pull request #454 from dxxb/arduboy
ssd1306: fully implement horizontal and vertical addressing modes
ssd1306: fully implement horizontal and vertical addressing modes
Merge pull request #430 from gin66/master
fix timer foc behavior
fix identation error while space to tab conversion
Merge pull request #387 from purdeaandrei/patch-1
Fix error message
Merge pull request #450 from taylorconor/macos_build
Fix macos build with versioned avr-gcc
Merge pull request #447 from vintagepc/446-fix-multipart-ihex
Fix #446 - bug in multipart ihex
Merge pull request #449 from taylorconor/sym_size
Add size property to avr_symbol_t
Fix macos build with versioned avr-gcc
Add size property to avr_symbol_t
Fix #446 - bug in multipart ihex
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.
Merge branch 'fix-irq-handling' of https://github.com/vintagepc/simavr
Upstream pull request #415: Fix TOV/ICR handling, SEI delay
with corrections to timer code and addition of minimal test code.
One file missed from previous change.
Fix run-avr's --output and --add-trace options (upstream issue #400).
Remove call to memset() in sim_elf.c that destroyed initialisations
and initialise the firmware structure everywhere.
Add comments to say initialisation is required.
ds1338L: Fix a logic bug
Used a boolean not instead of a binary one.
Signed-off-by: Michel Pollet <buserror@gmail.com>
Merge pull request #439 from gatk555/hardware
Two "hardware" changes
Merge pull request #431 from kittennbfive/patch-1
megax4: fix INT2 pin
Merge pull request #428 from gatk555/build
Link libsimavr.so with needed libraries.
Merge pull request #425 from gatk555/warnings
Add casts to suppress warnings from gcc 8.3.0.
Merge pull request #424 from gatk555/adc
Implement the BIN and IPR bits for attinyX5 and change the ADC sample timing …
Merge pull request #418 from sanjaymsh/ppc64le
Travis-ci:added support for ppc64le
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.
Merge branch 'master' of https://github.com/thelazt/simavr
Upstream pull request #353: Add support for ATmega328PB.
Patch offered in upstream issue #339 (from djfd):
Wrong ADC definition at-tiny-24
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.
test to fix foc causing erroneous interrupt
also adjust needed alias / define
fix INT2 pin
according to datasheet, tested with some code that works on real device (1284P)
Handle writing a one bit to the interrupt flag, ADIF.
Link libsimavr.so with needed libraries. That is the usual way and allows
it to be easily loaded by dlopen().
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.
Add casts to suppress warnings from gcc 8.3.0.
Implement the BIN and IPR bits for attinyX5 and change the ADC sample timing
to roughly match the datasheet. Add a test. Those MCUs have no UART, so
test.c and test.h have changes to use an alternative method.
fix foc and interrupt clear for timer
Merge branch 'master' of github.com:MikePlayle/simavr
Travis-ci:added support for ppc64le
Fix typos in comments in HD44780
Handle the difference between 1 and 2-line displays in HD44780
If HD44780 is configured to have a single line of display, AC can
be in the range of 0x00..0x00+79, while with two lines, it can be
in the ranges 0x00..0x00+39 and 0x40..0x40+39.
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.
Fix Clear Screen implementation of HD44780
Datasheet mandates filling DDRAM with spaces, setting address
counter to DDRAM address 0, and setting entry mode I/D to 1
(increment mode).
The "filling with spaces" was implemented but the rest was missing.
Now added.
Fix cursor handling in segmented DDRAM of HD44780
HD44780 has only 80 bytes of DDRAM, which consists of two 40 bytes
long segments. The segment starting at address 0x00 contains the
data for the first line of the display, while the segment starting
at address 0x40 contains the data for the second line of the
display. This means that there are invalid ranges in the 7-bit
address space of the DDRAM (0x00+40 .. 0x3f and 0x40+40 .. 0x7f).
The cursor (address counter) of the HD44780 automatically "jumps
over" these regions whenever auto-incremented/decremented. This
commit implements this behaviour.
Moreover, this commit also fixes the 4-lines mode. When in a
4-lines setup, the first 20 bytes of the first and the second
memory segments control what is displayed in the first two lines,
as usual. However, the second 20 bytes of the memory segments
contain the data for the third and fourth lines of the display.
This means that the starting addresses of lines 3 & 4 are 0x00+20
and 0x40+20.
Fix the virtual memory of the HD44780 part
In HD44780, the DDRAM has an address space of 0x80 bytes, while
CGRAM has 0x40 bytes. To ensure their proper separation, the vram
should have 0x80+0x40 bytes with the CGRAM starting at 0x80.
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