Forum: Mikrocontroller und Digitale Elektronik AVR -> STM8/32. Was ist anders? Was zu beachten? Was benötigt?


von Antoli B. (allister)


Lesenswert?

Hallo,

immer wieder bekomme ich zu hören, "geh auf stm32" oder "nimm was 
vernünftiges wie einen stm32" usw.

Alles was ich bisher verstanden habe ist, das die 32Bit statt 8Bit 
sind/haben.

Ich habe ein lerndefizit. Ich verstehe was man mir "erklärt" aber 
beschreibungen z.b. verstehe ich nicht wirklich.

Was ich jedoch auch bisher gesehen habe ist das der Code mal total 
anders und "komplizierter?" ist!?

Um mir das mal "vorzustellen" kann mir da mal jemand eine beispiel 
machen?

Sagen wir PA1 soll High, dann würde man bei AVR machen:
1
#include <avr/io.h>
2
3
DDRA |= (1<<PA1);     // pin als Ausgang
4
PORTA |= (1<<PA1);    // PIN auf HIGH

Wie würde das nun bei ST sein? Sagen wir direkt für einen 32Bitter, 
sagen wir STM32F0. Halten wir auch "erstmal" an dem fest.

Sinn dieses Thread ist es das ich das ganze ein wenig verstehe und mich 
doch dazu "bewegen" kann auf STMs zu "wechseln".

Was ist "besser"? Also ich habe schon gesehen die können direkt USB und 
DSP, SD-Karte, uvm.

Also können die alles was ein AVR auch kann?  Bzw sogar noch viel mehr?

Bisher bin ich immer mit einem ATMega128A ausgekommen. Das ist so mein 
"standart" uC für alles, ob 1 LED oder nen Display mit Touch.

Welcher "könnte" mein "Standart" STM werden?

Wie Flasht man die? C ist ja eigentlich C. Also sollte die "umstellung" 
ja nicht so schwer werden. Klar haben die ne andere lib als avr aber 
auch so "einfach" oder sagen wir "anwenderfreundlich"?

Was würde ich benötigen? Wie werden die Standart beschaltet? Wie AVRs? 
5V, Abblockkondis und fertig?

Ich würde mich freuen wenn ihr mir da ein wenig behilflich sein könntet. 
Werden die STMs und deren C-Code hier genau so supportet wie auch die 
AVRs?

Danke euch

: Gesperrt durch Moderator
von Holger (Gast)


Lesenswert?

Antoli B. schrieb:
> Sinn dieses Thread ist es das ich das ganze ein wenig verstehe und mich
> doch dazu "bewegen" kann auf STMs zu "wechseln".

Aha. Und dafür sollen wir unsere Zeit opfern??? Dann bleib doch bei den 
AVRs und gut ist... Keiner zwingt dich auf ARM zu wechseln.

Antoli B. schrieb:
> Was ist "besser"?

So ziemlich alles :-) Das versteht man aber nur, wenn man sich einige 
Zeit (bei mir sind es mittlerweile fast 8 Jahre) damit beschäftigt.

Antoli B. schrieb:
> Also können die alles was ein AVR auch kann?  Bzw sogar noch viel mehr?

Ja.

Antoli B. schrieb:
> Bisher bin ich immer mit einem ATMega128A ausgekommen. Das ist so mein
> "standart" uC für alles, ob 1 LED oder nen Display mit Touch.

Wenn dass dein "standart" ist, dann bleib dabei. Kennst die toolchain, 
die Doku, die Macken...

Mein "STANDARD" ist der STM32F030. Billiger als ein AVR und kann davon 
ein Vielfaches.

Antoli B. schrieb:
> Welcher "könnte" mein "Standart" STM werden?

Auch Ingenieure können Rechtschreibung :-)

Antoli B. schrieb:
> Wie Flasht man die?

Liest du bitte selber nach... Falls keine Lust dazu: Lehrgang belegen. 
Kostet zwar, aber wenn man selber nicht die (übrigens hervorragende) 
Doku lesen will...

Antoli B. schrieb:
> Also sollte die "umstellung"
> ja nicht so schwer werden. Klar haben die ne andere lib als avr aber
> auch so "einfach" oder sagen wir "anwenderfreundlich"?

