Hallo zusammen,
habe folgenden Treiber für einen EEPROM, den ich gerne auf meinen
arduino laufen lassen würde.
http://www.sst.com/dotAsset/40542.txt
Das Problem ist, ich muss noch die Konstanten "CE", "SCK" usw.
definieren, weiss aber nicht, wie ich das in der Arduino IDE machen
kann. Normalerweise würde ich das mit
#define SCK ( 1 << PORTE2 )
tun. Aber die IDE erkennt das nicht. Wie kann ich das direkt mit C tun?
Danke euch,
Max
>Aber was ist der 2er? Also welcher Pin>ist das jetzt?
Was willst ausgerechnet DU mit so einem Monsterflash?
>Das Problem ist, ich muss noch die Konstanten "CE", "SCK" usw.>definieren, weiss aber nicht, wie ich das in der Arduino IDE machen>kann.
Das kannst du so nicht übernehmen.
SCK = 1 oder CE = 0 musst du durch entsprechende Bitsetz-
und Bitlöschbefehle ersetzen.
Das ist ein EEPROM in einem GPS-Logger der wegen anderen Problemen die
Daten nicht mehr ausgibt. Da die Daten aber wichtig sind, möchte ich
diesen EEPROM nun an meinen arduino anschliessen und den speicher
auslesen um die daten zu retten.
Dass ich die Befehle erstezen muss, dachte ich mir fast. Aber wie mache
ich das? Kann ich da jetzt einfach dann digitalwrite verwenden?
>Das ist ein EEPROM in einem GPS-Logger der wegen anderen Problemen die>Daten nicht mehr ausgibt. Da die Daten aber wichtig sind, möchte ich>diesen EEPROM nun an meinen arduino anschliessen und den speicher>auslesen um die daten zu retten.
Prust;) Du weisst ja nicht mal wie man einen Portpin setzt oder
löscht. Lass da mal einen Profi ran. Sonst sind deine Daten
möglicherweise futsch.
ich kann nicht ganz nachvollziehen warum du so polemisch wirst.
Ich habe einen fertigen Treiber, den ich in C sehr wohl verstehe, den
ich aber, weil ich den Arduino bzw. seine ganzen besonderheiten erst
seit wenigen Tagen kenne / besitze. Einem Profi das zu geben ist
Schwachsinn, die Daten sind keine paar tausend Euro wert. Und noch
futscher als sie jetzt schon sind können sie nicht werden. Also wenn Du
keine lust hast mir zu helfen dann schau einfach nicht in den Thread.
Ich werds auch so rausfinden, ich geb dir dann Bescheid wenns
funktioniert hat...
Maxwell schrieb:> ich kann nicht ganz nachvollziehen warum du so polemisch wirst.> Ich habe einen fertigen Treiber, den ich in C sehr wohl verstehe, den> ich aber, weil ich den Arduino bzw. seine ganzen besonderheiten erst> seit wenigen Tagen kenne / besitze. Einem Profi das zu geben ist> Schwachsinn, die Daten sind keine paar tausend Euro wert. Und noch> futscher als sie jetzt schon sind können sie nicht werden. Also wenn Du> keine lust hast mir zu helfen dann schau einfach nicht in den Thread.> Ich werds auch so rausfinden, ich geb dir dann Bescheid wenns> funktioniert hat...
Gut.
Dann fang erst mal damit an, fstzulegen an welchen Pin an welchem Port
du die EEPROM Leitungen SCK, SI, SO, SO, CE, WP, Hold anschliessen
willst.
Und dann programmierst du ein 'Bit auf 1 an diesem Port setzen' wann
immer im Code ein
SCK = 1
auftaucht, indem du das von dir bei der Hardwarezuordnung gewählte Bit
am von dir gewählten Port auf 1 setzt.
Für SCK = 0 dann die genaue Umkehrung bzw. selbiges in Grün für alle
anderen Signale.
Ist doch nicht so schwer. Da hätte man auch alleine draufkommen können.
Und das ist dann genau das, was die Profis auszeichnet. Die kommen ganz
von alleine auf derart naheliegenden Ideen bzw. haben auch kein Problem
temp = SO;
in Standard-C über eine Standard-Bitabfrage zu formulieren.
Die richtigen Profis schaffen das ganze dann auch, ohne den Code
umschreiben zu müssen, indem sie sich mittels Bitfeldern eine Zuordnung
bauen. Aber das ist dann schon ein wenig trickreich, wenn man es noch
nie gemacht hat.
>ich kann nicht ganz nachvollziehen warum du so polemisch wirst.
Siehe unten.
>Ich habe einen fertigen Treiber, den ich in C sehr wohl verstehe, den>ich aber, weil ich den Arduino bzw. seine ganzen besonderheiten erst>seit wenigen Tagen kenne / besitze.
Dann ist das auslesen eines solchen Chips natürlich das erste
Programm;) Lass erst mal ne LED leuchten. Dann lass sie blinken.
Selbst wenn du den Chip lesen kannst, wie kommen dann die Daten
auf den PC? Da gibt es noch ein paar Hürden die du nehmen musst.
Danke für deine konstruktive Hilfe. Soweit war ich schon, nur ich weiss
jetzt eben nicht wie ich mit dem Arduino auf einen Port zugreife. Mit
einem andren board (das ich aber nicht mehr habe) habe ich eben immer
ganz normal mit
DDRA |= (1<<6);
auf einen bestimmten Pin zugegriffen. Mit dem Arduino kenne ich aber nur
das digitalwrite...
LEDs blinken lassen kann ich, ich bin doch nicht blöd... Ausserdem habe
ich schon in eingen projekten eine serielle schnittstelle verwendet,
alles kein problem. Ich hab nur keine Ahnung wie ich auf einen
bestimmten port zugreifen kann...
Maxwell schrieb:> auf einen bestimmten Pin zugegriffen. Mit dem Arduino kenne ich aber nur> das digitalwrite...
Man kann einen Arduino auch in ganz normalem C programmieren. Die
Arduino eigene Programmiersprache ist zwar nett, aber kein Muss.
Aber abgesehen davon:
was hindert dich daran, den Code umzuschreiben, so dass anstelle von
SCK = 1;
dann dortsteht
digitalwrite( SCK_Pin, HIGH );
und für den SCK_Pin suchst du dir einen der Anschlüsse aus, lässt den
Draht vom SCK Pin des EEPROM dort hingehen und teilst das dem
Arduino-"C" auf die Arduino-übliche Art und Weise mit.
Wenn du die avr io.h einbindest, geht das beim Arduino genauso wie bei
jedem anderen Atmega auch, letztendlich ist das ja auch nur ein avr
Entwicklungsboard.