system
August 16, 2012, 2:13pm
1
Salve a tutti, sono un nuovo iscritto e mi sono poco fa presentato nei nuovi.
a casa mi ritrovo molti HD usati smontati da vecchi PC ma ancora funzionanti con l'interfaccia IDE, quella parallela, e avevo intenzione di usarli per sperimentarci qualcosa.
leggendo in giro in forum sugli atmel ho visto che qualcuno afferma di poter interfacciare e gestire questi HD con l'arduino....
secondo voi è una cosa fattibile? o i micro avr non hanno tale capacità di interfacciamento.
grazie
system
August 16, 2012, 4:05pm
2
un membro del forum, magari lo nomino dopo,
mi ha segnalato questo link Google Code Archive - Long-term storage for Google Code Project Hosting.
dopo aver unzippato il file in una directory ho provato a compilare uno degli esempi per arduino mega2560
il file IDEFatInfo.pde
/*
* This sketch attempts to initialize a IDE drive and analyze its structure.
*/
#include <IDEFat.h>
#include <IDEFatUtil.h>
// offset to partition table
#define PART_OFFSET (512-64-2)
IDE ide;
IDEVolume vol;
//global for ide erase sector size
uint32_t sectorSize;
void IDEError(void) {
PgmPrintln("IDE error");
PgmPrint("errorCode: ");
Serial.println(ide.errorCode(), HEX);
PgmPrint("errorData: ");
Serial.println(ide.errorData(), HEX);
return;
}
// print partition table
uint8_t partDmp(void) {
part_t pt;
PgmPrintln("\npart,boot,type,start,length");
for (uint8_t ip = 1; ip < 5; ip++) {
if (!ide.readData(0, PART_OFFSET + 16*(ip-1), 16, (uint8_t *)&pt)) {
PgmPrint("read partition table failed");
IDEError();
return false;
}
Serial.print(ip, DEC);
Serial.print(',');
Serial.print(pt.boot,HEX);
Serial.print(',');
Serial.print(pt.type, HEX);
Serial.print(',');
Serial.print(pt.firstSector);
Serial.print(',');
Serial.println(pt.totalSectors);
}
return true;
}
void volDmp(void) {
PgmPrint("\nVolume is FAT");
Serial.println(vol.fatType(), DEC);
PgmPrint("blocksPerCluster: ");
Serial.println(vol.blocksPerCluster(), DEC);
PgmPrint("clusterCount: ");
Serial.println(vol.clusterCount());
PgmPrint("fatStartBlock: ");
Serial.println(vol.fatStartBlock());
PgmPrint("fatCount: ");
Serial.println(vol.fatCount(), DEC);
PgmPrint("blocksPerFat: ");
Serial.println(vol.blocksPerFat());
PgmPrint("rootDirStart: ");
Serial.println(vol.rootDirStart());
PgmPrint("dataStartBlock: ");
Serial.println(vol.dataStartBlock());
if (vol.dataStartBlock()%sectorSize) {
PgmPrintln("Data area is not aligned on flash erase boundaries!");
}
}
void setup() {
Serial.begin(9600);
}
void loop() {
PgmPrintln("\ntype any character to start");
while (!Serial.available());
Serial.flush();
uint32_t t = millis();
uint8_t r = ide.init();
t = millis() - t;
if (!r) {
PgmPrintln("\nide.init failed");
IDEError();
return;
}
PgmPrint("\ninit time: ");
Serial.println(t);
PgmPrint("\nide type: ");
if(!partDmp()) return;
if (!vol.init(&ide, 2)) {
PgmPrintln("\nvol.init failed");
IDEError();
return;
}
volDmp();
}
mi genera un pò di errori con la versione IDE 1.0.1
purtroppo non ho molta dimestichezza con l'ide e non so se mancano librerie etc.
c'è qualcuno che può aiutarmi?
cmq grazie molte a flz47655 ....
system
August 16, 2012, 4:27pm
3
primo step risolto....
con la 1.0.1 ha problemi ....devo controllare cosa non va
con la 0022 funziona perfettamente...
Secondo step
Modificare la riga #include "WProgram.h", presente in almeno una delle librerie xxx.h
con
#include "Arduino.h"
system
August 16, 2012, 4:47pm
5
modificati gli #include
scusa brunello ma mi genera ancora errori:
In file included from IDEFatInfo.cpp:4:
C:\arduino-1.0.1\libraries\IDEFat/IDEFat.h:286: error: conflicting return type specified for 'virtual void IDEFile::write(uint8_t)'
C:\arduino-1.0.1\hardware\arduino\cores\arduino/Print.h:48: error: overriding 'virtual size_t Print::write(uint8_t)'
invece con la 0022 compila senza problemi
cece99
August 17, 2012, 11:37am
7
scusa, ma l'hardisk una volta smontato dopo pochi giorni diventa inutilizzabile..... che te ne fai
cece99
August 17, 2012, 12:06pm
8
se tieni smontato l'hardisk, questo si rompe perché le particelle di polvere ostacolano le operazioni della testina rendendo il tutto inutilizzabile
system
August 17, 2012, 12:21pm
9
cece99, ma penso tu stia scherzando
scusa, ma perchè dovresti aprire gli Harddisk?.....
io ho detto che li ho smontati da vecchi PC non è che li ho aperti.. gli HD sono da 250GB.
sto provando altre soluzioni.... e sto valutando anche l'opzione AVR-DOS che però è a pagamento.
vedi:
Alles aus einer Hand. Internet, TV, Mobil- & Festnetztelefonie, unbegrenztes Festnetz-Internet für zuhause und kostenloses WLAN-Modem.
Features:
· Read and write ASCII-Files
· Read and write Binary-Files
· Drivers available for Compact Flash Cards, Hard disk, MMC, SD etc.
· Completly written in AVR-Assembler (fast and compact)
cece99
August 17, 2012, 1:26pm
10
sisi, scusa avevo letto male: avevo capito che avevi sontato gli hardisk!