Definitiv. Vieles ist sinnvoller anzusteuern und man merkt dass das 
Design insgesamt den AVRs einiges voraus ist (kein Wunder, ist ja auch 
Jahrzehnte jünger). Unabhängig davon sind auch die AVRs gute uC.

Antoli B. schrieb:
> Was würde ich benötigen?

Irgend ein Demo-Board, da ist schon alles drauf. z.B. diesen hier: 
http://www.st.com/en/evaluation-tools/stm32f0discovery.html

Ansonsten Datenblatt und Reference Manual.

Antoli B. schrieb:
> Wie werden die Standart beschaltet?

Nach Herstellerangaben :-)

http://www.st.com/content/ccc/resource/technical/document/application_note/91/66/2d/8c/f9/b5/47/55/DM00089834.pdf/files/DM00089834.pdf/jcr:content/translations/en.DM00089834.pdf

Antoli B. schrieb:
> Werden die STMs und deren C-Code hier genau so supportet wie auch die
> AVRs?

Na ja, was heisst supportet? Musst schon selber das RefMan lesen, 
verstehen und implementieren können. Wenn die Frage erkennen lässt, dass 
du dich mit der Fragestellung beschäftigt hast, so solltest du auch eine 
hilfreiche Antwort bekommen.

von (º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· (Gast)


Lesenswert?

> #include <avr/io.h>
>
> DDRA |= (1<<PA1);     // pin als Ausgang
> PORTA |= (1<<PA1);    // PIN auf HIGH

IAR & STM8:

#include "iostm8.h"

PA_DDR_DDR1 = 1;
PA_CR1_C11 = 1;    //  Port A, pin 1 is Push-Pull
PA_ODR_ODR1 = 1;

von Peter D. (peda)


Lesenswert?

Grob gesagt, die 32Bitter sind nen Zacken schneller und komplexer, als 
die 8Bitter, das ist alles.

Die ARM-Cortex sind auch nicht aus einer Hand, sondern es gibt mehrere 
bekannte Herstellerfamilien, z.B. ADUCM3, ATSAM3, EFM32, LPC, STM32. Der 
CPU-Core ist gleich, aber in der Peripherie gibt es erhebliche 
Unterschiede.
Daher kann es sein, daß manchmal eine freie Toolchain etwas schwer für 
das gewünschte Target zu konfigurieren ist.

Wenn Du keine Laufzeitprobleme hast oder besondere Peripherie brauchst, 
bringt der Umstieg auf 32Bit nichts.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Der Core im AVR <> Cortex ist im prinzip doch dem Entwickler völlig 
egal.
Einziger Unterschied: Wenn man mit einer 8-Bit CPU mit 32 Bit Zahlen 
rechnet, dann muss man sicherstellen wass kein Interrupt die einzelnen 
8-Bit Zahlen durcheinander würfelt, das kann einer 32 Bit CPU nicht 
passieren.

Ansonsten sind gegenüber dem AVR im STM32 nicht nur viel mehr 
Peripheriemodule, sonderen diese bieten auch weit mehr Funktionalität. 
Und genau das ist der Haupt-Vorteil gegenüber einem AVR.

Alle Hersteller die µC mit Cortex Kern herstellen bieten zudem eine 
komplexere Clock-Struktur. Intern/Extern/Hispeed/Low/RCC usw. Da muss 
man einfach durch.

Die Datenblätter und Reference-Manuals sind schon sehr dick. Jedoch 
Teile, die man nicht braucht (z.B. USB oder Kamera-Interface), solche 
Kapitel braucht man auch nicht lesen.

Wenn man den Clock einer Peripherie nicht einschaltet, dann ist es so 
als wenn die Peripherie nicht existiert - ist auch ein Fehler den man 
gerne macht (z.B. man möchte PortA nutzen und schaltet den Clock dazu 
nicht ein)

: Bearbeitet durch User
von Igor (Gast)


Lesenswert?

Peter D. schrieb:
> Wenn Du keine Laufzeitprobleme hast oder besondere Peripherie brauchst,
> bringt der Umstieg auf 32Bit nichts.

Und das ist mit effizienter Programmierung in >90% der Fälle so.

Holger schrieb:
> Mein "STANDARD" ist der STM32F030. Billiger als ein AVR und kann davon
> ein Vielfaches.

Der eine Typ ist hier, der andere da billiger.
Von ein "Vielfaches können" kann höchstens in Bezug auf die Leistung die 
Rede sein. Wenn man die denn braucht- s.o.

> Lehrgang belegen.
> Kostet zwar, aber wenn man selber nicht die (übrigens hervorragende)
> Doku lesen will...

Genau. Da trifft "Vielfaches" auf jeden Fall zu. Vielfaches lernen 
nämlich. Und wer mal ein AVR-Datenblatt mit einem ARM verglichen hat 
weiss, was da hinsichtlich Übersichtlichkeit und Kürze hervorragt.

> Definitiv. Vieles ist sinnvoller anzusteuern

Vieles ist definitiv komplizierter anzusteuern :)

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Ich nutze die STM32 hauptsächlich weil diese die Peripherie bieten, die 
ich brauchen. Ich lasse den meist mit 8MHz laufen. Und sollte es doch 
eng werden kann ich problemlos auch die PLL dazu nehmen.
Und für kleinere Projekte kommt von da her auch nur ein STM32F0xx in 
Frage, da ich STM32 kenne und keine Lust habe mir einen AVR dafür an zu 
tun.

: Bearbeitet durch User
von grundschüler (Gast)


Lesenswert?

Es ist im Prinzip genau das Gleiche.

Beim Arm muss nur zusätzlich der Port an den Bus zugeschaltet werden:

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);


DDRA |= (1<<PA1);     // pin als Ausgang
beim AVR gibt es nur Eingang und Ausgang, also 1Bit gestzt oder nicht 
gesetzt, Beim Arm sind hier 4Bits die gesetzt werden können, um den Pin 
zu konfigurieren.
GPIOA->CRL |= (0b????<<(PAx*4));


PORTA |= (1<<PA1);    // PIN auf HIGH
ist nahezu identisch - 1bit in ein Register schreiben:
GPIOA->ODR |= (1<<PA1);    // PIN auf HIGH

von Dr. Sommer (Gast)


Lesenswert?

Antoli B. schrieb:
> #include <avr/io.h>
>
> DDRA |= (1<<PA1);     // pin als Ausgang
> PORTA |= (1<<PA1);    // PIN auf HIGH
>
> Wie würde das nun bei ST sein?

z.B. so:
1
#include <stm32f4xx.h>
2
GPIOA->MODER |= GPIO_MODER_MODER1_0; // Pin als Ausgang
3
GPIOA->BSRRL = GPIO_BSRR_BS_1; // PIN auf HIGH

Die Register sind halt anders strukturiert, und es gibt auch mehr 
Optionen (man könnte noch die Geschwindigkeit vom Pin einstellen, oder 
den auf Open-Drain setzen und ggf. Pullups zuschalten). Und vorher muss 
man den Takt vom GPIOA einschalten, sonst tut sich nix:
1
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;

Antoli B. schrieb:
> C ist ja eigentlich C.
Nicht so ganz... Auf AVR ist C doch recht eingeschränkt. z.B. kann es 
aufgrund der Harvard-Architektur keine Funktion geben, die einen char* 
entgegennimmt, welcher du sowohl Pointer auf Flash-Daten, RAM-Daten oder 
EEPROM-Daten übergeben kannst. Die Funktion muss "wissen", in welchen 
Bereich der Zeiger zeigt, und entsprechend zugreifen. Das ist bei den 
ARM's anders, denn aus den 32bits des Pointers weiß die Hardware 
automatisch, auf welchen Bereich sich der bezieht. Das kann die 
Programmierung durchaus vereinfachen.
Hinzu kommt dass viele C-typischen Konstrukte auf dem ARM einfach 
effizienter sind und man sie dort sorgloser nutzen kann 
(Offset/Array-Indizierung und allg. Pointer-Operationen, Shifts um 
variable Bit-Zahlen, Stack-Zugriffe, je nach Modell auch Arithmetik 
(Division, Floating-Point)).

von Antoli B. (allister)


Lesenswert?

Ok, aber so wie ich das hier lese ist STM für mivh totaler Overkill.

Ein bisschen i2c, ein bisschen display (ea dip, also fertige) ein wenig 
i/o, pwm und 1-wire. Ab und an mal 1 - 2 adc aber das war es dann auch 
schon.

Da sollten die AVRs dann doch reichen. Also dafür lohnt der umstieg 
glaube nicht, oder?

von Igor (Gast)


Lesenswert?

Antoli B. schrieb:
> Ok, aber so wie ich das hier lese ist STM für mivh totaler Overkill.

Puh. Jetzt hast Du es herausgefunden. Glückwunsch!
Und glaub mir, Du bist nicht der Einzige dem ein AVR locker langt :)

von W.S. (Gast)


Lesenswert?

Antoli B. schrieb:
> Da sollten die AVRs dann doch reichen. Also dafür lohnt der umstieg
> glaube nicht, oder?

sich lohnen..?
beim Basteln geht das etwas anders. Wenn die AVR's dir für deine 
Projekte ausreichen und wenn du noch genug davon in der Bastelkiste 
hast, dann bleibe bei denen.

Wenn du dich aber nach Nachschub umsehen mußt, dann rate ich dir eben 
doch zu irgendwelchen kleineren Cortexen, davon gibt es so einiges von 
eigentlich allen Herstellern im Pinzahl-Bereich 48..64, was sicherlich 
ein passabler Ersatz für AVR ist.

Und was hättest du davon?
- Pointer, die tatsächlich auf alles zeigen können
- echtes double (bei AVR würde ich mich da verscheißert fühlen)
- bei Cortex M4F (das F ist wichtig) single in Hardware
- ziemlich freie Wahl bei der Arbeitsgeschwindigkeit von fast 0 bis 
typisch 72 MHz oder je nach Typ über 100 MHz
- bei vielen Typen ein fest eingebauter Bootlader
- und das Übliche eben (höher, schneller, weiter... eben weitaus höhere 
Rechenleistung als AVR)

Ob du das nun tatsächlich brauchst, ist ne andere Frage. Aber wenn die 
AVR noch weiter im Preis steigen, wäre das ein echter Grund (wenn ich du 
wäre).

W.S.

von Sebastian V. (sebi_s)


Lesenswert?

Igor schrieb:
> Peter D. schrieb:
>> Wenn Du keine Laufzeitprobleme hast oder besondere Peripherie brauchst,
>> bringt der Umstieg auf 32Bit nichts.
>
> Und das ist mit effizienter Programmierung in >90% der Fälle so.

Es gibt auch im Hobbybereich Leute die mehr als ein paar einfache 
Blinkerschaltungen bauen. Für ein aktuelles Projekt brauche ich z.B. 
schnellen Zugriff auf eine SD Karte. Angestrebte Übertragungsrate sind 
mehrere MB pro Sekunde. Bei den STM32F4 gibts da eine SDIO Peripherie 
und DMA. Viel Spaß mit dem AVR da mitzuhalten.

von Antoli B. (allister)


Lesenswert?

Naja, also ich verstehe das alles was du da geschrieben hast nicht so 
ganz aber mit einem AVR habe ich schon ohne Probleme eine SD Karte 
ausgelesen, die Daten dann an einen VS1053b geschickt, nebenbei noch ein 
eDIPTFT70-ATP bedient, eine Lichtorgel an 3 ADCs ausgelesen und die 
passenden "Farben" dann auf einen 400LED langen ws2812b LED Stripe 
gesendet.

Ob du es glaubst der nicht, mit 8Mhz ging es nicht aber ab 12Mhz ging es 
dann und mit 16Mhz einwandfrei.

Das sollte so in etwa in deine Richtung gehen.

von Antoli B. (allister)


Lesenswert?

Das ganze soll hier aber kein AVR vs. STM shitstorm werden. Die Frage 
war eben ob es sich lohnt. Die Struktur, Code etc ist alles anders, auch 
wenn minimal oder auch mehr. Lohnt es sich also? Meiner Ansicht nach 
Nein, denn, wenn ich für 100 Projekte 99mal einen AVR erfolgreich und zu 
vll. 60/70% auslastung einsetzen kann und nur einmal einen STM benötige, 
je 100 Projekte, dann lohnt sich der umstieg schlicht und ergreifend 
nicht. Alles neu erlesen, lernen etc. pp. für alle 8/9/10 Monate MAL ist 
einfach overkill.

