Here is the code. Basically, I layered code from several JAL examples. In I started with the USB Serial Lib and two switches/leds, and it works. I can view messages and enter chracters into a RealTerm app. I then added the LCD routines to simultaneously view messages on it. Then I added the ADC lib and added a AN0 input when switch (sw1) is pressed.
Only the adc_hardware would compile. I then downloaded the 15-Jan JalPack, i switched to the ADC lib but I had to comment out many of the the pragma fuses. It did compile a hex file. However this hex would not work (probably I removed a needed fuse though). -- ----------------------------------------------------------------------------- -- Title: demo of usb_serial library -- Author: Albert Faber, Copyright (c) 2009, all rights reserved. -- Adapted-by: - -- Compiler: >=2.4j -- -- This file is part of jallib (http://jallib.googlecode.com) -- Released under the BSD license (http://www.opensource.org/licenses/ bsd-license.php) -- -- Description: This application demonstratesest USB Serial library, this application -- will emulate a RS-232 terminal device. Once the USB device has been detected by the -- host operating system, it will create a virtual COM port. When opening this COM -- on the host computer, using a standard terminal application, it should show a -- welcome message, after the welcome message all input characters are echoed back -- to the terminal application -- ------------------------------------------------------ -- This file has been generated from: -- * board: board_18f4550_af.jal -- * test : test_usb_serial.jal -- ;@jallib section chipdef -- chip setup include 18f4550 -- even though the external crystal is 20 MHz, the configuration is such that -- the CPU clock is derived from the 96 Mhz PLL clock (div2), therefore set -- target frequency to 48 MHz pragma target clock 48_000_000 -- fuses pragma target PLLDIV DIVIDE_BY_5__20MHZ_INPUT_ pragma target CPUDIV _OSC1_OSC2_SRC___1__96MHZ_PLL_SRC___2_ pragma target USBPLL CLOCK_SRC_FROM_96MHZ_PLL_2 pragma target OSC HS_PLL pragma target FCMEN DISABLED pragma target IESO DISABLED pragma target PWRTE DISABLED -- power up timer pragma target VREGEN ENABLED -- USB voltage regulator pragma target VOLTAGE V20 -- brown out voltage pragma target BROWNOUT DISABLED -- no brownout detection pragma target WDTPS P32768 -- watch dog saler setting pragma target WDT DISABLED -- no watchdog pragma target CCP2MUX RC1 -- CCP2 pin pragma target PBADEN DIGITAL -- digital input port<0..4> pragma target LPT1OSC DISABLED -- low power timer 1 pragma target MCLR EXTERNAL -- master reset on RE3 pragma target STVR DISABLED -- reset on stack over/under flow pragma target LVP DISABLED -- no low-voltage programming pragma target XINST ENABLED -- extended instruction set pragma target BACKBUG DISABLED -- background debugging pragma target CP_0 DISABLED -- code block 0 not protected pragma target CP_1 DISABLED -- code block 1 not protected pragma target CP_2 DISABLED -- code block 2 not protected pragma target CP_3 DISABLED -- code block 3 not protected pragma target CPB DISABLED -- bootblock code not write protected pragma target CPD DISABLED -- eeprom code not write protected pragma target WRT_0 DISABLED -- table writeblock 0 not protected pragma target WRT_1 DISABLED -- table write block 1 not protected pragma target WRT_2 DISABLED -- table write block 2 not protected pragma target WRT_3 DISABLED -- table write block 3 not protected pragma target WRTB DISABLED -- bootblock not write protected pragma target WRTD DISABLED -- eeprom not write protected pragma target WRTC DISABLED -- config not write protected pragma target EBTR_0 DISABLED -- table read block 0 not protected pragma target EBTR_1 DISABLED -- table read block 1 not protected pragma target EBTR_2 DISABLED -- table read block 2 not protected pragma target EBTR_3 DISABLED -- table read block 3 not protected pragma target EBTRB DISABLED -- boot block not protected ;@jallib section lcd_hd44780_4 procedure PORTLCD'put(byte in x) is var volatile bit x_0 at x:0 var volatile bit x_1 at x:1 var volatile bit x_2 at x:2 var volatile bit x_3 at x:3 pin_b1 = x_0 pin_b2 = x_1 pin_b3 = x_2 pin_b4 = x_3 end procedure function PORTLCD'get() return byte is var byte ret var volatile bit ret_0 at ret:0 = pin_b1 var volatile bit ret_1 at ret:1 = pin_b2 var volatile bit ret_2 at ret:2 = pin_b3 var volatile bit ret_3 at ret:3 = pin_b4 return ret end function procedure PORTLCD_direction'put(byte in x) is var volatile bit x_0 at x:0 var volatile bit x_1 at x:1 var volatile bit x_2 at x:2 var volatile bit x_3 at x:3 pin_b1_direction = x_0 pin_b2_direction = x_1 pin_b3_direction = x_2 pin_b4_direction = x_3 end procedure function PORTLCD_direction'get() return byte is var byte ret var volatile bit ret_0 at ret:0 = pin_b1_direction var volatile bit ret_1 at ret:1 = pin_b2_direction var volatile bit ret_2 at ret:2 = pin_b3_direction var volatile bit ret_3 at ret:3 = pin_b4_direction return ret end function -- LCD IO definition var bit lcd_rs is pin_d2 -- LCD command/data select. var bit lcd_rs_direction is pin_d2_direction var bit lcd_en is pin_b0 -- LCD data trigger var bit lcd_en_direction is pin_b0_direction var byte lcd_dataport is portlcd -- LCD data port var byte lcd_dataport_direction is portlcd_direction const byte LCD_ROWS = 2 -- 2 lines const byte LCD_CHARS = 16 -- 16 chars per line ;@jallib section led -- enable_digital_io() -- disable analog I/O (if any) -- -- You may want to change the selected pin: var bit led1 is pin_c0 -- alias pin_c0_direction = output var bit led2 is pin_c2 -- alias pin_c2_direction = output -- var bit sw1 is pin_d7 pin_d7_direction = input var bit sw2 is pin_d6 pin_d6_direction = input lcd_rs_direction = output lcd_en_direction = output lcd_dataport_direction = output include lcd_hd44780_4 include delay include usb_serial include print include format -- ok, now let's configure ADC -- we want to measure using high resolution -- (that's our choice, we could use low resolution as well) const bit ADC_HIGH_RESOLUTION = high --const bit ADC_HIGH_RESOLUTION = false const bit adc_hardware_high_resolution = false -- we said we want 1 analog channel... const byte ADC_NCHANNEL = 1 const byte adc_hardware_nchan = 1 -- and no voltage reference ADC_NO_EXT_VREF or ADC_VREF_POS const byte ADC_NVREF = 0 const byte adc_hardware_nvref = 0 const ADC_hardware_Rsource = 10_000 ;maximum source resistance const bit PCFG3 = 1 const bit PCFG2 = 1 const bit PCFG1 = 1 const bit PCFG0 = 0 -- now we can include the library include adc_hardware -- constants const byte str_welcome[] = "Using JALLIB USB Serial Demo app. Modified by kw 28 jan 2012.\n" const byte sw1_pressed[] = "Pressed sw1\r\n" const byte sw2_pressed[] = "Pressed sw2\r\n" const byte mydot[] = "." -- variables -- interrupts? No thanks INTCON_GIE = false for 4 loop -- blink LED 4 times to indicate startup led1 = on delay_100ms(2) led1 = off delay_100ms(2) end loop const byte str1[] = "Hello world!" -- define strings const byte str2[] = "third line" const byte str3[] = "Pressed switch" const byte str4[] = " " lcd_init() -- initialize LCD print_string(lcd, str1) -- show hello world! lcd_cursor_position(2,0) -- to 3rd line print_string(lcd, str2) lcd_cursor_position(3,0) -- to 4th line print_string(lcd, str3) var byte counter1 = 0 var byte counter2 = 0 -- setup the USB serial library usb_serial_init() var bit has_shown_welcome_msg = true var byte ch --include adc -- and run the initialization step adc_init() -- will periodically send those chars var word wmeasure var byte bmeasure -- main loop forever loop -- poll the usb ISR function on a regular base, in order to -- serve the USB requests usb_serial_flush() -- check if USB device has been configured by the HOST if ( usb_cdc_line_status() != 0x00 ) then if !has_shown_welcome_msg then has_shown_welcome_msg = true print_string( usb_serial_data, str_welcome ) end if else has_shown_welcome_msg = false end if -- check for input character if usb_serial_read( ch ) then -- echo input character usb_serial_data = ch if ch == "0" then led1 = off led2 = off end if if ch == "1" then led1 = on end if if ch == "2" then led2 = on end if end if if sw1 == low then _usec_delay(250000) led1 = off print_string( usb_serial_data, sw1_pressed ) -- get ADC result, on channel 0 -- this means we're currently reading on pin AN0 ! -- access results in high resolution --wmeasure = adc_read(0) wmeasure = adc_read(0) -- wmeasure contains the result, as a word (byte*2) counter1 = counter1 + 1 -- update counter lcd_cursor_position(1,0) -- second line print_string( lcd, str4 ); delay_100ms(3) -- wait a little lcd_cursor_position(1,0) -- second line print_word_dec(lcd, wmeasure) -- output in dec format format_word_dec( usb_serial_data, wmeasure, 10, 0 ) delay_100ms(3) -- wait a little end if if sw2 == low then _usec_delay(250000) led2 = off print_string( usb_serial_data, sw2_pressed ) counter2 = counter2 + 1 -- update counter lcd_cursor_position(1,10) -- second line print_byte_hex(lcd, counter2) -- output in hex format delay_100ms(3) -- wait a little end if --counter = counter + 1 -- update counter --lcd_cursor_position(1,0) -- second line --print_byte_hex(lcd, counter) -- output in hex format --delay_100ms(3) -- wait a little end loop On Jan 30, 1:25 am, [email protected] wrote: > Updates: > Owner: [email protected] > > Comment #1 on issue 174 by [email protected]: JAL 2.4.1 compile > not like (include adc) for > pic18f4550http://code.google.com/p/jallib/issues/detail?id=174 > > Hi, please attach your code (18f4550_usb_serial_work_led2swlcd_adc.jal) and > also try with a more recent jallib version > (http://code.google.com/p/jallib/downloads/detail?name=jallib-pack-2.4...). > I can't see any error (nor results). -- You received this message because you are subscribed to the Google Groups "jallib" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/jallib?hl=en.
