...
Ich melde mich nach etwas längerer Zeit wieder.
Mitlerweile habe ich so einiges ausprobiert, was das Thema RAM angeht.
Als erstes habe ich mich dazu entschlossen einen alten RAM-Riegel (1M x1) zu zerlegen. Nachdem ich einen Adapter für den smd-Speicher gebaut habe und ich an den Mega8 ageschlossen habe, ging es auch schon mit dem Programmieren los (Ports konfigurieren und zuordnen).
Nach nicht all zu langer zeit war das Programm fertig und der Ram wurde eingesteckt. Eine LED zeigte mir an, ob ein bit gelesen wurde oder nicht. Das hat auch soweit funktioniert, bis ich mehr als ein Bit schreiben wollte. Da ich ab hier nur noch seltsammes blinken der LED bemerkte, habe ich das alte Programm etwas verändert:
1 Bit schreiben und einige male auslesen (über RS232). Hier habe ich festgestellt, dass das Bit nie gleich war (also mal 1, mal 0).
Also habe ich das ganze Programm erneut geschrieben, wieder ohne Erfolg.... 
Aber aufgeben wollte ich noch nicht: Einen anderen Ram genommen und wieder einige Male neu Programmiert. Irgendwie haut das mit den ganzen timings nicht hin.
Deshalb möchte ich mal nachfragen, ob jemand einen Beispielcode dafür hat und wie man das am besten programmiert? (Mit Timer oder ohne?)
Hier ist noch der letzte Code, den ich geschrieben habe (da ich mit dem Timings wie gesagt so meine Probleme habe ist es auch recht simle...)
Code:
'***** ############################################# *****
'***** ############################################# *****
'***** Grundcode zum beschreiben und Lesen von *****
'***** DRAM-Modul TMS4164-12NL *****
'***** ############################################# *****
'***** ############################################# *****
$regfile = "m8def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 10
$framesize = 40
'***** ############################################# *****
'***** Adress- und Datenleitungen konfigurieren *****
'***** ############################################# *****
Config Portd = Output
Config Portc = Output
W Alias Portc.2
Ras Alias Portc.3
Cas Alias Portc.4
D_i Alias Portc.1
D_o Alias Portc.5
Adr Alias Portd
Dim Adresse As Byte 'adressse die gesetzt werden soll
Dim Ras_adr As Byte 'raw adress
Dim Cas_adr As Byte 'Column adress
Dim Set_bit As Byte 'Bit setzen (1/0)
Dim Get_bit As Byte 'gelesenes Bit
'***** ############################################# *****
'***** ############################################# *****
'***** Sonstiges *****
'***** ############################################# *****
Dim I As Byte
'***** ############################################# *****
'***** ############################################# *****
'***** Gruene LED konfigurieren *****
'***** ############################################# *****
Config Portb.0 = Output ' gruene LED
Led_gruen Alias Portb.0
'***** ############################################# *****
'***** ############################################# *****
'***** Programmstart durch blinken signalisieren *****
'***** ############################################# *****
For I = 0 To 5
Led_gruen = 1
Waitms 50
Led_gruen = 0
Waitms 10
Next
Led_gruen = 0
Waitms 500
'***** ############################################# *****
'***** ############################################# *****
'***** Hauptprogramm *****
'***** ############################################# *****
Wait 1
Led_gruen = 1
Waitms 5
Led_gruen = 0
Set_bit = 1
Gosub Write_bit
Do
Waitms 50
Gosub Read_byte
Led_gruen = Get_bit
Waitms 5
Led_gruen = 0
Loop
End
'***** ############################################# *****
'***** ############################################# *****
'***** GOSUBs *****
'***** ############################################# *****
'***** ############################################# *****
'***** Bit in RAM schreiben (write_bit)
'***** ############################################# *****
Write_bit:
Ras = 1
Cas = 1
'---------------------------------------------------
'ROW-Adresse setzen
Adr = 255
Ras = 0
nop
'---------------------------------------------------
'COLUMN-Adresse setzen
Adr = 255
Cas = 0
'---------------------------------------------------
D_i = Set_bit
W = 0
D_i = 0
W = 1
'---------------------------------------------------
Cas = 1
Ras = 1
Ras = 0
Cas = 0
Return
'***** ############################################# *****
'***** ############################################# *****
'***** Bit aus RAM lesen *****
'***** ############################################# *****
Read_byte:
Ras = 1
Cas = 1
'---------------------------------------------------
'ROW-Adresse setzen
Adr = 255
Ras = 0
nop
'---------------------------------------------------
'COLUMN-Adresse setzen
W = 1
Adr = 255
Cas = 0
nop
'---------------------------------------------------
Cas = 1
Get_bit = D_o
Ras = 1
W = 0
Ras = 0
Cas = 0
Return
'***** ############################################# *****
Achso... theoretisch gesehen sollte die LED kurz aufleuchten, wenn das gelesene Bit = 1 ist
Lesezeichen