Also AVR4Ever :-P

von Robin S. (der_r)


Lesenswert?

Ich sehe genau drei Gründe, die einen Wechsel rechtfertigen würden.

1.) Man braucht die Leistung: Dazu wurde bereits genug gesagt. Für 
einige anspruchsvolle Projekte durchaus genial. Zugegeben freue ich mich 
aber auch, wenn beispielsweise Icons für ein Grafikdisplay einfach in 
den Flash passen und ich nichts extern ranfrickeln muss.

2.) Microchip könnte die AVR langsam auslaufen lassen, wodurch diese 
immer teurer werden: Auch dazu gabs neulich einen ewig langen Thread. 
Sollte dem so sein, kommt irgendwann der (Preis-)Punkt, an dem man sich 
das überlegen kann. Bis dahin spricht ja aber nichts gegen einen AVR.

3.) Man lernt das Ganze (auch) für den Beruf: Neueinsteigern mit diesem 
Hintergedanken würde ich eher nicht zu einem AVR raten: Wenig 
Verbreitung, deutlich älter und mit (vielleicht) ungewisser Zukunft. 
Hier sind Projekte im Entstehen, die die Leistung auch wirklich brauchen 
und dafür ist ARM die Zukunft.

: Bearbeitet durch User
von Antoli B. (allister)


Lesenswert?

Wie gesagt, kleine logische schaltungen o.ä. nicht großes ausser mein 
Verstärker Projekt aber swlbat da langweilt sich der ATMega128 mit 12Mhz 
noch zu tode.

Steuert ein Display (eDIPTFT43, das hat ja seinen eigenen code und uC) 
über i2c dann noch ein HC06 Modul über RS232 und ein PT2322 Klangregler 
über i2c. Das ist mein bisher größtes Projekt. Dazu kommen noch 6/7 i/os 
das wars.

von Dr. Sommer (Gast)


Lesenswert?

Antoli B. schrieb:
> ganz aber mit einem AVR habe ich schon ohne Probleme eine SD Karte
> ausgelesen, die Daten dann an einen VS1053b geschickt, nebenbei noch ein
> eDIPTFT70-ATP bedient
Du hast also die schwere Arbeit externe Prozessoren machen lassen (die 
am Ende auch ARM's sind)... Bei Nutzung eines Cortex-M hättest du dir 
das Display mit Intelligenz und den Audio-Decoder vermutlich sparen 
können. Eventuell hättest du so Kosten sparen können (für Hobby-Projekte 
natürlich egal). Weniger (Entwicklungs-)Aufwand wär's so aber nicht 
geworden...

Ich persönlich finde es einfach sehr angenehm mit den STM32 zu arbeiten, 
u.a. weil diese jede Menge leistungsfähige Timer haben und man da nicht 
sparen/rumtricksen muss. Auch bei der Rechenleistung kann man aus dem 
Vollen schöpfen und muss nicht jeden Pups optimieren. Wenn ich mir die 
kleineren AVR mit ihren 2 Timern anschaue gruselt es mich regelmäßig ;-)

von Antoli B. (allister)


Lesenswert?

Nunja. Die Displays sind unumgänglich für mich.

1. Sie haben nen schönes Design als irgendnen selbstbau
2. Der Touch ist einfach zu bedienen da "rückgabewerte"
3. Kann ich die ausrangierten von der Arbeit für etwas Kaffeegeld 
mitnehmen. Ich habe das eDIPTFT70ATP (7Zoll Touch MIT Einbaurahmen) für 
2 Pfund Kaffee mitnehmen können.

WARUM dann die Arbeit machen?

Ich habe auch nirgends gesagt das ich alles auf dem uC machen möchte. ;)

Für mich, und für meinen Fall reichen die ATMegas also dicke aus. Wenn 
einer meiner Megas mal an seine grenzen kam hab ich einfach 2 ATMega128 
genommen und die beiden die arbeit einfach "teilen" lassen. Nicht 
elegant aber funktionabel.

Für mich also kommen diese eher nicht in frage. Wenns eine Chain gibt 
die mir den AVR Code auf STM übersetzt dann gerne. Aber alles neu 
lernen, wie gesagt, für 1-2 stk / Jahr lohnt es einfach nicht.

