Basic I/O works.
ADC works 8bit, legacy 10bit and 12bit - we support ADC in terms of legacy ADC operations.
CCP/PWM works - the 12 bit CCP/PWM works across timers 2-4-6.
Hardware Serial works.
Interrupts.
Hardware PWM. The 16bit PWM is set via registers.
I2C & SPI - both tested ok.
EEPROM - tested. This required major update to the library.
SAF - tested.
Mills() - tested when integrated into a SPI GLCD.
Programming the Q43 chip
A challenge is programming the Q43. Now I have got the Great Cow BASIC working then I will add the Q43 to PICKitPlus. I have added the Q43 parts to the PICKitPlus database but only the basic read and erase works. I am focusing on Great Cow BASIC.
So, to program you need to use a PICKit4 or Northern Software Programmer (noting the issue with the NS is the need to power cycle the chip!... failure to do this will lead to total user confusion. I did confuse me for a day or so!!)
I am not sure about a Q43 XPress board but this has to the way to go to make it easy.
Enjoy,
Evan
Last edit: Anobium 2020-07-14
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The 18FxxQ43 was released byMicrochip in early 2020.
UART with support for Asynchronous, DMX, DALI and LIN protocols, SPI, I2C, memory features like Memory Access Partition (MAP) to support users in data protection and bootloader applications, and Device Information Area (DIA), which stores factory calibration values to help improve temperature sensor accuracy.
In microcontroller based system design, software is often the bottleneck for both time to market and system performance. By offloading many software tasks to hardware, Microchip Technology Inc.’s next generation PIC18-Q43 family helps developers bring higher performing solutions to market faster.
These chips operate at 1.8 to 5 volts all up to 64 MHz max including use of internal OSC. The packages include 28 pin to 40 pin.
The 12-bit ADC has Computation (ADC2 ) automating Capacitive Voltage Divider (CVD) techniques for advanced capacitive touch sensing, averaging, filtering, oversampling and threshold comparison.
16-bit PWM is extremly clever. And, Great Cow BASIC supports CCP/PWM and the 16-bit PWM. To use the new 16-bit PWM module to provides dual independent outputs on the same timebase you will have to use the datasheet, but, I have include a 16-bit PWM demo.
Demos showcase these capabilities:
010_hello_world.gcb - basic IO test
020_blink.gcb - basic logic test
030_blink_another_way.gcb - basic timer test
040_rotate_the_leds.gcb - basic variable and rotate test
050_show_a2d_value_on_leds.gcb - basic ADC test
060_variable_rotate_the_leds.gcb - ADC, variable and rotate test
070_debounce_the_switch.gcb - basic input test
080_using_the_reset_switch_as_an_input.gcb - config test
090_reversible_leds_with_variable_delay.gcb - timing test
100_reversible_leds_with_variable_delay_to_serial_terminal.gcb - serial test
110_rotate_the_leds_using_16bit_timer0_.gcb - timer 16bit config test
120_use_pwm_via_ccp_and_adc_to_control_led_brightness.gcb -
130_rotate_the_leds_using_8bit_timer0.gcb - timer 8bit test
140_rotate_the_leds_using_the_timer_overflow_event.gcb - interrupt test
150_show_i2c_devices_to_serial_terminal.gcb - i2c module test
160_showing_eeprom_data_to_serial_terminal.gcb - eeprom test - major upadate to eeprom library
170_using_external_interrupt_to_raise_an_event.gcb - interrupt test
180_ensuring_program_matches_chip_specfiied_to_serial_terminal.gcb - GCB constant test
190_using_an_interrupt_to_manage_the_pwm_signal_to_control_an_leds_brightness.gcb - PWM test
200_i2c_glcd_using_ssd1306_128_32.gcb - i2c and glcd test#1
210_i2c_glcd_using_ssd1306_128_64.gcb - i2c and glcd test#2
220_i2c_glcd_sprites_using_ssd1306.gcb - i2c and speed test
230_i2c_glcd_voltmeter_using_ssd1306.gcb - graphics test
240_pwm_fixed_modes.gcb - CCP/PWM test
250_pwm_variable_modes.gcb - PWM test
260_spi_glcd_using_ili9341.gcb - SPI test
270_millis_glcd_integrated_using_ili9341.gcb - millis test
280_showing_SAF_data_to_serial_terminal - major upadate to SAF library
All tests passed with v0.98.07 of Great Cow BASIC.
Edited. Added SAF and SAF comment.
Last edit: Anobium 2020-07-14
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I posted a new demonstration, #290, to show how to use ProgramWrite and ProgramWrite.
The demo shows how to write and read direct to PROGMEM. The core library for this capability has been updates to support the Q43 family.
ProgramErase does not work as this would require a larger change and it may not be justified. The constraint is that this family only supports Block PROGMEM page erase not specific word erase.
If someone needs ProgramErase then they can use the SAF library as basis to make the task much easier.
Anobium
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Just added the Q43 series. This is ONLY supported in v0.98.07 or greater.
Demonstrations are here: https://github.com/Anobium/Great-Cow-BASIC-Demonstration-Sources/tree/master/Vendor_Boards/Great_Cow_Basic_Demo_Board/18f26q43_chiprange_demonstrations
Basic I/O works.
ADC works 8bit, legacy 10bit and 12bit - we support ADC in terms of legacy ADC operations.
CCP/PWM works - the 12 bit CCP/PWM works across timers 2-4-6.
Hardware Serial works.
Interrupts.
Hardware PWM. The 16bit PWM is set via registers.
I2C & SPI - both tested ok.
EEPROM - tested. This required major update to the library.
SAF - tested.
Mills() - tested when integrated into a SPI GLCD.
Programming the Q43 chip
A challenge is programming the Q43. Now I have got the Great Cow BASIC working then I will add the Q43 to PICKitPlus. I have added the Q43 parts to the PICKitPlus database but only the basic read and erase works. I am focusing on Great Cow BASIC.
So, to program you need to use a PICKit4 or Northern Software Programmer (noting the issue with the NS is the need to power cycle the chip!... failure to do this will lead to total user confusion. I did confuse me for a day or so!!)
I am not sure about a Q43 XPress board but this has to the way to go to make it easy.
Enjoy,
Evan
Last edit: Anobium 2020-07-14
The 18FxxQ43 was released byMicrochip in early 2020.
UART with support for Asynchronous, DMX, DALI and LIN protocols, SPI, I2C, memory features like Memory Access Partition (MAP) to support users in data protection and bootloader applications, and Device Information Area (DIA), which stores factory calibration values to help improve temperature sensor accuracy.
In microcontroller based system design, software is often the bottleneck for both time to market and system performance. By offloading many software tasks to hardware, Microchip Technology Inc.’s next generation PIC18-Q43 family helps developers bring higher performing solutions to market faster.
These chips operate at 1.8 to 5 volts all up to 64 MHz max including use of internal OSC. The packages include 28 pin to 40 pin.
The 12-bit ADC has Computation (ADC2 ) automating Capacitive Voltage Divider (CVD) techniques for advanced capacitive touch sensing, averaging, filtering, oversampling and threshold comparison.
16-bit PWM is extremly clever. And, Great Cow BASIC supports CCP/PWM and the 16-bit PWM. To use the new 16-bit PWM module to provides dual independent outputs on the same timebase you will have to use the datasheet, but, I have include a 16-bit PWM demo.
Demos showcase these capabilities:
010_hello_world.gcb - basic IO test
020_blink.gcb - basic logic test
030_blink_another_way.gcb - basic timer test
040_rotate_the_leds.gcb - basic variable and rotate test
050_show_a2d_value_on_leds.gcb - basic ADC test
060_variable_rotate_the_leds.gcb - ADC, variable and rotate test
070_debounce_the_switch.gcb - basic input test
080_using_the_reset_switch_as_an_input.gcb - config test
090_reversible_leds_with_variable_delay.gcb - timing test
100_reversible_leds_with_variable_delay_to_serial_terminal.gcb - serial test
110_rotate_the_leds_using_16bit_timer0_.gcb - timer 16bit config test
120_use_pwm_via_ccp_and_adc_to_control_led_brightness.gcb -
130_rotate_the_leds_using_8bit_timer0.gcb - timer 8bit test
140_rotate_the_leds_using_the_timer_overflow_event.gcb - interrupt test
150_show_i2c_devices_to_serial_terminal.gcb - i2c module test
160_showing_eeprom_data_to_serial_terminal.gcb - eeprom test - major upadate to eeprom library
170_using_external_interrupt_to_raise_an_event.gcb - interrupt test
180_ensuring_program_matches_chip_specfiied_to_serial_terminal.gcb - GCB constant test
190_using_an_interrupt_to_manage_the_pwm_signal_to_control_an_leds_brightness.gcb - PWM test
200_i2c_glcd_using_ssd1306_128_32.gcb - i2c and glcd test#1
210_i2c_glcd_using_ssd1306_128_64.gcb - i2c and glcd test#2
220_i2c_glcd_sprites_using_ssd1306.gcb - i2c and speed test
230_i2c_glcd_voltmeter_using_ssd1306.gcb - graphics test
240_pwm_fixed_modes.gcb - CCP/PWM test
250_pwm_variable_modes.gcb - PWM test
260_spi_glcd_using_ili9341.gcb - SPI test
270_millis_glcd_integrated_using_ili9341.gcb - millis test
280_showing_SAF_data_to_serial_terminal - major upadate to SAF library
All tests passed with v0.98.07 of Great Cow BASIC.
Edited. Added SAF and SAF comment.
Last edit: Anobium 2020-07-14
The testing continues.
I posted a new demonstration, #290, to show how to use ProgramWrite and ProgramWrite.
The demo shows how to write and read direct to PROGMEM. The core library for this capability has been updates to support the Q43 family.
ProgramErase does not work as this would require a larger change and it may not be justified. The constraint is that this family only supports Block PROGMEM page erase not specific word erase.
If someone needs ProgramErase then they can use the SAF library as basis to make the task much easier.
Anobium