Forum: Mikrocontroller und Digitale Elektronik 8 bit oder 16 bit


von Qqqqqqq A. (spaceeagle)


Lesenswert?

Nur mal kurz ne Frage
Controller 8 Bit Datenbuss ist es da ohne Probleme möglich
rechenoperationen wie zb x=277+1604 auszuführen oder brauche ich da
schon einen 16 Bitz Controller?

Unabhängig davon was sind gute Alternativen zum Atmega8 bzw. Atmega16
als 16Bit Version ?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Datenbusbreite ist nicht ausschlaggebend.
Entscheidender ist die Größe der von der CPU bzw. der darin enthaltenen
ALU verarbeitbaren Daten.

Eine reine 8-Bit-CPU muss also für eine Addition wie die angegebene
mehrere Schritte durchführen (sprich: Du musst dafür ein Programm
schreiben), während eine CPU mit "breiterer" ALU etc. das mit einer
Maschineninstruktion erledigen kann.

Die Datenbusbreite kommt hier nur als Geschwindigkeitsfaktor ins Spiel;
auf einem 8-Bit-Datenbus benötigt die Übertragung von 16-Bit-Werten
logischerweise doppelt so lange wie auf einem 16-Bit-Datenbus.

Es gab sogar 32-Bit-Prozessoren mit 8-Bit-Datenbus (68008). Wobei sich
hier die Geister spalten, ob 68000/68008 als 32-Bit-Prozessoren zu
bezeichnen sind; die Register und verarbeiteten Operanden sind
jedenfalls 32 Bit breit, auch wenn's die (für den Programmierer eh
nicht direkt wahrnehmbare) ALU nicht ist.

Natürlich lassen sich auch mit 8-Bit-CPUs wie der AVR-Reihe
32-Bit-Berechnungen und sogar Floating-Point-Berechnungen durchführen,
sie benötigen nur mehr Maschineninstruktionen als eine 16- oder
32-Bit-CPU dafür benötigen würde.

Man stelle sich vor, daß das nicht möglich wäre; dann hätten all' die
Homecomputer aus den 80ern nicht rechnen können ... das waren nämlich
vor VC Amiga und ST fast alles reine 8-Bit-Rechner.


Eine 16-Bit-Alternative zu den AVRs ist die MSP430-Familie von TI; eine
recht reizvolle 32-Bit-Alternative sind die verschiedenen ARMe von den
verschiedensten Herstellern (Atmel mit den AT91SAM7Sxxx, Philips mit
den LPC2xxx und etliche andere).

von Hannes L. (hannes)


Lesenswert?

Ein AVR kann das rechnen. Man nimmt das Carry-Flag als Übertrag.

 add Wert1_L,Wert2_L    ;Beide Low-Bytes addieren, Übertrag ins Carry
 adc Wert1_H,Wert2_H    ;Beide High-Bytes und Übertrag addieren,
                        ;neuen Übertrag ins Carry
 ;und so weiter, wenn die Zahlen mehrere Bytes haben...

Mit 16-Bit-MCs kenne ich mich nicht aus, sorry...

...

von Unbekannter (Gast)


Lesenswert?

@HanneS:

Kennst Du einen, kennst Du alle...

von Hannes L. (hannes)


Lesenswert?

@Unbekannter:

> Kennst Du einen, kennst Du alle...

Im Prinzip ja, aber nur, wenn man sich auch damit beschäftigt. Und ich
beschäftige mich damit nunmal nicht.

Die Architektur des (Kerns des) AVRs habe ich so halbwegs im Kopf, von
den 16-Bittern weiß ich nur, dass es sie gibt. Und da ich dieses
"Spezialwissen" nicht habe, werde ich darüber keine (Vergleichs-)
Diskussion mitmachen. Dann stehe ich lieber dazu, dass ich davon
"keine Ahnung" habe... ;-)

Bit- & Bytebruch...
...HanneS...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.