von Antoli B. (allister)


Lesenswert?

Martin schrieb im Beitrag #4913637:
> 3. Aufgabe der bastler- und wechselfreundlichen DIP Gehäuse

Naja also dem muss ich wiedersprechen. Ich mag die "lang"beinigen Käfer 
ja mal garnicht. TQFP32/64 :)

von S. R. (svenska)


Lesenswert?

Antoli B. schrieb:
> Die Frage war eben ob es sich lohnt.

Zusammenfassend:
(a) Du kennst AVR bereits.
(b) Du bist mit AVR zufrieden.
(c) Du willst nichts ändern.

Daher lohnt sich ein Wechsel für dich nicht. Wäre eine der Bedingungen 
nicht erfüllt, wäre ein Wechsel hingegen anzuraten.

von Lothar (Gast)


Lesenswert?

Antoli B. schrieb:
> Die Frage war eben ob es sich lohnt

Ein Umstieg AVR auf STM8 würde sich nur bei Automotive Produkten lohnen. 
Hier gibt es nur die uralten AT90CAN und STM8 sind DIE robusten 8-bit uC 
für diesen Bereich. Und natürlich für ältere Leute die ihre C64 
Assembler Kenntnisse auffrischen wollen die STM8 sind 6502 :-)

Ein Umstieg AVR auf EFM8 würde sich dagegen für jeden lohnen, auch wenn 
das hier keiner lesen will :-)

Eval-Board mit J-Link Debugger und LCD für nur 30 EUR anstatt dem 
überteuertem Atmel-ICE

Viel billiger bei deutlich mehr Leistung z.B. 64k Flash USB 14-bit ADC 
12-bit DAC für 1 EUR

von m.n. (Gast)


Lesenswert?

W.S. schrieb:
> Und was hättest du davon?
> - Pointer, die tatsächlich auf alles zeigen können
> - echtes double (bei AVR würde ich mich da verscheißert fühlen)

Double auf AVR ist mit einem passenden Compiler kein Problem.

> - bei Cortex M4F (das F ist wichtig) single in Hardware
> - ziemlich freie Wahl bei der Arbeitsgeschwindigkeit von fast 0 bis
> typisch 72 MHz oder je nach Typ über 100 MHz
> - bei vielen Typen ein fest eingebauter Bootlader
> - und das Übliche eben (höher, schneller, weiter... eben weitaus höhere
> Rechenleistung als AVR)

Der große Vorteil der STM (o.ä.) ist die SWD-Schnittstelle, über die 
(u.a.) Debugging zur Laufzeit überhaupt erst möglich wird.
Das fehlt beim AVR völlig.

von U.G. L. (dlchnr)


Lesenswert?

Investier' einfach mal die 10EUR für ein NUCLEO-F091RC-Board,
hol' Dir den Keil-Compiler für STM32F0 und STM32L0 (ohne Code 
Einschränkung) von http://www2.keil.com/stmicroelectronics-stm32/mdk und 
teste das Gespann mal ein/zwei Wochen - würde mich wundern, wenn Du 
danach nochmal einen AVR nutzen möchtest ;-).

von S. R. (svenska)


Lesenswert?

m.n. schrieb:
> Double auf AVR ist mit einem passenden Compiler kein Problem.

Welcher Compiler macht das denn?
Die meisten 8 Bit-Compiler rechnen nur mit float, auch wenn man double 
hinschreibt.

von Peter D. (peda)


Lesenswert?

W.S. schrieb:
> - echtes double (bei AVR würde ich mich da verscheißert fühlen)

Dazu braucht man aber erstmal ne Aufgabe, die double benötigt.
Mir fallen da jetzt nur astronomische Berechnungen ein.
Für meine PID-Regler reicht float völlig aus, die ADC/DAC sind ja eh nur 
16Bit.
Und 12-stellige Frequenzmesser sind auch keine Projekte, die oft 
benötigt werden.

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

S. R. schrieb:
> m.n. schrieb:
>> Double auf AVR ist mit einem passenden Compiler kein Problem.
>
> Welcher Compiler macht das denn?

