..wahrscheinlich zum hundertsten mal; aber ich komme irgendwie nicht durch.... ich habe eine lcd-routine. prinzipiell funktioniert diese auch (also alles, was mit "lcd_" beginnt); ein ins codesegment geschriebener string wird auch ausgegeben (via z-pointer, lpm,adiw). nun das problem: lege ich im ram eine liste mit dem alphabet an (label tabelle: ) und versuche dieses danach auszulesen (label ausgabe: ) sagt das display nix mehr. im simulator (avr-studio4) ist alles schön,der ram wird richtig bschrieben, die pointer richtig geladen, das daten-register hat den richtigen wert, porta (lcd-daten) gibt ihn auch aus. die lcd_initialisierung funzt auch (schwarzer balken geht weg) ...daher zur kontrolle die vielen sinnlos-warteschleifen... aber nichts desto trotz gibt das lcd gar nichts aus. irgendjemand ne idee? ich wäre dankbar... controller ist ein 90S8515, das lcd natürlich hd44780-kombatibel..
was jetzt? isses zu schwierig oder zu banal? nu laßt mich nich hängen! oder will niemand....?
Was mir als erstes auffällt: .def voll=r17 .def leer=r18 Du hast die beiden Register zwar "voll" und "leer" genannt und auch so verwendet, aber nie den entsprechenden Wert zugewiesen. Da muß also erstmal noch ein clr leer ser voll gleich hinter die Stackinitialisierung, sonst klappt schonmal Deine Portinitialisierung nicht. MfG Olaf
...stimmt, jetzt taucht der cursor zumindest wieder auf. die registerbeschreibung ist wohl bei den vielen copy-und-paste-operationen abhanden gekommen....(und ich hab steif geglaubt, soweit wär alles in ordnung) aber der text fehlt dennoch.... ........Hannes..!!!
wie wärs wenn du das ganze ding einmal durchsimulierst? billige hardwareemulatoren können hier auch wunder helfen
im avr-simulator gabs keine erkenntnisse.... aber bei mir (mittlerweile): ausgabe ruft falscherweise 'lcd_write' (zeile 81). dies ist aber nur der teil der schreiboperation, der die daten ausgibt. vorher sollte man sich schon festlegen, daß man daten senden möchte. der aufruf muß also rcall lcd_data heißen, damit das rs gestzt wird. lcd_data ruft dann schon von selbst lcd_write. kleiner fehler->große wirkung. das lcd dachte, es bekommt kommandos! aus lcd_write mach lcd_data -> funktioniert! ...dennoch mein dank für die unterstützung......das mit den voll- und leer-registern hätte ich wohl auch nie entdeckt. was ist ein "billiger hardwareemulator" ?
achso, das... hab ich. krieg ich aber irgendwie nicht zur kooperation überrredet. hätte mir hier auch nix genützt, da ich ja eh nur zu oberflächlich die ports kontrolliert habe (letzten endes scheiterte ja alles an einem nicht gesetzten rs). und wenn das virtuelle lcd genausowenig sagt wie das reelle, hilft das ja auch nicht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.