The problem with the print_string function is somehow due to the 
bootloader, because if I upload the program using a PICKit2 the 
print_string function works as expected (although I still can't reconnect 
after disconnecting).

On Monday, July 28, 2014 6:24:43 AM UTC-5, Jim Gregory wrote:
>
> -- chip setup
> include 18f14k50
>
> -- target frequency to 48 MHz
> I am experiencing strange behavior with the print_string() function using 
> usb_serial and an 18f14k50 and jalv2.4q and jallib version 1.0.0.  With the 
> following code:
>
> pragma target clock       48_000_000
>
> -- no fuses (use bootloader)
> pragma BOOTLOADER loader18  2048
> pragma fuses no
>
> const byte str_welcome[] = "Hi there"
> var byte i           -- temporary variable
>
> 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 )
>          print_crlf( usb_serial_data )
>       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 = ">"
>       usb_serial_data = ch
>       print_crlf( usb_serial_data )
>    i  print_string( usb_serial_data, str_welcome )
>       print_crlf( usb_serial_data )
>       blink_led(green)
>    end if
> end if
>
> Under Linux, it prints 3 unprintable characters when a serial connection 
> is established and each time a key is pressed.  Under Windows 8, it prints 
> the correct string.
>
> If I replace the print_string() function calls by explicitly looping 
> through the array, i.e.:
>
>       ;print_string( usb_serial_data, str_welcome )
>       for 8 using i loop
>          usb_serial_data = str_welcome[i]
>       end loop
>
> The string prints normally on both Linux and Windows 8.
>
> Furthermore, if I close the serial terminal and try to re-establish a 
> connection under either Linux or Windows, I can't reconnect regardless of 
> which code I use.  Under Linux, I receive the error message:
>
> tty_port_close_start: tty->count = 1 port count = 0.
>
> It won't reconnect without manually resetting the 18f14k50.
>
> I suspect the two problems are related, but am not sure....:(
>

-- 
You received this message because you are subscribed to the Google Groups 
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/jallib.
For more options, visit https://groups.google.com/d/optout.

Reply via email to