- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 3 von 3

Thema: Dateifunktion c-unbewandter sucht hilfe für Programmierer..

  1. #1

    Dateifunktion c-unbewandter sucht hilfe für Programmierer..

    Anzeige

    Powerstation Test
    Hallo,
    ich muß an erster stelle zugeben, ich kann c nicht wirklich - habe aber ein wenig mit der C-Control und Basic gemacht - (vielleicht kommt das mit c ja auch noch im laufe unseres projektes..) Also, ich bin gerade mit einem Kollegen an einem Projekt - ich hab bis jetzt die Elektronik übernommen, und er hat Programmiert..

    Naja, worum geht es? :

    Also, wir müssen an 16 Pins unseres ATMega128 getaktet ein Bitmuster ausgeben. Dazu haben wir eine Tabelle mit Bitmusterpacketen - also sagen wir mal so:

    0000111100011011
    0110110000111100 (Bitmusterpaket 1)
    0110000111110001

    0110110111100000
    0110000111110001 (Bitmusterpaket 2)
    0000110111110010
    0110000111110001

    Tritt zustand 1 ein soll Bitmusterpaket 1 Zeilenweise an die Pins gelegt werden, tritt zustand 2 ein kommt das 2. Paket ran.

    Soweit ist das ja noch kein aufwand und nicht schwer - jetzt haben wir hier aber hunterte von verschiedenen Packeten und tausende von Zeilen außerdem das Problem, das das Bitmustergesamtpaket austauschbar sein soll. Mein Kollege hat jetzt schon angefangen, das ganze per Hand einzugeben, ich halte das aber für zu aufwendig und zu unflexibel.

    Mit meiner Elektronik bin ich soweit durch - vielleicht hatte ich deshalb heute nacht den kopf frei für programmtechnische überlegungen..

    Jedenfalls ist mir als nicht c bewandter eingefallen - wenn ich meine Bitmuster zu einer Kette zusammenhängen würde, dann hätte ich einen recht langen String (hoffe korrekte Bezeichnung). Ich weiß das meine Bitmuster nur 16 bits lang sind - also könnte ich doch jetzt sagen: Bitmusterpaket 1 fängt im String bei Bit 0 an und hört bei Bit 47 auf - alles dazwischen kannst Du in 16 Bit gestaffelt der Reihe nach ausgeben. Nun denke ich, leicht portierbar würde man das ganze doch dann machen, wenn man dem Programm im Controller sagt: auf dem externen Speicher *sowieso* findest Du auf der Adresse 1 - 300 start und stop adressen. (die Adressen stehen jeweils für einen bestimmten Vorgang der einen bestimmten Bitmusterblock auslösen soll/kann)
    Speicherstelle 1 enthält jetzt z.b. die Informationen, Startbit 0 Stopbit 47 daraufhin greift sich das Programm diese stelle im String und gibt sie aus - Die positionsadressen und der String sind aber nicht im Programm verflochten, sondern extern oder zu mindest leichter erreichbar abgespeichert. Nebeneffekt dabei ist dann auch noch, das es quasi egal ist, was da drin steht - hauptsache, der Controller bekommt sein Futter (wo und was).

    Ich hoffe, es ist verständlich, was ich meine..!

    Lange Rede kurzer Sinn:

    Ist das einfacher zu verwirklichen als die komplette Handeingabe? - git es eine "Dateifunktion" unter C? Mein Kollege arbeitet mit CodevisionAVR... sagte halt auf meine Idee hin, ich solle doch mal nachforschen..

    Danke sehr im vorraus!

    Grüße,
    Martin

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Irgendwo müssen die Bitmuster doch herkommen...
    Ausm Flash, EEprom, Ram, I/O, ...

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Da du in 16-Bit Einheiten ausgibst ist es sinnvoll, gleich 2Byte als Einheit zu verwenden.

    Sind die Pakete verschieden lang, mußt du ein Mapping machen
    Zustand --> Pack(Adresse/Länge)
    oder
    Du speicherst die Pakete mit einen Header Key (=Zustand) Länge, u. Daten.

    Letzteres ist von der Erstellung und Verwaltung gesehen einfacher.

    Wenn man raten soll, mußte man wissen wieviele Zustande und daher Pakete es gibt, ein Mengengerüst halt.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad