Hallo Besucher, der Thread wurde 9,3k mal aufgerufen und enthält 55 Antworten

letzter Beitrag von Shadowolf am

LCD Display Erweiterung für SD2IEC

  • Vorschlag:


    Kommandos vom Interface an das SD2IEC:


    CD path


    change directory. Wechselt in ein Verzeichnis auf der SD.


    MD path


    make directory. Erstellt ein Verzeichnis auf der SD.


    LS #v #b


    list directory. Listet das aktuelle Directory der SD von EIntrag (#v) bis Eintrag (#b). Zb. LS 9 15. Das von/bis ist für Atmel Architektur.


    CP dstfile srcfile


    copy file. Kopiert Datei.


    RM file


    remove file. Löscht eine Datei.

  • > Es gibt zwei Möglichkeiten


    Ah, deshalb haben wir z.T. aneinander vorbeitgeredet. Ist doch gut, alles mal aufzuschreiben, statt zu vermuten das die anderen das gleiche denken.


    Du hast wahrscheinlich schon geraten, dass ich Weg 2 gemeint habe.


    > So MSDOS oder Linux Kommandos an das SD2IEC?


    "ls" etc. habe ich übrigens nur zur Veranschaulichung benutzt


    > In größeren Umgebungen spricht man von Client Server Prinzip.
    Ach, wenn Du es auf Lochraster aufbaust, ist es doch eine größere Umgebung (hahaha! Schenkelklopfer!)


    > Das LCD Teil wäre nur für den Zweck da und könnte
    > für nichts anderes verwendet werden.


    Zumindest nicht mit der Firmware. Aber so ein richtig großes Problem wäre das IMHO nicht.


    Hab nochmal an das Parser-Recyclen gedacht: Ein separater Parser hätte natürlich den Vorteil, dass er nach dem Ausschalten über Präprozessor nichts mehr kostet. Eine Schnittstellenänderung im vorhandenen Parser ließe sich nicht weg-ifdefn. (das sogenannte Multiple-Partition-Syndrom)

  • Deshalb hatte ich im Hintergrund, den Parser den zu parsenden Puffer übergeben zu können. Würde aber den Code etwas größer machen. Eine weniger elegante aber sehr platzsparende Lösung wäre ein globaler Pointer, der vor dem Aufuf auf den zu parsenden Puffer zeigt.


    Der Code wird derzeit um ca. 400 Byte aufgeblasen wenn man statt des statischen Kommando-/Filenamenpuffers einen Zeiger auf selbigen verwendet weil dann an vielen Stellen Adressen nicht mehr vom Compiler berechnet werden können sondern das zur Laufzeit geschehen muss.


    Zitat

    - Track/Sektor anzeigen???


    Die gibts nur bei D64/71/81/NP-Images.


    Evtl. fehlen noch:

    • Aktuelle Partition ändern
    • Laufwerks-Mapping ändern (sofern der Mapper eincompiliert ist)


    Zitat

    Für das ls würde ich nicht load"$" umfunktionieren, sonder eine Extrawurst implementieren, die das Directory mehr oder weniger unbehandelt durchreicht. Könnte man dann auf den sonst benötigten 256-Byte-Puffer verzeichten?


    Könnte man, wenn man die cbmdirent-struct in der Sendefunktion auf dem Stack anlegt.


    Zitat

    Vorsicht, die Displays sind zwar meist pinkompatibel und haben kompatible Controller. Aber z.B. der Vorwiderstand für das Display ist anders und evtl. die aus dem Datenblatt erkennbare Initialisierungssequenz.


    AFAIK ist die häufigste Inkompatibilität auf Hardwareseite die Vertauschung von GND und VCC.


    Mit I2C habe ich mich noch nicht richtig beschäftigt. Ist da der Master fix oder kann das zwischen den Busteilnehmer wechseln? Wenn der Master fix ist, kann der Slave etwas vom Master anfordern (Directory Einträge)? Sonst wär vielleicht doch eine serielle Anbindung einfacher?


    Multi-Master auf einem Bus geht, ein Device ständig zwischen Master und Slave wechseln zu lassen ist allerdings IMHO nicht ganz trivial. Evtl. wäre es dann eine Alternative wenn das Display nur als "dummes" Terminal arbeiten soll.


    Zitat

    Mit Platzhalter wie zb. bei der printf() Funktion.


    printf kostet auf dem AVR übrigens "nur" ca. 2300 Byte Flash - in der Version ohne float-Support.


    Unseen ist unbedingt notwendig für dieses Projekt. Es sind also nur noch drei Fragen zu klären:

    • Machen wir es? Hast du Lust Unseen?
    • Ist es ok wenn ich das "Protokoll" ausdenke und vorlege oder willst du es machen Unseen?
    • Wie ist der Zeitrahmen? Ziehen wir das rasch durch oder hat das niedrige Priorität für die SD2IEC Entwicklung? Machen wir es in einem Schwung oder erweitern wir es vor zu? Sollen wir uns einen Zeitplan überlegen oder kann man keinen Zeit Horizont setzen?


    Standardantwort: Schick einen Patch (oder evtl. mehrere aufeinander aufbauende wenn sich der Inhalt sauber trennen lässt).


    GT


    get timestamp. Das Interface antwortet mit "TS=hh:mm:ss dd.MM.yyyy". hh=Stunde, mm=Minute, ss=Sekunde, dd=Tag, MM=Monat, yyyy=Jahr


    Evtl. noch mit Wochentag. Der lässt sich zwar auch berechnen, aber die meisten RTCs können den speichern und selbst aktualisieren.


    Ausserdem fehlt eine Funktion um die Zeit zu setzen.



    Es gibt keine aktuelle Spur und erst recht keinen aktuellen Sektor.


    Zitat

    SIM:


    show image. Damit kann das aktuelle D64 image angezeigt werden.


    Wird nirgendwo gespeichert. Es ist zwar der Sektor und die Eintragsnummer des FAT-Directoryeintrags bekannt, aber damit kommt man ohne grösseren Aufwand nur an den 8.3-Namen.


    Zitat

    SDI:imagefile,#device


    show directory. Damit kann das aktuelle Verzeichnis nach einem CD vom C64 angezeigt werden.


    Auch das wird nirgendwo gespeichert, nur die Clusternummer ist bekannt. Die fat_getlabel-Funktion findet den Namen des aktuellen Verzeichnisses (aber nicht den kompletten Pfad) heraus indem sie ".." öffnet und den Eintrag sucht der die gleiche Clusternummer hat.


    CP dstfile srcfile


    copy file. Kopiert Datei.


    Würde ich nicht über das Display machen.


    (Erwähnte ich schonmal, dass ich Webforen sch*** finde im Vergleich mit dem UI eines guten Newsreaders oder Mailclients?)

  • Statt des PCF8583 würde ich eher einen DS1307 nehmen.


    Der will allerdings 4.5-5.5V Versorgungsspannung.


    RSS-Feed Index (RSS Seite)/RSS - Feed Forum64 (Thread vom Doc)


    Das macht es auch nicht besser. Die lästigsten Dinge sind IMHO der miese Editor, die Notwendigkeit alles von Hand quoten zu müssen und dabei auch noch unabhängige Replies in ein Posting zusammenzuführen und die nicht existente Thread-Baum-Darstellung.

  • > (Erwähnte ich schonmal, dass ich Webforen sch*** finde im Vergleich
    > mit dem UI eines guten Newsreaders oder Mailclients?)


    OT:


    Du hast ja schon gesehen: Ich hab das Quotes-Gebastel auch aufgegeben. Ist hoffentlich trotzdem noch lesbar.


    Gestern hab ich meinen ICQ-Account aus der Mottenkiste geholt, um Diddl mal anfunken zu können. Technisch hat's geklappt, aber zum Fachgeschwafel sind wir dann aus Zeitgründen nicht gekommen.


    Die Mailingliste der open1541 hab ich auch noch nicht wirklich benutzt, weil ich nicht weiß, wer da eigentlich alles drin ist. Die Adressen sehe ich zwar, aber die meisten kenne ich nicht. Vielleicht sollte ich mal einen Broadcast-Ping starten :-)

  • Puh, also ein 2x16 Display ist schon ziemlich klein um alle Infos unter zu bekommen.
    Diese Meldungen hab' ich als ersten Versuch bei meinem Display implementiert und bin noch nicht so zufrieden:


    Also ein bischen eng.


    @edit: Hab' die Liste mal ein bischen gekürzt, sonst wird's so'n langer Thread (-:
    @edit: Natürlich ist das kein Vorschlag, sondern nur ein Test was drauf passt.

    LIFE IS SHORT - Break the rules, do more, need less, smile often, be brave, stay true, dream big, forgive quickley, kiss slowly, love truly, laugh uncontrollably and never regret anything that made you smile.

    2 Mal editiert, zuletzt von Draco ()

  • Zitat

    Au weia, 22 pF! Sind die aus den Datenblättern oder bist Du Profi


    Da ich auch kein Profi bin, habe ich mal eine Frage an die Hardware Profis: Wie werden die Kondensatoren an den Quarzen bestimmt?
    Wenn ich einen AVR644 mit diesem 8MHz Quarz betreiben will, welche beiden Kondensatoren brauche ich (und warum sind es zwei)?
    Wenn ich einen PCF8583 mit diesem 32kHz-Quarz betreiben will, welchen einzigen Kondensator brauche ich (und warum ist es nur einer)?

  • Da ich auch kein Profi bin, habe ich mal eine Frage an die Hardware Profis: Wie werden die Kondensatoren an den Quarzen bestimmt?


    Entweder Pi*Daumen, also 22pF oder so, wenn es nicht exakt auf die Frequenz ankommt.
    Ansonsten anhand des Datenblattes vom Quarz.


    Zitat


    Wenn ich einen AVR644 mit diesem 8MHz Quarz betreiben will, welche beiden Kondensatoren brauche ich (und warum sind es zwei)?


    Die Kondensatoren bilden mit einem Verstärker im Chip und dem Quarz zusammen einen Schwingkreis.
    Dabei bilden die Kondensatoren die sogenannte Lastkapazität und liegen in Reihe zueinander und parallel zum Quarz.
    Mit den Kondensatoren kann man den Schwingkreis in gewissen Grenzen verstimmen.
    Daher ist das Datenblatt vom Controller auch nicht wirklich relevant, der Hersteller vom Quarz weiss schon besser, unter welchen Bedingungen sein Bauteil exakt auf der angegebenen Frequenz schwingt.


    Jetzt hat der Quarz den Du rausgesucht hast eine Lastkapzität von 32pF.
    Reihenschaltung der Kondensatoren bedeutet halbe Gesamt-Kapazität.


    C1 = C2 = 2 * CL


    Also kommt man bei CL=32pF auf Werte für C1 und C2 von 64pF.
    Nun könnte man 68pF nehmen.
    Die Anschlüsse vom Quarz und die Leiterbahnen haben aber noch noch ein wenig Kapazität.
    Also geht man eher auf die nächste Grösse runter und landet in diesem Fall bei 56pF.


    Nicht perfekt vielleicht aber deutlich genauer als 2*22pF.


    Zitat


    Wenn ich einen PCF8583 mit diesem 32kHz-Quarz betreiben will, welchen einzigen Kondensator brauche ich (und warum ist es nur einer)?


    Mit Uhren-Quarzen braucht man normalerweise gar keinen Kondensator.
    Die Oszillatoren dafür haben bereits eingebaute Kapazitäten.
    Im Datenblatt vom PC8583 steht jetzt, dass der Quarz ein CL von 10pF haben soll.
    Der Reichelt-Artikel 0,032768-SMD würde mit CL=0,85pF wohl eher nicht funktionieren - falls die Angabe stimmt.
    Die Artikel 0,032768 und 0,032768-L6 sollten es beide tun.


    Der im Datenblatt vom PCF8583 erwähnte 10pF Trimmer-Kondensator dient der fein-Einstellung.

  • Zitat

    Die Kondensatoren bilden mit einem Verstärker im Chip und dem Quarz zusammen einen Schwingkreis.


    Mit Uhren-Quarzen braucht man normalerweise gar keinen Kondensator.
    Die Oszillatoren dafür haben bereits eingebaute Kapazitäten.
    Im Datenblatt vom PC8583 steht jetzt, dass der Quarz ein CL von 10pF haben soll.
    Die Artikel 0,032768 sollten es beide tun.
    Der im Datenblatt vom PCF8583 erwähnte 10pF Trimmer-Kondensator dient der fein-Einstellung.


    Vielen Dank für diese hervorragende Erklärung; es hilft mir sehr weiter.
    Den 8583 hatte ich zuerst nur mit dem 0,032768 (ohne Trimm-Kondensator) benutzt. Dabei hatte ich Probleme: Es könnte gewesen sein, dass der Oszillator oft nicht ansprang, aber da bin ich nicht mehr ganz sicher. Ganz bestimmt weiss ich aber noch, dass er viel zu schnell war, ich meine sogar doppelt so schnell. Ich wage mal die Vermutung, dass er auf einer Oberfrequenz schwang? Erst als ich einen Festwertkondensator mit 12pF dazulötete klappte es (ich denke, dass man die Eichung einfacher per Software hinbekommt).

  • Img_6461.jpgImg_6462.jpg
    :bgdev
    Eine Bastelei für die alte Hardware (Atmega 32).
    Verwendet die LCD-Bibliothek von Peter Fleury. Das Display zeigt bei Load/Save die Dateinamen an. Beim Diskchange wird das ausgewählte Image angezeigt. Das Display kann über den Kommandokanal auch vom Cevi angesteuert werden.
    Die Anzeige beim Laden zu aktualisieren (Ladebalken oder Prozentanzeige) habe ich nicht probiert, da das wegen des Timings bei der Datenübertragung kritisch sein dürfte.
    Leider habe ich momentan sehr wenig Zeit, so dass es wohl bei dieser Bastelei bleiben wird.

    LIFE IS SHORT - Break the rules, do more, need less, smile often, be brave, stay true, dream big, forgive quickley, kiss slowly, love truly, laugh uncontrollably and never regret anything that made you smile.

    2 Mal editiert, zuletzt von Draco ()

  • Verwendet die LCD-Bibliothek von Peter Fleury.


    Die ist nicht so richtig geeignet, da beim Senden an das Display der Controller solange blockiert wird, wie das Display braucht, um die Daten zu verarbeiten.
    Das sind dann schon mal mehrere milli-Sekunden wenn man eine Zeichenkette schickt.


    Für Anfänger ist die super, für zeit-kritische Dinge völlig ungeeignet.