Forum: Mikrocontroller und Digitale Elektronik Funktionsumfang ATiny841


von Jens_F (Gast)


Lesenswert?

Hallo,

nachdem ich jahrelang mit PIC-Controllern gearbeitet habe, möchte ich 
jetzt etwas mit dem ATiny841 realisieren.
Dabei sind mir einige Dinge im Vergleich zu aktuellen PICs aufgefallen, 
bei denen ich Euch fragen möchte, ob ich es vielleicht nicht richtig 
erkannt habe:

1. Im Assembler vermisse ich einen Multiplikationsbefehl
2. Die internen RC-Oszillatoren sind recht ungenau, möchte ich eine 
Kommunikation mittels UART aufbauen, dann muss ich einen Quarz nehmen
3. Nicht benötigte Hardwareblöcke lassen sich nicht abschalten
4. Besitzt nur einen 10Bit-ADC

Ich möchte hier keine neuen Konflikte Atmel vs. Microchip entfachen, 
sondern nur einige Zusatzinfos zu meinen Beobachtungen enthalten. Die 
Trolls mögen sich also bitte zurückhalten.

von nachgefragt (Gast)


Lesenswert?

Jens_F schrieb:
> nachdem ich jahrelang mit PIC-Controllern gearbeitet habe, möchte ich
> jetzt etwas mit dem ATiny841 realisieren.
> Dabei sind mir einige Dinge im Vergleich zu aktuellen PICs aufgefallen,

ATiny841 im Vergleich zu welchem PIC?

von Pörk (Gast)


Lesenswert?

Jens_F schrieb:
> 1. Im Assembler vermisse ich einen Multiplikationsbefehl

Dann nimm einfach einen controller mit multipliert? Atmega oder die 
neueren ATtinies.

> 2. Die internen RC-Oszillatoren sind recht ungenau, möchte ich eine
> Kommunikation mittels UART aufbauen, dann muss ich einen Quarz nehmen

Hängt von der Baudrate ab. Du kannst den Oscillator per Software 
trimmen.

> 3. Nicht benötigte Hardwareblöcke lassen sich nicht abschalten

Natürlich geht das.

> 4. Besitzt nur einen 10Bit-ADC

Nimm einen größeren Controller? Du kannst außerdem Mitteln, um die 
Auflösung zu erhöhen. Bei den meisten Anwendungen hat das Analogsignal 
sowieso nicht die erforderlichen 60dB SNR, um die 10 Bit auszunutzen.

von Peter D. (peda)


Lesenswert?

Jens_F schrieb:
> 1. Im Assembler vermisse ich einen Multiplikationsbefehl

Programmiere einfach in C, dann macht der Compiler das für Dich.
Mit 8kB Flash ist C kein Thema.

> 2. Die internen RC-Oszillatoren sind recht ungenau, möchte ich eine
> Kommunikation mittels UART aufbauen, dann muss ich einen Quarz nehmen

Soll es zuverlässig sein, nimm einen Quarz.
Fürs Hobby geht aber auch der interne RC.

Jens_F schrieb:
> 3. Nicht benötigte Hardwareblöcke lassen sich nicht abschalten

Nach dem Reset sind alle IO-Pins in tristate. Sonderfunktionen müssen 
erst eingeschaltet werden.

Jens_F schrieb:
> 4. Besitzt nur einen 10Bit-ADC

Mit MUX auf alle IO-Pins und Gain.

: Bearbeitet durch User
von Andreas B. (bitverdreher)


Lesenswert?

Was hindert Dich eigentlich daran, mal ins Datenblatt zu schauen? Da 
wirst Du sowieso nicht darum herumkommen, wenn Du den Tiny841 
programmieren willst.

von H.Joachim S. (crazyhorse)


Lesenswert?

Ich finde die 441/841 Klasse.
2 Uarts in einem sehr kleinen Controller und zumindest teilweise 
mögliches  routing der Hardware auf die Pins - sehr schön.

von Stefan F. (Gast)


Lesenswert?

> 1. Im Assembler vermisse ich einen Multiplikationsbefehl
Richtig

> 2. Die internen RC-Oszillatoren sind recht ungenau, möchte ich eine
> Kommunikation mittels UART aufbauen, dann muss ich einen Quarz nehmen

