Gast
#168863
Hallo! Ich hab nen kleinen Code für meinen Mega48 geschrieben, den ich mit einem DRam ausstatten möchte. Jetzt ist das Problem, dass er sich aufhängt, sobald ich den DRam Refresh aktiviere und dann noch Daten per SPI schicke. Hardwarebeschreibung: µC mit 8MHz interner Oszillator SPI Slave, Master ist der PC am Parallelport (eigene Software für Kommunikation geschrieben) am PortD hängt an PD0-PD4 ein Latch, an dem per R2R DAC ein Lautsprecher angeschlossen ist... Latch enable ist PD6 das DRAM ist da ebenfalls teilweise mit angeschlossen, das spielt jedoch keine Rolle für das Problem. DRam cas ras sind PB0/PB1, OE und W (low active!) an PB6 / PB7. So nochmal ne genaue Problembeschreibung: Deaktiviere ich den Timer, der alle 2,0xms 144 Zeilen Refresht (cas before ras) - damit also rund 12ms für alle 1024 Zeilen braucht - , ist alles okay. Ich lasse mir die über SPI empfangenen Bytes direkt wieder ausgeben, kommt alles korrekt an. Ich kann ne 4kHz Sounddatei per SPI rüberschicken und durch den Lautsprecher hören - halt schlechte Qualität, was aber am Prinzip liegt. Ich kann auch das Flash korrekt auslesen und Programmieren, deshalb ist meine SPI Software wohl nicht fehlerhaft. Aktiviere ich nun den DRam Refreshtimer, passiert folgendes: Per SPI kann ich noch 5-30 Bytes schicken & richtig empfangen, danach ist MISO dauerhaft high mit gaaaaaaanz kurzen Low-Peaks drin (aufm Oszi geguckt). Empfangen tu ich nurnoch 255 am PC, ist ja klar. Die RAS Leitung wird weiterhin getoggelt. Was passiert dort? Kann mir das jemand erklären? Was kann ich dagegen tun? Source im Anhang. Ich bedanke mich schonmal im Vorraus, Matthias Larisch