- Labornetzteil AliExpress         
Seite 12 von 14 ErsteErste ... 21011121314 LetzteLetzte
Ergebnis 111 bis 120 von 136

Thema: Anfänger mit STK500 und Assembler

  1. #111
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2005
    Beiträge
    535
    Anzeige

    E-Bike
    robo_wolf,

    ja, ja die Lese- und Schreibzugriffe erfolgen völlig unsynchronisiert. D.h. während ein Prozess Daten in die FIFO einschreibt kann ein anderer schon dabei sein, die Daten der Botschaft schon wieder auszulesen .

    Das ist wie beim Fliessband an der Supermarktkasse: Die FIFO ist das Fliessband, der Kunde legt die Daten darauf und an der Kasse werden sie heruntergenommen. Je nachdem wer von den beiden schneller ist, kommt's zum Stau und Ärger beim Kunden oder zu gelangweilten Blicken von der Kasse . Wichtig ist aber, dass jeder der beiden mit der ihm eigenen Arbeitsgeschwindigkeit werkeln kann, ohne dass der Gesamtprozess abstürzt. Genau das braucht man, wenn's z.B. darum geht, Geräte miteinander zu verbinden, die mit unterschiedlicher Geschwindigkeit Daten erzeugen bzw. verarbeiten.

    Der Algorithmus, den ich in dem .pdf beschreibe, erledigt auch die Situtation, die Dir 'nicht so easy' vorkommt, mit Leichtigkeit (und ein paar "cli"s ), obwohl er so (verhältnismässig) einfach ist.

    Ciao,

    mare_crisium

  2. #112
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    Guten Abend mare_crisium,
    lang hat es gedauert... aber nun habe ich einen Stand des FIFO-Moduls erreicht, den ich Dir vorstellen moechte.
    Ich hoffe die Kommentare sind ausreichend und verstaendlich geschrieben.
    Auf Deine Kommentare bin ich schon sehr gespannt
    Angehängte Dateien Angehängte Dateien
    ### Silvio ###

  3. #113
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2005
    Beiträge
    535
    robo_wolf,

    na, also 0h16' ist schon ziemlich früher Abend ! Hab' mir Deinen Entwurf heruntergeladen und werde mich demnächst melden.

    Ciao

    mare_crisium

  4. #114
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2005
    Beiträge
    535
    robo_wolf,

    chapeau! Das ist Dir gut gelungen . Meine Kommentare sind alle im Quelltext des Moduls. Weil ich im Hauptprogramm nichts geändert habe, hänge ich es hier nicht an.

    Wie Du sehen wirst, habe ich zwei Prozeduren vergessen, die man beim Verwenden von FIFOs häufig braucht. Die müsstest Du noch nachrüsten; ist aber einfach. Danach reden wir 'mal über das Protokoll, das wir für die Unterhaltung zwischen den RS232s verwenden wollen.

    Hast Du auf der PC-Seite ein Programm, das die RS232 bedienen kann? Ich habe mir eins mit Delphi geschrieben, das die "Serial"-Komponente aus dem (sehr empfehlenswerten) Heft "Toolbox" verwendet.

    Ciao,

    mare_crisium
    Angehängte Dateien Angehängte Dateien

  5. #115
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    mare_crisium,
    vielen Dank fuer die Blumen, Deine Kommentare und Verbesserungsvorschlaege.
    Werde die Vorschlaege und Erweiterungen(2 Prozeduren) in meiner optimierten Variante demnaechst wieder vorstellen.
    (ich hoffe, dass ich alles richtig verstanden habe)

    "Hast Du auf der PC-Seite ein Programm, das die RS232 bedienen kann?"
    Nein.... nur WindowsOnBoardmittel Hyperterminal

    "Toolbox" kannte ich bis heute noch nicht... Danke fuer den Hinweis.
    ### Silvio ###

  6. #116
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    Guten Abend mare_crisium,
    leider steh ich bei Deinem ersten Kommentar wieder ein wenig auf dem Schlauch:
    "Alle Schweierigkeiten verschwinden, wenn die Kapazität als
    Eingangsparameter übergeben werden."
    Ist das aehnlich wie bei den macro.... xxx,@0..gemeint???
    Ist mir irgendwie unklar
    ### Silvio ###

  7. #117
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2005
    Beiträge
    535
    Guten Feiertags-Vorabend, robo_wolf !

    Deine Frage beantwortet sich am Besten anhand des Quellprogramms. Ich habe Dein Modul so umgebaut, dass es so läuft, wie ich mir das vorgestellt habe. War'n noch ein paar fette Fehler drin . Die in FIFO8_CREATE und FIFO8_WRITE habe ich beseitigt; FIFO8_READ überlasse ich Dir !

    Ciao,

    mare_crisium
    Angehängte Dateien Angehängte Dateien

  8. #118
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    wuensche einen schoenen Feiertag,
    mare_crisium,
    Danke fuer die Files.
    Da hatte ich wohl etwas zu kompliziert gedacht(Eingangsparameter uebergeben).
    Wenn man das so sieht, ist es doch logisch un simple zugleich...

    Ein, fuer mich gravierendes, Problem sehe ich jetzt noch:
    Daduch das die RAM-Konstrukte auf Variablen basieren, kann folgendes passieren.
    Ich stelle die beiden FIFOs auf max:=255 und der "Controller wirft Blasen"
    Was ich damit sagen will: Das RAM-Ende wird ueberschritten und der Assembler merkt es nicht... zu mindestens bei mir.
    RAM_NEXT_FREE :=0x027E und beim AtMega8515 ist bei 0x025F schon Schluss.
    Nun um dem Ganzen im Programm vorzubeugen, moechte ich gern eine Uberwachung einbauen.
    Also RAM_NEXT_FREE mit RAMEND( ist ja so in der *.inc festgelegt) vergleichen.
    Da sehe 2 Probleme zum Einen muss man vom RAMEND noch die Stackverwaltung abziehen...
    und zum Anderen moechte ich bei der Abfrage einen Assembler-Error bewirken.
    ### Silvio ###

  9. #119
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.12.2005
    Beiträge
    535
    robo_wolf,

    hatte ich mir's doch gedacht, dass Du Dir das mit der Parameterübergabe irgendwie zu kompliziert vorgestellt hattest !

    Ja, die Überprüfung des RAM-Haushalts ist nützlich. Allerdings sind die RAM-Bereiche in diesem Beispiel ja nicht dynamisch; will sagen: So wie sie zu Assemblierzeit eingestellt sind, so bleiben sie auch während der Laufzeit des Programms. Ich habe mich deshalb immer damit beholfen, nach dem Assemblieren einmal den Simulator laufen zu lassen und dort die Ausdehnung der RAM-Bereiche zu überprüfen (inkl. System-Stack).

    Man könnte an noch ander Methoden denken, z.B. daran, zwischen Variablen-Bereich und Stack-Untergrenze sogenannte "Wächterbytes" einzubauen. Das sind zwei, drei RAM-Bytes mit vordefinierten Werten. Wenn die sich ändern, bedeutet es, dass der Stack in den Variablenbereich hineingewachsen ist. Diese Überwachung könnte in der IDLE-Schleife angesiedelt werden.

    Ciao,

    mare_crisium

  10. #120
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    mare_crisium,
    habe noch einen Fehler in meinem Programm gefunden, den ich nicht nachvollziehen kann.
    Wenn ich die Kapazitaet groesser 63(0x3F) setze, bekomme ich die Fehlermeldung
    ..\LernPrgrm_FIFO_TEST_V01\FIFO8.asm(122): error: Operand 2 out of range: 0x40
    --> es gibt ne Grenze...und die liegt bei "<0x40" .... Oder???

    das habe ich noch gefunden:
    Code:
    FIFO8_WRITE:
    /* KOMMENTAR_BEGINN!!!
    ...
    	cp r18,r17			; 
    ...
    hier stimmt was noch nicht. Das zweite Byte wird nicht mehr geschrieben.
    ->>>(...wird schon geschrieben, ist aber beim ersten Mal "0x00")
    KOMMENTAR_ENDE !!!
    */
    	cp r17,r18			; die Operanten muessen vertauscht werden, weil es brge und nicht breq ist( :-() mein Fehler)
    	brge FIFO8_WR_EXIT	; Sprung, wenn FIFO voll ist
    ### Silvio ###

Seite 12 von 14 ErsteErste ... 21011121314 LetzteLetzte

Berechtigungen

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

LiFePO4 Speicher Test