| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | feat(usart): add configuration change event | Uri Shaked | 2021-07-15 | 2 | -3/+95 |
| | | | | | also add `txEnable` and `rxEnable` properties | ||||
| * | fix(timer): only set ICR hook for 16-bit timers | Uri Shaked | 2021-07-07 | 1 | -3/+3 |
| | | | | | The ICR (Input Capture Register) only exists for 16-bit timers. | ||||
| * | feat(gpio): external interrupt/PCINT support (#82) | Uri Shaked | 2021-07-07 | 4 | -18/+459 |
| | | | | close #70, #84 | ||||
| * | perf(cpu): speed up event system | Uri Shaked | 2021-06-20 | 1 | -25/+47 |
| | | | | | | | Use a linked list instead of array. This makes the simulator runs almost twice as fast in case of timers with prescaler of 1, e.g. when using the TVout library. In addition, we use a pool of clock event objects to avoid expensive GCs. | ||||
| * | fix(timer): Timer1 PWM issues #94 | Uri Shaked | 2021-06-19 | 2 | -2/+24 |
| | | | | | close #94 | ||||
| * | fix(twi): broken repeated start #91 | Uri Shaked | 2021-04-15 | 2 | -1/+26 |
| | | | | | fix #91 | ||||
| * | feat(usart): implement RX #11 | Uri Shaked | 2021-02-19 | 4 | -7/+99 |
| | | | | | close #11 | ||||
| * | fix: typo in parameter name | Uri Shaked | 2021-01-02 | 3 | -6/+6 |
| | | | | | | freqMHz → freqHz in SPI, TWI, and USART: they all expect the frequency in hertz, not mega-hertz. | ||||
| * | fix(timer): delay() is inaccurate #81 | Uri Shaked | 2020-12-29 | 2 | -21/+26 |
| | | | | | fix #81 | ||||
| * | fix(timer): Output Compare in PWM modes #78 | Uri Shaked | 2020-12-27 | 6 | -67/+353 |
| | | | | | close #78 | ||||
| * | fix(timer): Overflow interrupt fires twice #80 | Uri Shaked | 2020-12-26 | 2 | -7/+45 |
| | | | | | fix #80 | ||||
| * | fix(timer): Output Compare sometimes misses Compare Match #79 | Uri Shaked | 2020-12-25 | 2 | -6/+45 |
| | | | | | fix #79 | ||||
| * | fix(timer): Output Compare issue #74 | Uri Shaked | 2020-12-21 | 2 | -10/+28 |
| | | | | | | | output compare doesn't work when the OCR register (OCRnA/OCRnB) equals to 0 fix #74 | ||||
| * | fix(timer): TOV flag does not update correctly #75 | Uri Shaked | 2020-12-20 | 2 | -20/+56 |
| | | | | | fix #75 | ||||
| * | fix(timer): OCR values should be buffered #76 | Uri Shaked | 2020-12-20 | 2 | -11/+125 |
| | | | | | fix #76 | ||||
| * | perf(cpu): speed up event system | Uri Shaked | 2020-12-12 | 2 | -18/+59 |
| | | | | | ditch `array.sort()` and instead manually keep the array sorted when we insert a new item. | ||||
| * | test(cpu): fix implicit any error | Uri Shaked | 2020-12-12 | 1 | -3/+5 |
| | | |||||
| * | fix(cpu): event system issue | Uri Shaked | 2020-12-12 | 2 | -2/+63 |
| | | | | | | | | `updateClockEvent()` and `clearClockEvent()` would sometimes mess up the list of events. This could cause unexpected behavior when you have multiple timers running. Also added regression tests for these methods. | ||||
| * | fix(timer): Incorrect count when stopping a timer | Uri Shaked | 2020-12-12 | 2 | -18/+41 |
| | | | | | fix #72 | ||||
| * | perf!: centeral timekeeping | Uri Shaked | 2020-12-09 | 12 | -221/+222 |
| | | | | | | | | | | This should improve performance, especially when running simulations with multiple peripherals. For instance, the demo project now runs at ~322%, up from ~185% in AVR8js 0.13.1. BREAKING CHANGE: `tick()` methods were removed from individual peripherals. You now need to call `cpu.tick()` instead. | ||||
| * | refactor: central interrupt handling #38 | Uri Shaked | 2020-12-09 | 12 | -92/+285 |
| | | |||||
| * | test(cpu): improve test name | Uri Shaked | 2020-12-09 | 1 | -1/+1 |
| | | |||||
| * | fix(usart): respect the given baud rate #16 | Uri Shaked | 2020-11-27 | 2 | -54/+150 |
| | | | | | close #16 | ||||
| * | feat(clock): Clock Prescale (CLKPR) support #68 | Uri Shaked | 2020-11-25 | 3 | -0/+185 |
| | | | | | close #68 | ||||
| * | feat: Support for simulating ATtinyx5 (e.g. ATtiny85) timers #64 | Uri Shaked | 2020-11-14 | 2 | -12/+60 |
| | | | | | close #64 | ||||
| * | fix: AVRTimerConfig interface not exported #65 | Uri Shaked | 2020-11-14 | 2 | -2/+8 |
| | | | | | close #65 | ||||
| * | test(gpio): extract constants | Uri Shaked | 2020-10-07 | 1 | -26/+30 |
| | | |||||
| * | fix(gpio): Changing pinMode from `INPUT` to `INPUT_PULLUP` doesn't trigger ↵ | Uri Shaked | 2020-10-07 | 2 | -4/+13 |
| | | | | | | | listeners close #62 | ||||
| * | fix(cpu): incorrect address for RAMPZ / EIND | Uri Shaked | 2020-09-30 | 2 | -8/+8 |
| | | | | | | | We used their I/O space address intead of their data space address. close #61 | ||||
| * | perf(timer): speed up interrupt handling | Uri Shaked | 2020-09-02 | 1 | -1/+4 |
| | | |||||
| * | perf(timer): improve timer speed | Uri Shaked | 2020-09-02 | 2 | -11/+17 |
| | | | | | cache the value of the clock divider | ||||
| * | fix(interrupt): broken on ATmega2560 | Uri Shaked | 2020-09-02 | 2 | -1/+23 |
| | | | | | close #58 | ||||
| * | fix(instruction): EICALL is broken | Uri Shaked | 2020-09-02 | 2 | -1/+3 |
| | | | | | close #59 | ||||
| * | style(spi): remove redundant eslint comments | Uri Shaked | 2020-08-22 | 1 | -2/+0 |
| | | |||||
| * | feat(spi): implement SPI master #33 | Uri Shaked | 2020-08-22 | 4 | -1/+368 |
| | | | | | close #33 | ||||
| * | test(eeprom): remove useless line | Uri Shaked | 2020-08-22 | 1 | -1/+0 |
| | | |||||
| * | fix(timer): keeps counting even when stopped #41 | Uri Shaked | 2020-08-01 | 2 | -36/+51 |
| | | |||||
| * | test(timer): use TestProgramRunner | Uri Shaked | 2020-08-01 | 3 | -135/+128 |
| | | |||||
| * | fix(eeprom): EEPROM write fails after first attempt | Uri Shaked | 2020-07-16 | 2 | -1/+33 |
| | | | | | close #54 | ||||
| * | feat(eeprom): implement EEPROM peripheral | Uri Shaked | 2020-07-16 | 6 | -42/+408 |
| | | | | | close #15 | ||||
| * | test(timer): remove stray console.log | Uri Shaked | 2020-07-16 | 1 | -1/+0 |
| | | |||||
| * | test(twi): extract constants | Uri Shaked | 2020-07-16 | 1 | -31/+46 |
| | | | | | This makes the test code more readable | ||||
| * | fix(usart): bitsPerChar looking at the wrong register | Uri Shaked | 2020-07-09 | 2 | -7/+10 |
| | | | | | close #52 | ||||
| * | fix(usart): TXC interrupt triggered incorrectly | Uri Shaked | 2020-07-09 | 2 | -4/+18 |
| | | | | | close #51 | ||||
| * | test(usart): extract constants | Uri Shaked | 2020-07-09 | 1 | -49/+68 |
| | | | | | This makes the test code easier to read | ||||
| * | test(instruction): extract constants | Uri Shaked | 2020-06-04 | 1 | -238/+274 |
| | | | | | This makes the test code easier to follow | ||||
| * | test(timer): extract constants | Uri Shaked | 2020-05-30 | 1 | -133/+185 |
| | | | | | This makes the test code easier to follow | ||||
| * | fix(gpio): port state not updated on DDR write | Uri Shaked | 2020-05-29 | 2 | -0/+15 |
| | | | | | | | Calling `pinState()` inside a GPIO port listener returns incorrect values after changing DDR close #47 | ||||
| * | perf(timer): improve tick() performance | Uri Shaked | 2020-05-25 | 1 | -3/+4 |
| | | | | | reduce the number of calls to TIFR/TIMSK getters | ||||
| * | feat(timer): Compare Match Output (#45) | Uri Shaked | 2020-05-25 | 4 | -57/+342 |
| | | | | | | The Compare Match Output bits are used to generate hardware PWM signals on selected MCU pins. This is also the mechanism used by Arduino's analogWrite() method. See #32 for more details | ||||
