Giter Site home page Giter Site logo

Comments (5)

RobSmithDev avatar RobSmithDev commented on May 13, 2024

from arduinofloppydiskreader.

ewenmcneill avatar ewenmcneill commented on May 13, 2024

Hi Rob,

Per #4, I'm looking at IBM PC-like 5.25" floppies. Although in my case most of them were actually written on an Amstrad CPC6128 with a 5.25" drive attached. The Amstrad CPC had its own disk formats, but due to the use of the NEC 765 disk controller (identical chip to the early IBM PCs) in practice the only real difference to read them back is the sector numbers being offset by some amount (different for each format, it was how it detected the format). Most of my floppies are actually in a "NigDos" (Amstrad extension ROM) double sided format -- 42 tracks, 10 sectors/track, 2 sides (out side A, then out side B), 512 byte sectors -- with yet more different sector numbers.

I read a bunch of them years ago (14+ years ago) under Linux by using the raw interface to the floppy controller via Linux, so I know the format is "fairly standard" (by "modern" floppy disc standards). But it's been at least half a dozen years since I've had a PC with a floppy drive attached.... so I've been looking around at other options other than trying to get a bunch of old PC parts to work again!

From what you've said it sounds like the more recent Arduino Duemilanove boards (like mine), with the AT Mega 328P should work as is, which encourages me to give it a try since it seems like I already have the parts I need on hand (other than spare time :-) )

I'll close this issue now as I have the answer I need. But when/if I try it and get it working I'll try to remember to add a "for the record" comment for later reader's benefit.

Ewen

from arduinofloppydiskreader.

ewenmcneill avatar ewenmcneill commented on May 13, 2024

FTR, I've started trying to make this work today. At least from Linux there are a few challenges in trying to make the Arduino Duemilanove on-board FT232RL work as the serial port of the floppy tools:

  • The RTS/CTS flow control lines of the FT232RL are not connected up at all AFAICT. So any attempt to use hardware flow control will cause no data to be transmitted/received, which means everything will be very quiet. At least the Linux tool I started with (usbamigafloppy explicitly tries to use RTS/CTS), so I had to work around that. (I think the Arduino firmware only tries to use RTS/CTS around write / write tests, so that side is probably mostly okay.)

  • On the default Arduino, the USB UART is shared between the BootLoader and the loaded application. When DTR is pulsed low, the Arduino will be reset and go into the bootloader. By default Linux will set DTR high/low around open()/close() of the serial port, which I think means immediately after starting a program to talk to the Arduino over the serial port, it will be in the boot loader, rather than the application. I suspect the only real work around here is to out-wait the bootloader. (I'm trying to use a modified version of the Linux tool in the usbamigafloppy version, as a place to start, but I believe that's written assuming there will be no Arduino bootloader, as they're using the AVR processor directly.)

  • Modem Manager wants to talk to all new USB serial ports, and send them AT commands, which I suspect will cause confusion at the Arduino end. I've worked around this with the usual approach of disabling Modem Manager.

  • For interactive testing (eg, kermit), it is tricky to select a bps rate over 115200 as the rest were not possible with traditional hard wired UARTs. Sometimes multiples of 115200 are possible to select (eg, 230400), but those are difficult to program accurately on the ATMega328P side due to the clock divider's accuracy (eg, see ATMega328P DataSheet page 190 for the 16MHz rates/errors); and the 250k/500k/1M/2M rates supported on the ATMega328P are often not available in traditional serial tools :-(

So I've been able to confirm I can talk to the Arduino at 115200bps from kermit, and send "?" to get the firmware version back, but I have not been able to confirm any higher transmission rates. I have a feeling if I could wait out the boot loader before sending commands, I could make the Linux tool work, and that might allow confirming higher transfer speeds also work.

In kermit I need to do:

set line /dev/ttyUSB0
set speed 115200
set flow-control none
set carrier-watch off
c

to connect to the Arduino. Then sending "?" should return a string with the version number in it.

Ewen

from arduinofloppydiskreader.

ewenmcneill avatar ewenmcneill commented on May 13, 2024

Based on some quick experimentation it does seem to work with a 2 second sleep() between opening the serial port and trying to send the "?" firmware enquiry. And it does seem to work at 2Mbps, with that 2 second delay and RTS/CTS disabled. (1 second seems to be almost but not quite long enough; the bootloader source shows the delay is a loop count, and for the Arduino Duemilanove ATMega328 -- "atmega328" -- the loop count is set in the Makefile with MAX_TIME_COUNT=F_CPU>>4, which seems to work out to 1M loops, and presumably takes "about" 1-2 seconds. But I have been unable to find an actual "wait this long" time documented anywhere useful.)

Ewen

from arduinofloppydiskreader.

RobSmithDev avatar RobSmithDev commented on May 13, 2024

from arduinofloppydiskreader.

Related Issues (19)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.