Der Compiler von IAR kann alternativ 'float' oder 'double' rechnen. Die 
Kickstarter Version ist kostenlos und zwar auf 4 K Code beschränkt, 
womit man aber schon Einiges erreichen kann: 
http://mino-elektronik.de/fmeter/fm_software.htm#bsp2

Verwendet man anstelle des Quarzes einen TCXO kann man auch 8-stellige 
Ergebnisse mit hinreichender Genauigkeit erhalten, womit sich dann auch 
dieser Einwand als erledigt betrachten läßt:
Peter D. schrieb:
> Dazu braucht man aber erstmal ne Aufgabe, die double benötigt.

Und bevor sich die Stimmen lautstark melden, daß sei ja alles viel zu 
langsam: eine Division von double/double braucht < 100 µs auf einem 20 
MHz AVR. Um jeden Irrtum auszuschließen: am besten selber testen!

von Peter D. (peda)


Lesenswert?

m.n. schrieb:
> Verwendet man anstelle des Quarzes einen TCXO kann man auch 8-stellige
> Ergebnisse mit hinreichender Genauigkeit erhalten, womit sich dann auch
> dieser Einwand als erledigt betrachten läßt:

Nö.
Ich glaub nicht, daß überhaupt ein nennenswerter Anteil der MC-Bastler 
einen Frequenzmesser basteln will, egal wieviel Stellen.
Früher hatten ja Funkamateure noch Bedarf an solchen Geräten, aber die 
sind inzwischen am Aussterben.
Ich hab nichtmal auf Arbeit nen Frequenzmesser, die 4 Digits am Oszi 
reichen mir voll aus.

Ich suche daher immer noch die Brot- und Butteranwendungen für double, 
die man in der MC-Praxis öfter brauchen kann.

von Holger (Gast)


Lesenswert?

Peter D. schrieb:
> Brot- und Butteranwendungen für double,

Minimierung von Schleppfehlern. Habe ich in drei privaten Projekten 
drin, mit float sind die Fehler am Ende des Messbereiches zu groß.

von grundschüler (Gast)


Lesenswert?

Peter L. schrieb im Beitrag #4915065:
> 3. Verzicht auf bastler/wechselfreudige DIP Gehäuse

ein stm32f103-minimal-"board" mit 40pin Stiftleiste ist genauso 
bastlerfreundlich wie ein AVR mit dip-gehäuse.

von Robin S. (der_r)


Lesenswert?

M. schrieb im Beitrag #4915485:
> 2. Verzicht auf bis 5V Flexibilität
Die allermeisten Pins sind 5V-tolerant. Macht nur noch einen 3V3 Regler, 
der bei vielen Miniboards drauf ist.


> grundschüler schrieb:
>> ein stm32f103-minimal-"board" mit 40pin Stiftleiste ist genauso
> bastlerfreundlich wie ein AVR mit dip-gehäuse.
>
> Ok. Aber es ist (viel) größer und unhandlicher.

Ist es nicht. Du kannst das ja nicht mit einem Tiny45 vergleichen, 
sondern eher mit einem ATmega32. Immerhin hat das Teil enorm viele Pins. 
Außerdem ist schon das drauf, was man sonst extern bräuchte: 
Reset-Taster, Boot-Jumper, Pullups, (Spannungsregler wegen 3V3, siehe 
oben), Abblock-Cs...
Zudem kostet es auch noch weniger als der genannte Mega.

> Vom zusätzlichen Aufwand
> mit "Board" und Stiftleiste ganz abgesehen.
Wer hält dich davon ab, das Teil nicht steckbar direkt zu verlöten, wie 
jedes DIP-Case auch? Ansonsten ist das ein unfairer Vergleich, dann 
musst du beim DIP ja auch einen Sockel verbauen und extra Aufwand 
betreiben...

von member of the inner circle (Gast)


Lesenswert?

Die STMx sind einfach spotbillig für die Leistung.
STM8-Board für unter 1€, STM32F103 für 2,20€, Programmer kostet ähnlich 
viel.

von Lothar (Gast)


Lesenswert?

M. schrieb im Beitrag #4915485:
> Der AVR bietet alle genannten Vorteile

Vielleicht nicht mehr lange wenn man sich die hier für PIC gemachte 
Werbung so ansieht:

Beitrag "Microchip erweitert 8-bit µC Portfolio um PIC16F15386 Familie"

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


Lesenswert?

Lothar schrieb:
> M. schrieb im Beitrag #4915485:
>> Der AVR bietet alle genannten Vorteile
>
> Vielleicht nicht mehr lange wenn man sich die hier für PIC gemachte
> Werbung so ansieht:

[Werbung gesnipt]

Deine Aussage ergibt keinen Sinn. Wieso sollten sich die Eigenschaften 
des AVR auch nur in der geringsten Weise verändern, nur weil Microchip 
noch einen PIC16 Typen auf den Markt wirft?

von Lothar (Gast)


Lesenswert?

Axel S. schrieb:
> nur weil Microchip noch einen PIC16 Typen auf den Markt wirft

Das ist doch gar keine "Werbung" sondern ein "offizieller" Artikel der 
extra hier im "ehemaligen" AVR Forum gebracht wurde :-)

Seit wann ist übrigens das AVR Logo oben links auf mikrocontroller.net 
verschwunden??

> Wieso sollten sich die Eigenschaften des AVR auch nur in der
> geringsten Weise verändern

Ist doch offensichtlich: Wenn AVR verschwindet dann verschwinden auch 
die Eigenschaften.

von grundschüler (Gast)


Lesenswert?

grundschüler schrieb:
> ein stm32f103-minimal-"board" mit 40pin Stiftleiste ist genauso
> bastlerfreundlich wie ein AVR mit dip-gehäuse.

ich muss mich korrigieren. Als - typischer(?) - Bastler setze ich beides 
ein. Nackte dip-avr aber schon lange nicht mehr. Das Gedöns mit 
Kondensatoren und Quarzen tut man sich nicht mehr an. Verwendet werden 
m328-Avr-mini-boards für um die 2€ oder stm32f103-mini-boards für um die 
2€.

Beide werden mit Stiftsleisten gesockelt. Beide können mit 3.3 und 5.0 
Peripherie arbeiten. Einsatzmöglichkeiten und Kosten sind also direkt 
vergleichbar.

Bleibt noch das Problem mit der umständlicheren Programmierung. Wesen 
eines "Programms" ist ja die Vereinheitlichung von Arbeitsschritten. 
Zumindest für die Grundfunktionen - Setzen von Ausgängen/Einlesen von 
Eingängen - ist die Verwendung von Structuren oder Macros. Dabei bietet 
es sich geradezu an, die Macros so zu wählen, dass sie für beide Typen 
gleichermaßen eingesetzt werden können, z.B. pinDIRout(xPort,yPin).


Damit ist dann auch bei der Programmierung Gleichartigkeit gegeben.

von W.S. (Gast)


Lesenswert?

Peter D. schrieb:
> Ich suche daher immer noch die Brot- und Butteranwendungen für double,
> die man in der MC-Praxis öfter brauchen kann.

Das ist ganz gewiß ahängig vom eigenen Berufs- oder Bastel-Feld.

Bei mir kommt sowas, wo sich Restfehler von nur 24 Bit Mantisse eben oft 
genug aufhäufen und dann von den 24 Bit nur noch 20..22 übrig lassen, 
alle nase lang vor. Klar, man kann skalieren und dann mit int64 rechnen 
(viel Spaß bei Divisionen..), aber weitaus angenehmer als derartige 
Workarounds ist es eben, gleich in double zu rechnen.

Aber da wir hier in einem Bastelforum sind: Denk mal an DDS-Berechnung 
für die diversen DDS von AD. Nur so als Beispiel.

Also, es gibt schon die B+B-Anwendungen für double, auch wenn die eher 
nicht in dein Interessengebiet fallen.

W.S.

von S. R. (svenska)


Lesenswert?

W.S. schrieb:
> Also, es gibt schon die B+B-Anwendungen für double, auch wenn die eher
> nicht in dein Interessengebiet fallen.

Sicher, aber die würde ich nicht (mehr) in der 8 Bit-Welt suchen. Auf 
einem kleinen ARM oder MSP430 ist das was anderes.

von W.S. (Gast)


Lesenswert?

S. R. schrieb:
> Sicher, aber..

eben, sehe ich genau so.

W.S.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.