Ode reinen Keramik Resonator. Ja, der R/C Oszillator ist nicht genau 
genug. Man kann ihn justieren, aber seine Abhängigkeit von Temperatur 
und Spannung ist trotzdem hinderlich.

3. Nicht benötigte Hardwareblöcke lassen sich nicht abschalten

Im PRR Register kannst du einige Komponenten deaktivieren. Beim ADC 
lohnt es sich am meisten.

4. Besitzt nur einen 10Bit-ADC

Ja. Alle ATmega und ATtiny (die ich kenne) haben einen 10bit ADC. Die 
XMega Serie bietet 12 bit.

von c-hater (Gast)


Lesenswert?

Jens_F schrieb:

> 1. Im Assembler vermisse ich einen Multiplikationsbefehl

Ja außer einen wenigen topaktuellen ATtinys, die auf einem XMega-Kern 
basieren, können die Tinys leider wirklich nicht in Hardware 
multiplizieren. Das ist für eine ganze Menge Anwendungen, für die die 
Tinys ansonsten sehr gut geeignet wären (Regelung, Signalverarbeitung) 
tatsächlich ein recht hinderliches Manko.

Multiplikation in (optimierter) Software kostet etwa Faktor 20 mehr 
Rechenzeit und auch deulich mehr Speicherplatz, weil man, um auch nur 
diesen Faktor zu erreichen, jeder 8x8-Multiplikation eine eigene 
Code-Instanz gönnen muß. Ansonsten ist man eher bei einem Faktor 
irgendwo um die 30.

> 2. Die internen RC-Oszillatoren sind recht ungenau, möchte ich eine
> Kommunikation mittels UART aufbauen, dann muss ich einen Quarz nehmen

Nein, musst du nicht, jedenfalls nicht zwingend. Kommt auf die Anwendung 
an. Es gibt jedenfalls etliche Möglichkeiten, die Verwendung eines 
Quarzes zu umgehen. Alle wurden hier schon hundertfach diskutiert.

> 3. Nicht benötigte Hardwareblöcke lassen sich nicht abschalten

Doch, das allermeiste schon. SPI, I2C, alle UARTs, alle Timer, ADC, AC, 
BOD, interne Referenz, Digitaleingangsstufen aller Pins und auch den 
MCU-Core selber. Was bleibt denn da eigentlich noch über, was sich nicht 
abschalten ließe? Mir scheint fast: GARNIX.

> 4. Besitzt nur einen 10Bit-ADC

Ja. Allerdings sind ADCs mit höherer Auflösung in einem µC meist 
sowieso nur schöner Schein. Es ist nämlich unwahrscheinlich schwierig 
bis fast unmöglich, für ein hinreichend rauschfreies Analogsignal zu 
sorgen, um höhere Auflösungen tatsächlich sinnvoll nutzen zu können, 
wenn so eine Super-EMV-Schleuder, wie sie ein µC-Core darstellt, nur 
Bruchteile von Millimetern entfernt liegt...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

c-hater schrieb:
> Es ist nämlich unwahrscheinlich schwierig bis fast unmöglich, für ein
> hinreichend rauschfreies Analogsignal zu sorgen, um höhere Auflösungen
> tatsächlich sinnvoll nutzen zu können, wenn so eine Super-EMV-Schleuder,
> wie sie ein µC-Core darstellt, nur Bruchteile von Millimetern entfernt
> liegt...

Das Problem lässt sich in den Griff bekommen, indem man während der 
Messung die EMV-Schleuder abschaltet (d.h. schlafenlegt) und sie z.B. 
durch einen Interrupt des ADC nach Abschluss der Messung wieder 
aufweckt.

Es gibt µC-Architekturen, die ohne Interaktion des CPU-Kerns auch den 
Eingangsmultiplexer des ADCs bedienen können, und eine ganze Latte von 
Messungen bei deaktivierter CPU durchführen können.

Und damit sind, ein sauberes restliches Schaltungsdesign vorausgesetzt, 
tatsächlich auch deutlich höhere Auflösungen als 10 Bit realistisch 
verwendbar.

von Maxim B. (max182)


Lesenswert?

Jens_F schrieb:
> nachdem ich jahrelang mit PIC-Controllern gearbeitet habe, möchte ich
> jetzt etwas mit dem ATiny841 realisieren.

