...
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