Kampi
02.07.2010, 17:01
Hallo liebes Forum
Ich hab mich vor einigen Wochen gefragt "Wie mach ich eine SD-Karte an einen Controller?". Also hab ich ein bischen rumgeforscht und mich dann mal mit AVR-DOS beschäftigt und dann wollt ich es auch mal ausprobieren eine SD-Karte an einen Controller zu hängen.
Da stellten sich natürlich ein paar Problem heraus.
1). Braucht man für das AVR-DOS massig RAm (Mega128+)
2). Sind diese Chips nur als SMD erhältlich
3). Wie betreibe ich den Chip und die SD-Karte (Chip 5V, SD-Karte 3V)
Da ich persönlich keine Ätzausrüstung habe und auch keinen kenne der mir was ätzen kann musste ich mir anders weiterhelfen. O:)
Der Ausweg war eine SMD-Adapterplatine für den Mega und ein fertiges SD-Kartenmodul mit integriertem Pegelwandler (weil Spannungsteiler usw. sollen wohl nicht so prall sein).
So und bisher sieht es so aus (nicht wundern wieso die LED so hell ist, hab mir ausversehn Ultrahelle LEDs bestellt O:) )
http://img696.imageshack.us/img696/9125/bildvo.jpg
Und im TeraTerm sieht es dann so aus:
http://img715.imageshack.us/f/unbenanntog.png/
Als Komponenten für die Platine benutze ich:
SD-Kartenhalter
http://www.shop.display3000.com/elektronikmodule/sd-speicherkartenplatine.html
UART -> USB Wandler
http://de.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=0406568
Und einen Mega128 mit SMD-Adapter von Reichelt.
Und als Code benutze ich den Testcode von der AVR-DOS Homepage.
http://members.aon.at/voegel/index.html
Mein nächster Schritt wird jetzt sein das ich das in ein Programm als Datenlogger integrieren möchte und ich hoffe es klappt O:)
Hoffe dieser Thread ist für einige Anreiz es auch mal zu probieren.
Edit: Hab hier noch ein kleines Programm um den Wert aus dem ADC0 mitzuloggen. Die Stacks müssen vielleicht noch dimensioniert werden aber ganz ohne gehts nicht!
$regfile = "M128def.dat"
$crystal = 8000000
$baud = 19200
$hwstack = 200
$swstack = 200
$framesize = 400
Dim Zu_schreiben As Byte
Dim Tmpbyte As Byte '
Dim Btemp1 As Byte
Dim Wert As Byte
'ADC konfigurieren und starten
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
'AVR-DOS einbinden
$include "config_mmc.bas"
$include "config_avr-dos.bas"
Do
'A/D Wandlung
Wert = Getadc(0)
'SD Karte initialisieren
Tmpbyte = Driveinit()
Print "Init: " ; Str(tmpbyte)
Print "Trying to read File system..."
Btemp1 = Initfilesystem(1)
Print "Btemp1: " ; Btemp1
'Fehlerausgabe
If Btemp1 <> 0 Then
Print "Error: " ; Btemp1 ; " beim Initialisieren des Dateisystems"
Waitms 500
Print "SD - FEHLER"
Else
Print "SD OK"
End If
'SD Karte beschreiben
Open "LOG.txt" For Append As #1
Print #1 , Wert 'Variable auf SD schreiben
Print Wert 'Variable auf COM / PC anzeigen
Close #1
Return
Wait 1
Loop
End
Ich hab mich vor einigen Wochen gefragt "Wie mach ich eine SD-Karte an einen Controller?". Also hab ich ein bischen rumgeforscht und mich dann mal mit AVR-DOS beschäftigt und dann wollt ich es auch mal ausprobieren eine SD-Karte an einen Controller zu hängen.
Da stellten sich natürlich ein paar Problem heraus.
1). Braucht man für das AVR-DOS massig RAm (Mega128+)
2). Sind diese Chips nur als SMD erhältlich
3). Wie betreibe ich den Chip und die SD-Karte (Chip 5V, SD-Karte 3V)
Da ich persönlich keine Ätzausrüstung habe und auch keinen kenne der mir was ätzen kann musste ich mir anders weiterhelfen. O:)
Der Ausweg war eine SMD-Adapterplatine für den Mega und ein fertiges SD-Kartenmodul mit integriertem Pegelwandler (weil Spannungsteiler usw. sollen wohl nicht so prall sein).
So und bisher sieht es so aus (nicht wundern wieso die LED so hell ist, hab mir ausversehn Ultrahelle LEDs bestellt O:) )
http://img696.imageshack.us/img696/9125/bildvo.jpg
Und im TeraTerm sieht es dann so aus:
http://img715.imageshack.us/f/unbenanntog.png/
Als Komponenten für die Platine benutze ich:
SD-Kartenhalter
http://www.shop.display3000.com/elektronikmodule/sd-speicherkartenplatine.html
UART -> USB Wandler
http://de.rs-online.com/web/search/searchBrowseAction.html?method=getProduct&R=0406568
Und einen Mega128 mit SMD-Adapter von Reichelt.
Und als Code benutze ich den Testcode von der AVR-DOS Homepage.
http://members.aon.at/voegel/index.html
Mein nächster Schritt wird jetzt sein das ich das in ein Programm als Datenlogger integrieren möchte und ich hoffe es klappt O:)
Hoffe dieser Thread ist für einige Anreiz es auch mal zu probieren.
Edit: Hab hier noch ein kleines Programm um den Wert aus dem ADC0 mitzuloggen. Die Stacks müssen vielleicht noch dimensioniert werden aber ganz ohne gehts nicht!
$regfile = "M128def.dat"
$crystal = 8000000
$baud = 19200
$hwstack = 200
$swstack = 200
$framesize = 400
Dim Zu_schreiben As Byte
Dim Tmpbyte As Byte '
Dim Btemp1 As Byte
Dim Wert As Byte
'ADC konfigurieren und starten
Config Adc = Single , Prescaler = Auto , Reference = Internal
Start Adc
'AVR-DOS einbinden
$include "config_mmc.bas"
$include "config_avr-dos.bas"
Do
'A/D Wandlung
Wert = Getadc(0)
'SD Karte initialisieren
Tmpbyte = Driveinit()
Print "Init: " ; Str(tmpbyte)
Print "Trying to read File system..."
Btemp1 = Initfilesystem(1)
Print "Btemp1: " ; Btemp1
'Fehlerausgabe
If Btemp1 <> 0 Then
Print "Error: " ; Btemp1 ; " beim Initialisieren des Dateisystems"
Waitms 500
Print "SD - FEHLER"
Else
Print "SD OK"
End If
'SD Karte beschreiben
Open "LOG.txt" For Append As #1
Print #1 , Wert 'Variable auf SD schreiben
Print Wert 'Variable auf COM / PC anzeigen
Close #1
Return
Wait 1
Loop
End