-         

+ Antworten
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: 8-Bit Mikrocontroller?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    02.12.2005
    Beiträge
    57

    8-Bit Mikrocontroller?

    Anzeige

    Hallo,

    kann mir vielleicht mal jemand erklären was es genau mit der Bitzahl von Prozessoren/Controllern auf sich hat? Kann ein 8-bit-Controller in einem Takt 8 Eingänge gleichzeitig auslesen?
    Kann man in einem Takt zwei 8-Bitzahlen addieren? Kann man in einem Takt 2 4-BitZahlen addieren?

    Danke im voraus
    Johannes

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    44
    Beiträge
    2.234
    Hallo,
    Kann ein 8-bit-Controller in einem Takt 8 Eingänge gleichzeitig auslesen?
    Wenn die Eingänge auf einem Port liegen ja:

    in R16,PINB -> dauer 1 Takt

    Kann man in einem Takt zwei 8-Bitzahlen addieren?
    Wenn die Zwei zahlen schon in zwei Registern gespeichert sind ja

    add R16,R17 -> 1 Takt

    Kann man in einem Takt 2 4-BitZahlen addieren?
    4 Bit Zahlen liegen ja auch in 8 Bit Registern, belegen aber nur die untersten 4 Bits womit wohl hier die Antwort zu Frage 2 gilt.

    Ich würde sagen, der Ausdruck 8 Bit Controller kommt davon, daß die Register 8 Bit aufnehmen können, mehr nicht.
    Bei den AVRs gibt es ja nur 8 Bit Register, wenn man größere Zahlen addieren will muß man sie ja in mehrere Register aufspliten.

    Gruß Sebastian

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    02.12.2005
    Beiträge
    57
    vielen Dank für die Antwort!

    "in R16,PINB"

    bedeutet, dass in Register 16 alle 8 anliegenden Signale des Port B geschrieben werden?
    Unter Pin habe ich eigentlich ein "Beinchen" verstanden...

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    44
    Beiträge
    2.234
    bedeutet, dass in Register 16 alle 8 anliegenden Signale des Port B geschrieben werden?
    PINB ist ein (wer häte es gedacht) 8 Bit Register, in dem der Zustand vom PORTB gespeichert ist.

    Je nach AVR Modell sind das bis zu 8 Pins(Beinchen).

    und in R16,PINB kopiert,wie Du schon gemerkt hast, den Inhalt in den R16 Register.

    Gruß Sebastian

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.03.2005
    Beiträge
    141
    8Bit rechner *schmunzel* tja das ist ne lange geschichte... am anfang der computertechnik war man sich noch nicht so ganz grün wie man rechner baut... man war sich nicht mal wirklich darüber einig ob die digital oder analog funzen sollen... deutsche raketentechnik arbeitete zum beispiel mit analogrechnern... die gibt es sogar noch heute, nur nennt die keiner mehr so... die tauchen heute als operationsverstärker auf... tja und da gabs einen der arbeitet im team die die atombome gbaut haben... der war dafür verantwortlich festzulegen wie die rechner gebaut werden sollen, die den mist berechnen sollten den die amis dann auch noch zwei mal locker an lebenden menschen ausprobiert haben... der typ hieß jhon von neumann und der hat in recht anschaulichen sätzen formuliert wie man am einfachsten computer baut.... 1. ein rechner besteht aus midestens eingabe-, ausgabegeräten, rechenwerk, steuerwerk und hauptspeicher, die intern verwendetet signalmenge ist binär codiert (digitalrechner) und so weiter... eine weitere vereinfachung war das der rechner nur worte fester länge verarbeitet... damit war festgelegt wie speicher, register, datenbus usw. organisiert sind also 4 bit zusammengefasst oder 8 bit, oder 16 bit usw. das ist eine der wichtigsten vereinfachungen neben der das programme und daten in einem speicher untergebracht werden und sequentiell verarnbeitet werden... 8 bit rechner heißt also das register, datenbus, ports speicherzellen usw. alle gleich groß sind nämlich 8 bit zu einem byte zusammengefasst... inzischen ist man aber schon etwas schlauer und arbeitet nicht mehr ausschließlich nach der von neuman architektur... AVRs zum beispiel haben eine harvard architektur... die haben getrennte Speicher für Programme und Daten (FLASH und SRAM) ... und die sind auch noch unterschiedlich organisiert flash 16Bit sram 8 Bit ... also ist zum beispiel ein AVR eigentlich gar kein reiner 8 Bit rechner mehr *schmunzel* ... mein tip... ein bisschen geschichte der rechentechnik ist ne ziemlich spannende geschichte *schmunzel*

    Gruß jahn

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    02.12.2005
    Beiträge
    57
    alles klar, vielen Dank, hat mir schon sehr weitergeholfen zum Verständnis!

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    02.12.2005
    Beiträge
    57
    jetzt muss ich doch nochmal das von vorhin aufgreifen:

    Kann man in einem Takt zwei 8-Bitzahlen addieren?


    Wenn die Zwei zahlen schon in zwei Registern gespeichert sind ja

    add R16,R17 -> 1 Takt


    aber wenn ich zu R16 R17 dazuaddiere, dann "sprenge" ich doch damit das Register, das Zielregister müsste größer als 8bit sein, oder warum nicht?

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    44
    Beiträge
    2.234
    aber wenn ich zu R16 R17 dazuaddiere, dann "sprenge" ich doch damit das Register, das Zielregister müsste größer als 8bit sein, oder warum nicht?
    Scharf beobachtet

    Und jetzt ?
    Bei 8 Bit Registern darf man nur Zahlen zusammenrechnen die als Ergebnis höchstens 255 oder 11111111 betragen?
    Zum Glück nicht, sonst wäre das ziemlich langweilig...
    1. Möglichkeit:
    Du mußt als Programmierer sicherstellen das das Ergebnis nicht größer als 255 wird.
    2. Möglichkeit:
    Man geht auf Nummer sicher und bereitet für das Ergebnis zwei Register!
    Das geht etwa so:

    R16 -> Zahl1 HIGH
    R17 -> Zahl1 LOW
    R18 -> Zahl2
    R19 -> ein Hilfsregister
    Damit hast Du für das Ergebnis 2 Register also insgesammt 16 Bit
    Beim AVR gibt es noch sowas schönes wie Statusregister SREG dort gibt es wiederum ein Bit mit dem schönem namen Carry.
    wenn Du jetzt z.B

    add R16,R17 machst, wo R16 255 ist und R17 1 wird R16 "gesprengt" läuft also über...
    er nimmt den Wert 0 an und Carrybit im SREG wird auf 1 gesetzt um Dir mitzuteilen, daß da was übergelaufen ist.
    um das auszunutzen macht man es folgendermaßen:
    add R17,R18 ;addiere R17 mit R18
    ldi R19,0x00 ;lade 0 in R19
    adc R16,R19 ;addiere R16,R19 UND den Carry dazu

    jetzt sieht R16,R17 so aus: 00000001 00000000

    wenn Dich das so genau interessiert, Suche mal im Forum nach dem Assembler Kurs für Anfänger, dort habe ich versucht das alles zu erklären.

    Gruß Sebastian

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    02.12.2005
    Beiträge
    57
    ah, okay, d.h. aber 2 8bit Zahlen kann ich nur in einem Takt addieren, wenn sie zusammen nicht mehr als 11111111 darstellen. wenn doch dann sind mehr Takte notwendig...

    danke, ich werd mir mal den assembler kurs anschauen!

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.03.2005
    Beiträge
    141
    tja, langsam macht es klick *schmunzel* das konzept datenworte fester länge zu verarbeiten stellt eben eine ziemliche vereinfachung dar welche praktisch probleme verursacht wie das "Überlaufen" von speicherzellen... dazu solltest du dir noch mal die bedeutung des Carry-Flags ansehen... der weg ist die verarbeitungsbreite zu erhöhen... E-technischist das einfachste modell mehr verarbeitungsbreite zu bekommen einfach das was man hat zusammenzuschalten... man hat 4 bit register die schaltet man zu 8 bit registern zusammen und der nächste schritt ist die 8 bit zu 16 bit zusammenzuschlten... kaskadieren nennt man das... brutal einen 16 bit controller nehmen um mit größeren werten zu arbeiten oder .... *grins* AVRs haben die fähigkeit einige ihrer 8 bitregister für 16 bit-oprationen zu kaskadieren... da ist es dann möglich auch zwei 8 bit zahlen zu verarbeiten bei denen das ergebnis größer als 8 bit ist... oder sogar 16 bit werte zu verarbeiten ... siehe dazu zum beispiel den Befehl adiw, mul, usw.
    die sache mit dem "in einem Takt" das hat primär erstmal damit nichts zu tun... das problem hat ein 8051 auch und der braucht 12 Takte... diese 1-Takt-geschichte hat was mit der inneren Architektur der AVRs zu tun (RISC mit full static opcodes)

    CU Jahn

+ Antworten
Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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