-
        

Ergebnis 1 bis 3 von 3

Thema: Seltsamkeit an Port D

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253

    Seltsamkeit an Port D

    Anzeige

    Hallo!

    Atmega8, interner Takt, PortD. Hier nimmt unsere Geschichte ihren eigenartigen Verlauf. Die Mission schien einfach: Lasse LEDS an dem Port der Reihe nach leuchten (auch Lauflicht genannt), um die einzelnen Pins zu überprüfen. Unser Programmierer schrieb daraufhin folgendes (unsauberes) Programm:

    Code:
    $regfile = "m8def.dat"
    $crystal = 1000000
    Config Portd = Output
    Schleife:
    Portd = 00000001
    Wait 1
    Portd = 00000010
    Wait 1
    Portd = 00000100
    Wait 1
    Portd = 00001000
    Wait 1
    Portd = 00010000
    Wait 1
    Portd = 00100000
    Wait 1
    Portd = 01000000
    Wait 1
    Portd = 10000000
    Wait 1
    goto Schleife
    Es passierte jedoch erstaunliches. Das folgende Protokoll verdeutlicht noch einmal die dunklen Machenschaften von Port D:

    Code:
    Pin-Nr.:
    76543210
    
    LEDs:
    00000001
    00001010
    01100100
    11101000
    00010000
    10100000
    01000000
    10000000
    Unser Programmierer war geschockt, gab jedoch nicht auf und dem ROTATE-Befehl eine Chance. Schließlich macht dieser dasselbe. Neuer Code, neues Glück:

    Code:
    $regfile = "m8def.dat"
    $crystal = 1000000
    Config Portd = Output
    Dim A As Byte
    Schleife:
    Let A = 1
    Portd = A
    Rotate A , Left , 1
    Wait 1
    Portd = A
    Rotate A , Left , 1
    Wait 1
    Portd = A
    Rotate A , Left , 1
    Wait 1
    Portd = A
    Rotate A , Left , 1
    Wait 1
    Portd = A
    Rotate A , Left , 1
    Wait 1
    Portd = A
    Rotate A , Left , 1
    Wait 1
    Portd = A
    Rotate A , Left , 1
    Wait 1
    Portd = A
    Rotate A , Left , 1
    Wait 1
    Goto Schleife
    Siehe da: PORT D war bezwungen. Das Lauflicht funktionierte wie beabsichtigt. Der Programmierer fragt sich dennoch, warum der erste Versuch fehlschlug. Könnt ihr ihm helfen?

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,
    ja da haben wir einen schönen Fehler,
    nach dem Motto: der µC macht das was man ihm sagt, und nicht das was man meint.

    Du wolltest die Werte binär übergeben, doch sie sind als dezimal angegeben !

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253
    Pantomime Antwort meinerseits:

    KOPF---->TISCH
    KOPF---->TISCH
    KOPF---->TISCH
    KOPF---->TISCH
    KOPF---->TISCH
    KOPF---->TISCH

Berechtigungen

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