Warum ausgerechnet Tiny? Nimm lieber Mega, die sind besser.
Du nimmst Tiny, die ohne MUL sind, statt Mega, die MUL haben, und dann 
beschwerst du dich, daß du kein MUL hast... Solch Witz verstehe ich 
schlecht...

Für durchschnittliche Verwendung könnte ich dir zwei Mega nennen: die 
Reihe 48-88-168-328 (alle mit PA) und die Reihe 324-644-1284 (alle außer 
letzten mit PA, letzte mit P). Man kann damit meistens leben, falls 
nicht, dann nimm Mega2560. Mehr Sortiment brauchst du eigentlich nicht, 
Tiny schon gar nicht.

Ja, ab und zu kommen besondere Wünsche, z.B. DAC 12 bit oder ADC 18 bit. 
Für solche Wünsche gibt es viele externe Chips, das sollte eigentlich 
reichen. Für alltäglichen Gebrauch ist 10 bit ADC mehr als ausreichend.

Große Vorteil von Mega gegen 8 bit PIC ist RAM ohne Banking. Somit sind 
viel größere Arrays gut realisierbar, als bei PIC. Aber das wirst du mit 
Assembler kaum spüren, dafür brauchst du C. Daß C-compiler für AVR 
kostenlos ist und für PIC relativ teuer, das weiß du schon sicher? Das 
ist zweite wichtigste Vorteil von AVR.

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

> 1. Im Assembler vermisse ich einen Multiplikationsbefehl
gibt es beim ATtiny841 nicht. Die neuen 3000/4000 ATmegas haben einen, 
die könntest du dir vielleicht anschauen.

> 2. Die internen RC-Oszillatoren sind recht ungenau, möchte ich eine
> Kommunikation mittels UART aufbauen, dann muss ich einen Quarz nehmen
stimmt so nicht. Die sind sogar sehr genau. Sind für 3,3V ab Werk 
kalibriert. Für andere Ub kann man die per Register nachjustieren

> 3. Nicht benötigte Hardwareblöcke lassen sich nicht abschalten
direkt abschalten geht nicht, aber Sleepmode Zustände kennt er schon

> 4. Besitzt nur einen 10Bit-ADC
hat mehrere Eingänge

> Ich möchte hier keine neuen Konflikte Atmel vs. Microchip entfachen
Atmel wurde von Microchip gekauft

von spess53 (Gast)


Lesenswert?

Hi

>> 1. Im Assembler vermisse ich einen Multiplikationsbefehl
>gibt es beim ATtiny841 nicht. Die neuen 3000/4000 ATmegas haben einen,
>die könntest du dir vielleicht anschauen.

Haben aber den Nachteil, das man sie nicht mehr mit einfachem ISP 
programmieren kann. Die brauchen UPDI.

MfG Spess

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Veit D. schrieb:
>> 4. Besitzt nur einen 10Bit-ADC
> hat mehrere Eingänge


Das "nur" bezieht sich auf die 10 Bit.

von Jens (Gast)


Lesenswert?

spess53 schrieb:
> Haben aber den Nachteil, das man sie nicht mehr mit einfachem ISP
> programmieren kann. Die brauchen UPDI.

Einfacher ist mit nur noch einem Pin UPDI.
Zeit, daß das olle ISP endlich abgelöst wird.

Maxim B. schrieb:
> Warum ausgerechnet Tiny? Nimm lieber Mega, die sind besser.

Pauschale Empfehlungen sind unsinnig weil es immer auf den konkreten 
Einsatzfall ankommt.
Braucht man 2 Uarts in einem schmalen SMD 14Pinner ist der 4/841 meines 
Wissens der günstigste AVR.

von Nase (Gast)


Lesenswert?

Jens schrieb:
> Pauschale Empfehlungen sind unsinnig weil es immer auf den konkreten
> Einsatzfall ankommt.
Genau, mindestens genauso schwachsinnig, wie der ursprüngliche 
Troll-Post, bei dem irgendein PIC mit einem ATtiny verglichen wird.

von spess53 (Gast)


Lesenswert?

HI

>Einfacher ist mit nur noch einem Pin UPDI.
>Zeit, daß das olle ISP endlich abgelöst wird.

