-         

Ergebnis 1 bis 7 von 7

Thema: Anstehende Bits an einem Port mit Speicherinhalt vergleichen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.04.2006
    Beiträge
    10

    Anstehende Bits an einem Port mit Speicherinhalt vergleichen

    Anzeige

    Hallo

    Ich bin Neu hier und wollte mich mit einer kleinen Frage auch gleich mal vorstellen.

    Ich möchte einen ATMEGA16 zum auslesen und vergleichen eines Bytesignals benutzen. Am einem Port (zB Port C) soll ein Bitzustand anliegen den ich von einer externen Schaltung bekomme. Dieser Wert soll dann mit einem "Festen Wert" im Nichtflüchtigen Spiecher verglichen werden.

    Ziel ist es bei Gleichheit des Signals eine LED zum leuchten zu bringen. Das mit der LED bekomm ich mittlerweile hin , doch habe ich Probleme den Port auszulesen und dann mit einer Speicherstelle zu vergleichen.

    Zudem soll das Projekt erweitert werden um mehrere Bytes (so um die 30) mit der gleichen Anzahl an Bytes im Speicher zu vergleichen.


    Ich hab schon viele Beiträge in diesem Forum gefunden aber keinen der sich so mit Diesem Thema beschäftigt.


    Für Hilfe wäre ich dankbar .


    Gruß

    Chris

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2006
    Beiträge
    16
    Hallo Chris,

    Pseudocode
    Code:
    ... blabla
    .. blabla
    Dim VergleichsVariable As Eram Byte ' Eeprom-Variable .. muss natürlich erst geschrieben werden
    Dim Temp As Byte
    Config Portc = Input   ' Eingangsport
    Config Portd = Output  'da hängen Deine LED's dran
    
    Do
         Temp=Pinc
         If Temp = VergleichsVariable Then
              Portd.0 = 1           ' Gleich, dann LED an
         Else
              Portd.0 = 0           ' Ungleich, LED aus
         End If
    Loop
    Gruß.
    Rainer

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    14.04.2006
    Beiträge
    10
    Danke für die schnelle Antwort

    Ich hab zu den Code noch ne Frage.

    In diesem Fall handelt es sich ja um 1 Byte das am Port C anliegt. Aber mal angenommen ich will eine Zeichenkette vergleichen....beispielsweise 10 Byte. Wie kann ich das realisieren ? Ich hab ja nur 8 Eingänge also kann ich quasi nur 1 Byte auslesen...oder ?


    Gruß

    Chris

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2006
    Beiträge
    16
    Ja, so kannst Du nur 1 Byte auf einmal einlesen.
    Ansonsten musst Du Dir ein Protokoll überlegen und die Daten seriell abfragen/lesen. Das muß die angeschlossene Hardware dann aber auch können, da die sich ja "unterhalten" müssen um zu wissen, wann wer sendet oder wann ein neues Byte anliegt .. nicht mehr so trivial. Damit baust Du mehr oder weniger den Druckerport eines PC's nach (zumindestens in Ansätzen).
    Vielleicht ginge was mit 2 Ports des AVR's .. einer bekommt die Daten, der andere steuert den Datenstrom des angeschlossenen Geräts.
    Kommt aber auf Deine Anwendung an.
    Noch besser wäre es natürlich, die angeschlossene Hardware könnte ein Standardprotokoll (I2C/TWI, RS232, RS485, SPI, usw.).

    Gruß.
    Rainer

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    14.04.2006
    Beiträge
    10
    OK... hab ich verstanden.

    Wenn ich die 10 Byte seriell auf einem Pot einlesen würde (geht doch mit diesem "USART") , dann könnte ich die doch an eine Andere Stelle im Speicher schreiben und sie dann mit dem festen Wert im Speicher vergleichen. Wäre doch eine Möglichkeit..oder ?


    Gruß

    Chris

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    01.02.2006
    Beiträge
    16
    Yo, würde gehen.

    Was mir gerade einfällt ... vll. geht ja was mit Portexpandern und Schieberegistern. Hab' da aber auch keine Lösung parat, wie man damit 10 8-Bit Hardwareausgänge auf einen 8-Bit Eingang schaltet.
    Vll. wissen ja andere was dazu.

    Gruß.
    Rainer

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    14.04.2006
    Beiträge
    10
    Also vom Prinzip her will ich einfach nur ein langes Datenwort mit dem Wert im Speicher des AVR vergleichen. Mein Problem war es ja, eine größere Anzahl Bytes in das EEProm zu schreiben. Das passt ja nun

    Anderererseits wüde ich es dann über die USART versuchen wollen. Wenn jemand nen Beispielcode hat wäre das sehr hilfreich.

    Ich werde mich zudem hier im Forum umschauen.
    Irgendwie muss das doch möglich sein....


    Gruß

    Chris

Berechtigungen

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