Ich habe damit keine Probleme. Aber inwieweit die hier oft oft 
empfohlenen Programmier-Clone damit klarkommen entzieht sich meiner 
Kenntnis.

MfG Spess

von Stefan F. (Gast)


Lesenswert?

Leute, kommt mal wieder runter.

Der TO hat sich einen ATtiny angeschaut und dort sind ihm Unterschiede 
zu den Mikrocontrollern aufgefallen, die er bisher kannte. Nur darum 
geht es.

Warum phantasiert ihr hier dazu, er habe einen falschen µC gekauft und 
bräuchte zwei UART? Warum behauptet ihr, er habe das Datenblatt nicht 
angeschaut?

Ohne Erfahrung mit den Modellen fällt es jedem Anfänger schwer, aus den 
hunderten Seiten die Infos heraus zu ziehen, die er braucht. Da darf man 
doch wohl mal nachfragen, ohne gleich doof angemacht zu werden.

von Andreas B. (bitverdreher)


Lesenswert?

Jens_F schrieb:
> nachdem ich jahrelang mit PIC-Controllern gearbeitet habe

Stefanus F. schrieb:
> Ohne Erfahrung mit den Modellen fällt es jedem Anfänger schwer

fällt Dir was auf?

von Axel S. (a-za-z0-9)


Lesenswert?

Stefanus F. schrieb:
> Der TO hat sich einen ATtiny angeschaut und dort sind ihm Unterschiede
> zu den Mikrocontrollern aufgefallen, die er bisher kannte. Nur darum
> geht es.

Na ja. Ich finde die Liste der Dinge, die er bemäkelt, schon etwas 
merkwürdig. Ob die ALU einen Befehl für die Multiplikation hat, ist ja 
nun wirklich vollkommen nebensächlich. 99% aller Programmierer werden 
Code, der Multiplikationen (oder Divisionen) verlangt, in C schreiben. 
Daß ein Hardware-Multiplier schneller ist, ist unbestritten. Aber wie 
relevant ist das in der Praxis? Und falls es relevant sein sollte, 
spricht das dann nicht lediglich gegen die getroffene Wahl des µC? Denn 
es gibt ja AVR mit einem solchen Multiplier.

Beim 10-Bit ADC sei festzuhalten, daß das in dieser Klasse state of the 
art ist. Die 8-Bit PICs haben mehrheitlich auch nichts anderes. Und das 
"Abschalten von Hardwareblöcken" machen die AVR lediglich etwas anders 
und möglicherweise etwas weniger konsequent als die PICs. Nicht daß es 
praktische Relevanz hätte. Wenn man vom Marketinggeschrei absieht, kann 
man mit einem AVR genauso stromsparende Lösungen bauen wie mit einem 
PIC.

> Warum behauptet ihr, er habe das Datenblatt nicht angeschaut?

Weil man nach der Lektüre des Datenblatts solche Fragen nicht stellen 
würde?

: Bearbeitet durch User
von Maxim B. (max182)


Lesenswert?

Jens schrieb:
> Pauschale Empfehlungen sind unsinnig weil es immer auf den konkreten
> Einsatzfall ankommt.
> Braucht man 2 Uarts in einem schmalen SMD 14Pinner ist der 4/841 meines
> Wissens der günstigste AVR.

Je nachdem.
Ist man ein Profi, hat man ganz bestimmte Vorgaben - dann sollte man 
genau richtige Variante von AVR aussuchen, aus vielen Tausenden 
möglichen.

In Hobby ist das nicht so sinnvoll. Als Hobbyist kann man schwer zu 
große Sortiment parat zu Hause halten. So sollte man am besten ein paar 
möglichst universelle Varianten wählen, sie bestens einstudieren, mit 
allen ihren Problemen - und sie immer für alles benutzen, es sei denn, 
geht gar nicht. Aber für typische Aufgaben reichen Megas 328... und 
1284P... völlig aus.

Das gilt auch für andere Teile. Transistoren, Trimmer usw. Als Hobbyist 
sollte man sich etwas in Sortiment beschränken, um alles besser zu 
kennen.

So denke ich.

Zu viele Varianten - das ist nicht immer gut. Am Ende wird man nur 
Datenblätter lesen und lesen, zu wirklicher Neubau kommt es nie.

: Bearbeitet durch User
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.