Forum: Compiler & IDEs Etwas professioneller arbeiten.


von Moritz B. (busti)


Lesenswert?

Hallo,
Ich bin, wie so viele in letzter Zeit, vor allem durch Arduino & co. auf 
die Mikroprozessorprogrammierung gestoßen. Das ist zwar alles ganz schön 
und gut, allerdings sind die Möglichkeiten des Arduino etwas 
eingeschränkt und vor allem sehr sehr langsam. Das liegt wohl vor allem 
daran dass der Arduino eher einfach als effizient seien soll.

Deshalb habe ich mich in letzter Zeit mehr und mehr mit AVR's im 
allgemeinen beschäftigt und daher den Arduino als ISP verwendet. Nun ist 
die mitgelieferte IDE und bootloader des Arduino allerdings sehr 
schwärfällig und kaum mehr als ein Texteditor mit Buttons zum 
kompilieren und hochladen.

Daher wollte ich hier einmal fragen welche Alternativen es gibt die ich 
nutzen kann ohne dass ich mir weitere Hardware dazukaufen muss. Ich habe 
mit dem Arduino in letzter Zeit vor allem AtTiny's programmiert und 
würde das gerne weiterhin machen.

Vielen Dank für eure Hilfe,
- Busti

: Bearbeitet durch User
von Karl Käfer (Gast)


Lesenswert?

Hallo Moritz,

Moritz Bust schrieb:
> Ich bin, wie so viele in letzter Zeit, vor allem durch Arduino & co. auf
> die Mikroprozessorprogrammierung gestoßen. Das ist zwar alles ganz schön
> und gut, allerdings sind die Möglichkeiten des Arduino etwas
> eingeschränkt und vor allem sehr sehr langsam. Das liegt wohl vor allem
> daran dass der Arduino eher einfach als effizient seien soll.
>
> Deshalb habe ich mich in letzter Zeit mehr und mehr mit AVR's im
> allgemeinen beschäftigt und daher den Arduino als ISP verwendet. Nun ist
> die mitgelieferte IDE und bootloader des Arduino allerdings sehr
> schwärfällig und kaum mehr als ein Texteditor mit Buttons zum
> kompilieren und hochladen.
>
> Daher wollte ich hier einmal fragen welche Alternativen es gibt die ich
> nutzen kann ohne dass ich mir weitere Hardware dazukaufen muss. Ich habe
> mit dem Arduino in letzter Zeit vor allem AtTiny's programmiert und
> würde das gerne weiterhin machen.

Nun, um einen Mikrocontroller zu programmieren, muß man natürlich 
erstmal etwas haben, um Quellcode zu erstellen und zu bearbeiten. Dazu 
kann jeder beliebige Texteditor genutzt werden, auch Windows' Notepad; 
mehr Spaß und Vergnügen machen allerdings Editoren, die zumindest 
Syntax-Highlighting (also das Einfärben bestimmter Schlüsselworte und 
Elemente im Quellcode) beherrschen. Da kannst Du unter Windows Geany, 
UltraEdit oder Notepad++ benutzen, oder aber auch eine integrierte 
Entwicklungsumgebung wie Atmel Studio oder Eclipse, wobei diese zwar 
einen großen Funktionsumfang haben aber ähnlich schwerfällig sind wie 
die Arduino-"IDE". Alte UNIX-Hasen wie ich benutzen Editoren Emacs und / 
oder vi, die man entweder als extrem mächtige Editoren oder etwas 
schlankere IDEs ansehen kann. ;-)

Dann brauchst Du natürlich einen Crosscompiler für die Zielplattform, 
oft und gerne wird hier der avr-gcc aus der GNU Compiler Collection 
benutzt.

Außerdem brauchst Du eine Programmer-Software wie avrdude, um Deine 
Programme über den Arduino-ISP auf Deinen Zielprozessor zu bringen.

Je nach Präferenz können noch ein Debugger und / oder eine Software zur 
Simulation sinnvoll sein.

HTH und liebe Grüße,
Karl

von Guest (Gast)


Lesenswert?

vim gcc make avrdude und n terminal, mehr braucht man eh nicht wenn man 
nicht debuggen kann.

von Moritz B. (busti)


Lesenswert?

Ich komme aus der java Ecke und bin daher schon mit Eclipse & co. 
vertraut...

: Bearbeitet durch User
von Le X. (lex_91)


Lesenswert?

Moritz Bust schrieb:
> Ich komme aus der java Ecke und bin daher schon mit Eclipse & co.
> vertraut...

Dann würd ich auch bei Eclipse bleiben.
Eclipse ist hinreichend flexibel um damit alle möglichen Prozessoren in 
allen möglichen Sprachen zu programmieren.
Immerhin kannst du frei bestimmen, welche Compiler/Tools von Eclipse 
aufgerufen werden.

Nur eines finde ich wichtig:
Bei allem Komfort, man sollte wissen was unter der Haube werkelt.

Also vielleicht mal, nur zu Übungszwecken, ein kleines Projekt aus 3-4 
C-Dateien mittels Konsole und im nächsten Schritt mittels eigenem 
Makefile übersetzen.
Das bringt dich ungemein weiter und du lernst die Tools mit denen du 
arbeitest kennen.
Danach würd ich aber wieder zum Editor (oder IDE) greifen.

von Moritz B. (busti)


Lesenswert?

Wo kann ich dann die ganzen Einstellungen vornehmen? Fusebits etc.

von Klaus I. (klauspi)


Lesenswert?

Schau Dir mal LunaAVR an. Ist relativ simpel, aufgeräumt und einfach zu 
erlernen ohne Leistungseinbussen.

von Guest (Gast)


Lesenswert?

Moritz Bust schrieb:
> Wo kann ich dann die ganzen Einstellungen vornehmen? Fusebits etc.

Mit avrdude...

von Peter (Gast)


Lesenswert?

Klaus I. schrieb:
> Schau Dir mal LunaAVR an. Ist relativ simpel, aufgeräumt und
> einfach zu
> erlernen ohne Leistungseinbussen.

Bitte den Threadtitel beachten ...

von Scelumbro (Gast)


Lesenswert?

Moritz Bust schrieb:
> Wo kann ich dann die ganzen Einstellungen vornehmen? Fusebits etc.

Eclipse Plugin. Dazu Atmel Toolchain und AVRdue.
http://avr-eclipse.sourceforge.net/wiki/index.php/The_AVR_Eclipse_Plugin

Ich bevorzuge eigentlich auch Eclipse, verwende aber für die AVRs, 
AVRStudio, da on Chip Debugging dort wesentlich komfortabler abläuft. 
Ohne Debugger ist das aber nicht nötig.

Zum Thema "professineller Arbeiten" würde ich aber auch zur Anschaffung 
eines Debuggers, z.B. dem AVR Dragon raten. Kostet zwar um die 50€ aber 
(da sind die Debugger für die Cortex-Mx ARMs von LPC und STM um eine 
Größenordnung billiger), aber die Möglichkeit während des Programablaufs 
in deinen Chip hineinzusehen, ist imho ein riesen 
Komfort-/Effizienzgewinn gegenüber printf/blinky Debug.

von frischling (Gast)


Lesenswert?

Es gibt ein AVR GCC Plugin..

von dunno.. (Gast)


Lesenswert?

Ich benutze auf der Arbeit Eclipse mit GCC für Arms.. Geht alles... Ist 
aber imho nicht toll. Eclipse als Java-Software ist einfach sauig, die 
Toolchain für meinen Debugger ist nicht ganz sauber, es gibt ständig 
Probleme mit der IDE, alles Käse.. Nutze nebenher für Desktops noch 
VisualStudio für .Net Krams, das ist alles deutlich toller, 
integrierter, Nutzerfreundlicher.

Allerdings ist GCC mitm VS dann wieder nicht so doll..


Für AVRs habe ich früher mit AVR-Studio gearbeitet..
Schlimmer als Eclipse isses nicht, aber man kanns imho deutlich besser 
bedienen, die integration ist einfach da, und man muss sie nicht selbst 
frickeln.

von Klaus I. (klauspi)


Lesenswert?

Peter schrieb:
> Klaus I. schrieb:
>> Schau Dir mal LunaAVR an. Ist relativ simpel, aufgeräumt und
>> einfach zu
>> erlernen ohne Leistungseinbussen.
>
> Bitte den Threadtitel beachten ...

Ja, der passt aber absolut nicht. Aber vielleicht hast Du hier Bedenken, 
dass meine Antwort nicht zum Titel des Unterforums passt? Der TO hat 
jetzt Arduino als erste Plattform genannt und wünscht Verbesserungen 
wegen der schlechten Performance.

Wie gesagt ist LunaAVR geeignet schnell eine gute und einfache 
Entwicklungsumgebung für den genannten Anwendungsbereich 
bereitzustellen. Das BASCOM könnte man jetzt auch noch nennen. Hängt 
halt davon ab was der TO eigentlich machen möchte, eine bessere 
"Effizienz" als Arduino sollten beide bieten.

von Falk B. (falk)


Lesenswert?

@ Scelumbro (Gast)

>Zum Thema "professineller Arbeiten" würde ich aber auch zur Anschaffung
>eines Debuggers, z.B. dem AVR Dragon raten. Kostet zwar um die 50€ aber

Heute nicht mehr. Das Atmel-ICE ist unwesentlich teurer, kommt aber mit 
komplettem Gehäuse und und kann deutlich mehr!

von Scelumbro (Gast)


Lesenswert?

Falk Brunner schrieb:
> @ Scelumbro (Gast)
>
>>Zum Thema "professineller Arbeiten" würde ich aber auch zur Anschaffung
>>eines Debuggers, z.B. dem AVR Dragon raten. Kostet zwar um die 50€ aber
>
> Heute nicht mehr. Das Atmel-ICE ist unwesentlich teurer, kommt aber mit
> komplettem Gehäuse und und kann deutlich mehr!

Zumindest stimmst du mir zu, dass ein Debugger sinnvoll ist, oder?

von Falk B. (falk)


Lesenswert?

Ja. Auch wenn "richtige" Männer ohne ihn überleben können ;-)

von Uwe (de0508)


Lesenswert?

Falk Brunner schrieb:
> Ja. Auch wenn "richtige" Männer ohne ihn überleben können ;-)

Danke Falk, das sehe ich auch so !

von Bernd K. (prof7bit)


Lesenswert?

Falk Brunner schrieb:
> Ja. Auch wenn "richtige" Männer ohne ihn überleben können ;-)

Man gewöhnt sich schnell dran :-/

Bei AVR hab ich eigentlich nie einen Debugger vermisst (weil keiner da 
war und weils auch ohne geht wenn man will [und ich wollte, also gings, 
und zwar immer]).

Seit einiger Zeit mach ich ARM und hab nen J-Link, ruck-zuck hab ich 
mich an das Vorhandensein eines Debuggers gewöhnt. Zum Glück weiß ich 
aber immer noch wie man zur Not¹ auch ohne auskommt.

________
¹ Jetzt schreib ich schon "Not", früher wars normal...

: Bearbeitet durch User
von Scelumbro (Gast)


Lesenswert?

Bernd K. schrieb:
> Seit einiger Zeit mach ich ARM und hab nen J-Link, ruck-zuck hab ich
> mich an das Vorhandensein eines Debuggers gewöhnt. Zum Glück weiß ich
> aber immer noch wie man zur Not¹ auch ohne auskommt.

Mir gings ähnlich. Nachdem ich früher gedacht habe, mit printf Debug und 
einem UART-USB Kabel löst man jedes Problem schnell und einfach, hatte 
ich dann mal ein LPCXPresso Board mit Debugger. Und war überrascht wie 
schnell das ging - auch ohne den Code mit printf Anweisungen 
vollzuklatschen. Das tolle in der neuen ARM Welt ist, dass es sogar noch 
als Bonus Semihosting gibt - also printf-Debug direkt über den Debugger.

Von den Möglichkeiten war ich so verwöhnt, das ich mir vor dem nächsten 
AVR Projekt (Restbestände müssen ja aufgebraucht werden) einen Dragon 
besorgt hatte. Leider ohne Semihosting :(

von Lunatic (Gast)


Lesenswert?

Klaus I. schrieb:
> Schau Dir mal LunaAVR an. Ist relativ simpel, aufgeräumt und einfach zu
> erlernen ohne Leistungseinbussen.

Würde Dir auch LunaAVR empfehlen, insbesondere wenn die Aktivitäten im 
Hobbybereich bleiben sollen. Da würde ich mir das C Gerümpel, Make Files 
usw. nicht antun.

http://avr.myluna.de/doku.php?id=de:about

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bernd K. schrieb:
> hab ich mich an das Vorhandensein eines Debuggers gewöhnt

Glaub' mir, das wäre dir beim AVR genauso gegangen, wenn du ihn nur
gehabt hättest. ;-)

von Pete K. (pete77)


Lesenswert?

Moritz Bust schrieb:
> Deshalb habe ich mich in letzter Zeit mehr und mehr mit AVR's im
> allgemeinen beschäftigt und daher den Arduino als ISP verwendet.

Du weisst aber schon, aus welchen Bauteilen ein Arduino besteht?

Wenn Du professioneller arbeiten möchtest, würde ich bei der 
Sourcecode-Verwaltung anfangen (z.B. SVN, GIT)

: Bearbeitet durch User
von Moritz B. (busti)


Lesenswert?

Pete K. schrieb:
> Du weisst aber schon, aus welchen Bauteilen ein Arduino besteht?

Klar...
Ich meinte auch eher die für Hobbybastler gemachte Arduino IDE.
SVN und GIT haben für mich auch mit java immer eine Rolle gespielt.

Lunatic schrieb:
> Würde Dir auch LunaAVR empfehlen, insbesondere wenn die Aktivitäten im
> Hobbybereich bleiben sollen. Da würde ich mir das C Gerümpel, Make Files
> usw. nicht antun

Ich habe nach den ersten Antworten erstmal versucht mir Eclipse 
einzurichten nachdem ich etwas mit AVR-GCC und Avrdude herumgespielt 
habe. Ich denke ich habe das Grundprinzip verstanden.
Dennoch scheint LunaAVR im Moment die bessere Wahl da ich zz. eher im 
Hobbybereich aktiv bin und nicht gleich übertreiben möchte. Allerdings 
werde ich versuchen mich schrittweise an Eclipse oder Atmel Studio 
heranzutasten, sobald ich etwas mehr Zeit dafür finde.
Außerdem habe ich mit Java ein kleines Fable für Micro-Benchmarking 
entwickelt und würde deshalb irgendwann auch gerne AVR-ASM lernen. (Wozu 
den größeren Chip kaufen wenn der kleine es auch kann)

von Stefan F. (Gast)


Lesenswert?

> Wo kann ich dann die ganzen Einstellungen vornehmen? Fusebits etc.

Moritz, schau Dir mal diese Anleitung an, ich glaube, die bringt dich 
weiter:
http://stefanfrings.de/avr_hello_world/index.html

Außerdem google nach "Fusebit Calculator", wegen der Umrechnung in 
hexadezimal-zahlen für das Makefile.

von Falk B. (falk)


Lesenswert?

@ Stefan Us (stefanus)

>> Wo kann ich dann die ganzen Einstellungen vornehmen? Fusebits etc.

In der IDE deiner Wahl, direkt menschenlesbar.

>Außerdem google nach "Fusebit Calculator", wegen der Umrechnung in
>hexadezimal-zahlen für das Makefile.

OMG! Es lebe die Steinzeit!

von Bernd (Gast)


Lesenswert?

Moritz Bust schrieb:
> Außerdem habe ich mit Java ein kleines Fable für Micro-Benchmarking
> entwickelt und würde deshalb irgendwann auch gerne AVR-ASM lernen. (Wozu
> den größeren Chip kaufen wenn der kleine es auch kann)

dafür wird dir der in der IDE enthaltene Editor für die 
Luna-Bibliotheken sicher gefallen, die werden in Assembler programmiert. 
Schön aufgeräumt. Ich habe mit einem Interface angefangen.

von F. F. (foldi)


Lesenswert?

Moritz Bust schrieb:
> Ich habe nach den ersten Antworten erstmal versucht mir Eclipse
> einzurichten nachdem ich etwas mit AVR-GCC und Avrdude herumgespielt
> habe. Ich denke ich habe das Grundprinzip verstanden.

Dann bleib dabei! Denn damit kannst du später auch abseits von AVR 
weiter arbeiten.

von Bernd K. (prof7bit)


Lesenswert?

Falk Brunner schrieb:
> hexadezimal-zahlen für das Makefile.
>
> OMG! Es lebe die Steinzeit!

Buullshit! Glaubst Du jemand will jedes mal umständlich und 
fehlerbehaftet in ner GUI rumklicken wenn er die selbe hex mit den 
selben Einstellungen auf den gleichen Controller brennen will wie letzte 
Woche?

Das wird einmal schriftlich niedergelegt in einer Datei die für Menschen 
wie Maschinen gleicherlei lesbar ist und ich wüsste nicht welches Format 
für Fusebits universeller und praktischer wäre als ihre Hexadezimale 
Darstellung und was für das Brennen ergonomischer wäre als ein Batch 
oder Makefile. Und da man ein Makefile sowieso schon hat ist das der 
beste Platz um auch die Anweisungen fürs Brennen abzulegen.

: Bearbeitet durch User
von UrMensch (Gast)


Lesenswert?

Bernd K. schrieb:
> und ich wüsste nicht welches Format
> für Fusebits universeller und praktischer wäre als ihre Hexadezimale
> Darstellung und was für das Brennen ergonomischer wäre als ein Batch
> oder Makefile.

Schrieb schon oben einer: Steinzeit.

von Falk B. (falk)


Lesenswert?

@ Bernd K. (prof7bit)

>> OMG! Es lebe die Steinzeit!

>Buullshit! Glaubst Du jemand will jedes mal umständlich und
>fehlerbehaftet in ner GUI rumklicken wenn er die selbe hex mit den
>selben Einstellungen auf den gleichen Controller brennen will wie letzte
>Woche?

Das macht man mit einem ELF-File, dort steckt ALLES drin. Ausserdem 
reden wir von Entwicklung, wo man immer was lesen, anzeigen und ändern 
will. Da will ich DIREKT im KLARTEXT sehen, welche Fuse-Einstellungen 
aktiv sind!

>Das wird einmal schriftlich niedergelegt in einer Datei die für Menschen
>wie Maschinen gleicherlei lesbar ist und ich wüsste nicht welches Format
>für Fusebits universeller und praktischer wäre als ihre Hexadezimale
>Darstellung

Jaja, da kannst du dich dem Josefsorden anschießen ;-)

Beitrag "wer kann sich noch an den hex-zeichensatz erinnern?"

> und was für das Brennen ergonomischer wäre als ein Batch
>oder Makefile.

Auch eine IDE kann man konfigurieren und sie macht dann all das auf 
Knopfdruck. Nur ist die (einmalige) Einstellung per IDE um Welten 
einfacher als per kryptischen makefile.

> Und da man ein Makefile sowieso schon hat ist das der
>beste Platz um auch die Anweisungen fürs Brennen abzulegen.

Jaja, für Unix-Neanderthaler.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Falk Brunner schrieb:
> Da will ich DIREKT im KLARTEXT sehen, welche Fuse-Einstellungen aktiv
> sind!

Leider sind die Dinger zuweilen so miteinander verwoben, dass ich
auch dem Ergebnis eines Atmel Studio da nicht übern Weg trauen würde,
ohne die tatsächlichen Bits selbst nochmal verifiziert zu haben.

Die Variante, die Dinger im ELF-File zu deklarieren, ist was anderes,
die finde ich durchaus sinnvoll (deshalb habe ich das ja auch ins
AVRDUDE aufgenommen).

Allerdings muss ich nicht zwanghaft jedesmal an den Fuses rumfummeln.
Klar braucht man das zur Massenprogrammierung bei einem Produkt, aber
während der Entwicklung stell ich die Fuses eh' nur einmal am Anfang
ein.

von Bernd K. (prof7bit)


Lesenswert?

Falk Brunner schrieb:
> Auch eine IDE kann man konfigurieren und sie macht dann all das auf
> Knopfdruck.

Glaubst Du ich installier Eclipse oder Atmelstudio auf nen Automaten der 
zum Flashen da ist und erklär dann den Leuten wie und wo sie erst 
umständlich im GUI rumklicken sollen?

Computer wurden erfunden um programmiert zu werden und dann für die 
Menschen zu arbeiten. Sie wurden nicht erfunden um die Menschen für die 
Computer arbeiten zu lassen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Computer helfen uns, in kürzester Zeit Probleme zu lösen, die wir ohne
sie gar nicht hätten. ;-)

von Falk B. (falk)


Lesenswert?

@ Bernd K. (prof7bit)

>Glaubst Du ich installier Eclipse oder Atmelstudio auf nen Automaten der
>zum Flashen da ist und erklär dann den Leuten wie und wo sie erst
>umständlich im GUI rumklicken sollen?

War davon auch nur EINE SEKUNDE die Rede?
Automatisierung in der Produktion war hier gar nicht gefragt!

von Falk B. (falk)


Lesenswert?

@ Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite

>> Da will ich DIREKT im KLARTEXT sehen, welche Fuse-Einstellungen aktiv
>> sind!

>Leider sind die Dinger zuweilen so miteinander verwoben, dass ich
>auch dem Ergebnis eines Atmel Studio da nicht übern Weg trauen würde,
>ohne die tatsächlichen Bits selbst nochmal verifiziert zu haben.

Wenn es nicht mal Atmel selber schafft, eine fehlerfreie GUI für die 
Fuseeinstellungen hinzubekommen, dann ist wohl alles zu spät.
Ausserdem zeigt es die Fuses als HEX-Wert ZUSÄTZLICH an.

>Allerdings muss ich nicht zwanghaft jedesmal an den Fuses rumfummeln.
>Klar braucht man das zur Massenprogrammierung bei einem Produkt, aber
>während der Entwicklung stell ich die Fuses eh' nur einmal am Anfang
>ein.

Ja, aber dazu will ich sie weder per Hand zusammenfriemeln noch über 
irgendwelche Fuse-Calculators im Netz herausfinden. Machbar ist vieles, 
sinnvoll schon deutlich weniger.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Falk Brunner schrieb:
> Wenn es nicht mal Atmel selber schafft, eine fehlerfreie GUI für die
> Fuseeinstellungen hinzubekommen, dann ist wohl alles zu spät.

Naja, die Übersetzung in verbalen Text finde ich nicht immer wirklich
gelungen.

> Ausserdem zeigt es die Fuses als HEX-Wert ZUSÄTZLICH an.

Mittlerweile, zum Glück.  Das war noch nicht immer so, und da es
früher nicht so war (und da der Studio-Salat eh' bloß auf Windows
läuft :), habe ich das nie benutzt und benutze es auch heute noch
nicht.

von Falk B. (falk)


Lesenswert?

@Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite

>Naja, die Übersetzung in verbalen Text finde ich nicht immer wirklich
>gelungen.

Na dann mach doch einen Verbesserungsvorschlag an Atmel, dort noch 
Piktogramme anzuzeigen ;-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Falk Brunner schrieb:
> Na dann mach doch einen Verbesserungsvorschlag an Atmel, dort noch
> Piktogramme anzuzeigen ;-)

Das wäre dann zumindest Windows-passfähig. ;-)

Nein, die haben eigentlich zu viele verschiedene Dinge auf zu viele
Bits verteilt seinerzeit.  CKSEL0 entscheidet zuweilen mit über die
Taktquelle, während es bei einigen Kombinationen von CKSEL[3:1] dann
eine Erweiterung von SUT[1:0] ist.

Ich geh' deshalb dafür lieber durchs Datenblatt, lese mir die
Anmerkungen zu den einzelnen Bits durch, überlege mir, welche
Takteinstellungen ich nun konkret brauche und wie dafür die Bits
dargestellt werden.  Dann habe ich irgendwann das Lowfuse-Byte
zusammen, da kann ich dann auch gleich den Hexwert eingeben (mache
ich übrigens auch in den Fällen, wo ich das Studio wirklich mal
benutze).

Nur mal so, das ist (aus den XML-Daten rausgezogen) das, was da als
Auswahl steht:
1
Ext. Clock; Start-up time PWRDWN/RESET: 6 CK/14 CK + 0 ms
2
Ext. Clock; Start-up time PWRDWN/RESET: 6 CK/14 CK + 4.1 ms
3
Ext. Clock; Start-up time PWRDWN/RESET: 6 CK/14 CK + 65 ms
4
Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 0 ms
5
Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 4.1 ms
6
Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 65 ms
7
Int. RC Osc. 128kHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 0 ms
8
Int. RC Osc. 128kHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 4.1 ms
9
Int. RC Osc. 128kHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 65 ms
10
Ext. Low-Freq. Crystal; Start-up time PWRDWN/RESET: 1K CK/14 CK + 0 ms
11
Ext. Low-Freq. Crystal; Start-up time PWRDWN/RESET: 1K CK/14 CK + 4.1 ms
12
Ext. Low-Freq. Crystal; Start-up time PWRDWN/RESET: 1K CK/14 CK + 65 ms
13
Ext. Low-Freq. Crystal; Start-up time PWRDWN/RESET: 32K CK/14 CK + 0 ms
14
Ext. Low-Freq. Crystal; Start-up time PWRDWN/RESET: 32K CK/14 CK + 4.1 ms
15
Ext. Low-Freq. Crystal; Start-up time PWRDWN/RESET: 32K CK/14 CK + 65 ms
16
Ext. Full-swing Crystal; Start-up time PWRDWN/RESET: 258 CK/14 CK + 4.1 ms
17
Ext. Full-swing Crystal; Start-up time PWRDWN/RESET: 258 CK/14 CK + 65 ms
18
Ext. Full-swing Crystal; Start-up time PWRDWN/RESET: 1K CK /14 CK + 0 ms
19
Ext. Full-swing Crystal; Start-up time PWRDWN/RESET: 1K CK /14 CK + 4.1 ms
20
Ext. Full-swing Crystal; Start-up time PWRDWN/RESET: 1K CK /14 CK + 65 ms
21
Ext. Full-swing Crystal; Start-up time PWRDWN/RESET: 16K CK/14 CK + 0 ms
22
Ext. Full-swing Crystal; Start-up time PWRDWN/RESET: 16K CK/14 CK + 4.1 ms
23
Ext. Full-swing Crystal; Start-up time PWRDWN/RESET: 16K CK/14 CK + 65 ms
24
Ext. Crystal Osc. 0.4-0.9 MHz; Start-up time PWRDWN/RESET: 258 CK/14 CK + 4.1 ms
25
Ext. Crystal Osc. 0.4-0.9 MHz; Start-up time PWRDWN/RESET: 258 CK/14 CK + 65 ms
26
Ext. Crystal Osc. 0.4-0.9 MHz; Start-up time PWRDWN/RESET: 1K CK /14 CK + 0 ms
27
Ext. Crystal Osc. 0.4-0.9 MHz; Start-up time PWRDWN/RESET: 1K CK /14 CK + 4.1 ms
28
Ext. Crystal Osc. 0.4-0.9 MHz; Start-up time PWRDWN/RESET: 1K CK /14 CK + 65 ms
29
Ext. Crystal Osc. 0.4-0.9 MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 0 ms
30
Ext. Crystal Osc. 0.4-0.9 MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 4.1 ms
31
Ext. Crystal Osc. 0.4-0.9 MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 65 ms
32
Ext. Crystal Osc. 0.9-3.0 MHz; Start-up time PWRDWN/RESET: 258 CK/14 CK + 4.1 ms
33
Ext. Crystal Osc. 0.9-3.0 MHz; Start-up time PWRDWN/RESET: 258 CK/14 CK + 65 ms
34
Ext. Crystal Osc. 0.9-3.0 MHz; Start-up time PWRDWN/RESET: 1K CK /14 CK + 0 ms
35
Ext. Crystal Osc. 0.9-3.0 MHz; Start-up time PWRDWN/RESET: 1K CK /14 CK + 4.1 ms
36
Ext. Crystal Osc. 0.9-3.0 MHz; Start-up time PWRDWN/RESET: 1K CK /14 CK + 65 ms
37
Ext. Crystal Osc. 0.9-3.0 MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 0 ms
38
Ext. Crystal Osc. 0.9-3.0 MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 4.1 ms
39
Ext. Crystal Osc. 0.9-3.0 MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 65 ms
40
Ext. Crystal Osc. 3.0-8.0 MHz; Start-up time PWRDWN/RESET: 258 CK/14 CK + 4.1 ms
41
Ext. Crystal Osc. 3.0-8.0 MHz; Start-up time PWRDWN/RESET: 258 CK/14 CK + 65 ms
42
Ext. Crystal Osc. 3.0-8.0 MHz; Start-up time PWRDWN/RESET: 1K CK /14 CK + 0 ms
43
Ext. Crystal Osc. 3.0-8.0 MHz; Start-up time PWRDWN/RESET: 1K CK /14 CK + 4.1 ms
44
Ext. Crystal Osc. 3.0-8.0 MHz; Start-up time PWRDWN/RESET: 1K CK /14 CK + 65 ms
45
Ext. Crystal Osc. 3.0-8.0 MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 0 ms
46
Ext. Crystal Osc. 3.0-8.0 MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 4.1 ms
47
Ext. Crystal Osc. 3.0-8.0 MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 65 ms
48
Ext. Crystal Osc. 8.0-    MHz; Start-up time PWRDWN/RESET: 258 CK/14 CK + 4.1 ms
49
Ext. Crystal Osc. 8.0-    MHz; Start-up time PWRDWN/RESET: 258 CK/14 CK + 65 ms
50
Ext. Crystal Osc. 8.0-    MHz; Start-up time PWRDWN/RESET: 1K CK /14 CK + 0 ms
51
Ext. Crystal Osc. 8.0-    MHz; Start-up time PWRDWN/RESET: 1K CK /14 CK + 4.1 ms
52
Ext. Crystal Osc. 8.0-    MHz; Start-up time PWRDWN/RESET: 1K CK /14 CK + 65 ms
53
Ext. Crystal Osc. 8.0-    MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 0 ms
54
Ext. Crystal Osc. 8.0-    MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 4.1 ms
55
Ext. Crystal Osc. 8.0-    MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + 65 ms

Das ist einerseits erschlagend viel, andererseits schon so stark mit
Abkürzungen verwurschtelt, dass man es ohnehin nicht versteht, ohne
parallel die exakte Bedeutung im Datenblatt nachzulesen.  Wenn ich
aber schon im Datenblatt bin, dann habe ich von dort meine Bits
schneller zusammen, als ich in dieser fetten Liste meine gewünschte
Einstellung gefunden habe ;), bei der ich am Ende ohnehin nochmal
verifizieren müsste, ob sie tatsächlich auch so passt … gerade eine
schräg eingestellte Fuse kann einem ja mächtig Ärger einhandeln.

von Falk B. (falk)


Lesenswert?

@Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite

>Nein, die haben eigentlich zu viele verschiedene Dinge auf zu viele
>Bits verteilt seinerzeit.  CKSEL0 entscheidet zuweilen mit über die
>Taktquelle, während es bei einigen Kombinationen von CKSEL[3:1] dann
>eine Erweiterung von SUT[1:0] ist.

Mag ja sein, aber es sollte für die Informatik des Jahres 2015 im Rahmen 
des Möglichen liegen, das gescheit zu dekodieren und darzustellen!

>Nur mal so, das ist (aus den XML-Daten rausgezogen) das, was da als
>Auswahl steht:

>Ext. Clock; Start-up time PWRDWN/RESET: 6 CK/14 CK + 0 ms

 . . . . .

>Ext. Crystal Osc. 8.0-    MHz; Start-up time PWRDWN/RESET: 16K CK/14 CK + >65 ms


>Das ist einerseits erschlagend viel, andererseits schon so stark mit
>Abkürzungen verwurschtelt, dass man es ohnehin nicht versteht, ohne
>parallel die exakte Bedeutung im Datenblatt nachzulesen.

Ja, das ist Müll. Kann es sein, dass bei Atmel so viele schlechte 
Praktikanten programmieren? Oder nur Unix-Freaks, die keine Ahnung von 
intuitiven GUIs haben?

>  Wenn ich
>aber schon im Datenblatt bin, dann habe ich von dort meine Bits
>schneller zusammen, als ich in dieser fetten Liste meine gewünschte
>Einstellung gefunden habe ;),

Du kompilierst auch dein Betriebssystem selber. Das machen viele andere 
Leute, mich eingeschlossen, nie ;-)

> bei der ich am Ende ohnehin nochmal
>verifizieren müsste, ob sie tatsächlich auch so passt … gerade eine
>schräg eingestellte Fuse kann einem ja mächtig Ärger einhandeln.

Und eben weil das so ist, ist so ein manuelle Bitfummeln nicht 
sonderlich anfängertauglich!

von F. F. (foldi)


Lesenswert?

Falk Brunner schrieb:
> Auch eine IDE kann man konfigurieren und sie macht dann all das auf
> Knopfdruck. Nur ist die (einmalige) Einstellung per IDE um Welten
> einfacher als per kryptischen makefile.

Das sehe ich auch so.
Vorab. Ich habe mich schon mal mit dem Makefile beschäftigt und erst 
dank Jörg und seinem schönen Programm (Dank an dieser Stelle) bekam ich 
es überhaupt zum laufen. Später habe ich das auch einigermaßen 
verstanden.
Wir hatten das zu zweit versucht und mein Mitstreiter ist ein Ing mit 
Doktortitel, nur falls ihr meint ich wäre zu doof. Aber er hatte das 
auch nicht hin bekommen. Insgesamt habe ich bestimmt 10 Stunden (mit 
Unterbrechungen) gebraucht das ans laufen zu bekommen.
Was ist, wenn ich einen anderen Controller programmieren will? Genau, 
ich brauche wieder ein Makefile.
Ich nehme das Studio und damit klappt alles. Wenn es neue Produkte gibt, 
dann wird mein Programmer gleich automatisch abgedatet. Was will man 
mehr?

Und dann zu den Unkenrufern, das würde alles viel schneller klappen, als 
mit dem Studio.
Die Zeit fürs lernen des kryptischen Zeugs, die rechne mal aufs Studio. 
Ich wette man ist dann mit dem Studio immer noch schneller.
Das erinnert mich so an den Schallplattenhändler: "CD setzt sich 
niiiiemals durch!" Ungefähr ein Jahr später gab es seinen 
Schallplattenladen nicht mehr.^^

von F. F. (foldi)


Lesenswert?

Falk Brunner schrieb:
> Wenn es nicht mal Atmel selber schafft, eine fehlerfreie GUI für die
> Fuseeinstellungen hinzubekommen, dann ist wohl alles zu spät.
> Ausserdem zeigt es die Fuses als HEX-Wert ZUSÄTZLICH an.

Das ist, glaube ich, wieder ein Zeichen dafür, dass die Leute übers 
Studio reden, aber schon ewig nicht mehr mit gearbeitet haben und die 
neuste Version nicht mal kennen.

von F. F. (foldi)


Lesenswert?

Jörg Wunsch schrieb:
> Nein, die haben eigentlich zu viele verschiedene Dinge auf zu viele
> Bits verteilt seinerzeit.  CKSEL0 entscheidet zuweilen mit über die
> Taktquelle, während es bei einigen Kombinationen von CKSEL[3:1] dann
> eine Erweiterung von SUT[1:0] ist.

Das ist ein tolles Beispiel. Diese Einstellungen stehen doch so gar 
nicht mehr im Studio. Da ist das alles viel einfacher und knapper 
gehalten.
Wenn ich mich nicht übers Studio ran getastet hätte, hätte ich sicher 
mehr Probleme gehabt das zu kapieren. Mit dem Studio habe ich die 
Änderungen gemacht und mit dem Minipro habe ich dann die mir damals 
kryptischen Einstellungen angeschaut und dann auch, nach nochmaligem 
lesen des Datenblattes, verstanden.

von F. F. (foldi)


Lesenswert?

Falk Brunner schrieb:
> Du kompilierst auch dein Betriebssystem selber. Das machen viele andere
> Leute, mich eingeschlossen, nie ;-)

Habe ich auch alles hinter mir und das ist schon klasse, wenn ich meinen 
eigenen perfekten Kernel habe.
Immer wird vom Zeitvorteil geredet. Wenn man das erlernen und das 
Ausführen dazu zählt, dann möchte ich mal sehen wie viel vom Zeitvorteil 
noch übrig bleibt. Ich möchte behaupten, dass es unterm Strich mehr Zeit 
braucht.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Falk Brunner schrieb:
> Oder nur Unix-Freaks, die keine Ahnung von intuitiven GUIs haben?

Unix-Freaks?

Kannste doch dort vergessen.  Bis auf die AVR32-Hanseln sind die doch
alle Windows-gestählt.

Man hätte den Kram wohl besser gar nicht so schräg in die Fuses
setzen sollen.  Hat man ja beim Xmega dann auch korrigiert.

In die GUI selbst willst du den Kram ja auch nicht direkt
reinprogrammieren.  Das gab's ja bei AVR Studio 3, da brauchte man
dann für jeden neuen Controller eine neue Binärversion …

F. Fo schrieb:
> die neuste Version nicht mal kennen.

Ich muss sie mir hin und wieder dienstlich ansehen.  Das genügt mir,
sie möglichst schnell wieder abzuschalten und mich effektiveren
Zeitvertreiben zuzuwenden. :-)

Nein, an das Ding werde ich mich wohl für den Rest meines Lebens nicht
mehr gewöhnen.

von Falk B. (falk)


Lesenswert?

@ F. Fo (foldi)

>> Ausserdem zeigt es die Fuses als HEX-Wert ZUSÄTZLICH an.

>Das ist, glaube ich, wieder ein Zeichen dafür, dass die Leute übers
>Studio reden, aber schon ewig nicht mehr mit gearbeitet haben und die
>neuste Version nicht mal kennen.

Die HEX-Anzeige gab es schon in 4.x, und die ist schon mindestens 5 
Jahre alt!

von Falk B. (falk)


Lesenswert?

@Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite

>Unix-Freaks?

>Kannste doch dort vergessen.  Bis auf die AVR32-Hanseln sind die doch
>alle Windows-gestählt.

War ja nur eine Vermutung.

>Man hätte den Kram wohl besser gar nicht so schräg in die Fuses
>setzen sollen.  Hat man ja beim Xmega dann auch korrigiert.

Was lässt sich HEUTE wohle einfacher korrigieren? Das Silizium (vor 
allem das verkaufte) oder die Software?

>In die GUI selbst willst du den Kram ja auch nicht direkt
>reinprogrammieren.  Das gab's ja bei AVR Studio 3, da brauchte man
>dann für jeden neuen Controller eine neue Binärversion …

Das meinte ich ja nicht so. Sondern dass man die Informationen aus dem 
XML-files sinnvoll auf der GUI ANZEIGEN und auswählen kann. Also ein 
Drop Down Box für Oszillatortyp (RC int, RC ext, XO, Crystal) und eine 
für Startup time. Dass man da ein wenig dekodieren und gegenprüfen muss, 
ist halt die Aufgabe für die Programmierer. Dass dazui natürlich auch 
passende Infos in den XML-Files stehen müssen, ist auch klar. (Ich 
vermute mal, das hat man versäumt und hatte keinen Bock, das zu 
korrigieren, damit war eine eindeutig Dekodierung nicht mehr sinnvoll 
möglich).

von F. F. (foldi)


Lesenswert?

Jörg Wunsch schrieb:
> Nein, an das Ding werde ich mich wohl für den Rest meines Lebens nicht
> mehr gewöhnen.

Das ist ja auch ok, wenn man das andere beherrscht, aber wenn du noch 
mal Anfänger wärst, würdest du nicht auch lieber zunächst zum Studio 
greifen, als alles zu Fuß zu machen?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Falk Brunner schrieb:
> Die HEX-Anzeige gab es schon in 4.x

Anzeige ja, aber die Möglichkeit der hexadezimalen Eingabe (und damit
das Herstellen eines "known good state" ohne aufwändiges und
fehlerträchtiges Geklicker) erst ganz am Ende der Studio-4-Ära.

von Stefan F. (Gast)


Lesenswert?

Ich habe seit ca 5 Jahren eine Firmware veröffentlicht, die auch 
kommerziell genutzt wird.

Anfangs hatte ich in Text-form hingeschrieben, wie die Fuses im AVR 
Studio einzustellen sind. Ich hatte exakt die Wortlaute vom AVR Studio 
verwendet. Damals bekam ich jede Woche Rückfragen von Leuten, die damit 
nicht klar kamen.

Dann schrieb ich die Hexadezimal-Werte für alle möglichen Controller ins 
Makefile. Seit dem hat nie wieder jemand nachgefragt.

Nachdem die initiale Entwicklung abgeschlossen ist, halte ich es für 
absolut sinnvoll, die Fuses (bzw den ganzen Compilier+Flash Vorgang) 
durch ein wie auch immer geartetes Script zu automatisieren.

Ich nutze jedoch während der Entwicklung gerne die Fuses GUI vom AVR 
Studio.

Beides hat seine Existenz-Berechtigung. Beides ist sinnvoll.

Wer ich was von Steinzeit und so von sich gibt, irritiert mich.

von m.n. (Gast)


Lesenswert?

Stefan Us schrieb:
> Wer ich was von Steinzeit und so von sich gibt, irritiert mich.

Deine Irritation merkt man deutlich ;-)

Zu professionell und Debugger: mit dem Dragon hatte ich vor längerer 
Zeit gespielt. Was an Debugging mit einem ATmega32 möglich war fand ich 
recht bescheiden. Um die Interna des µC einsehen zu können, mußte das 
Programm gestoppt werden bzw. auf einen Breakpoint laufen. Für 
Echtzeitanwendungen war das richtig schlecht!

Gibt es denn aktuell Möglichkeiten, beim laufenden Programm interne 
Variablen anzusehen, ohne das Programm anzuhalten? Habe ich etwas 
verpaßt?

von Stefan F. (Gast)


Lesenswert?

> Gibt es denn aktuell Möglichkeiten, beim
> laufenden Programm interne Variablen anzusehen

Nicht dass ich wüsste.

von m.n. (Gast)


Lesenswert?

Stefan Us schrieb:
>> Gibt es denn aktuell Möglichkeiten, beim
>> laufenden Programm interne Variablen anzusehen
>
> Nicht dass ich wüsste.

Danke für die Info!
Dann weiß ich allerdings nicht, was am Debugging so zündend sein soll. 
Sicher ist es interessant für einen Anfänger, der zuvor noch nie einen 
µC von innen gesehen hat und im Einzelschritt Änderungen von Registern 
oder Statusflag sehen möchte. Gut zum Lernen, aber wenn es knifflig 
wird, ist es recht mühsam, sich zum vermeintlichen Fehler 
durchzuhangeln.

Anders sieht es bei neueren µCs aus wie z.B. den Cortex-Mx oder diversen 
Teilen von Renesas. Da kann man im laufenden Programm Variable oder 
IO-Register ansehen/ändern. Da ist es eine sehr große Hilfe, wenn dies 
von der verwendeten IDE unterstützt wird (z.B. KEIL, IAR, Renesas).

von Falk B. (falk)


Lesenswert?

@ Stefan Us (stefanus)

>Anfangs hatte ich in Text-form hingeschrieben, wie die Fuses im AVR
>Studio einzustellen sind. Ich hatte exakt die Wortlaute vom AVR Studio
>verwendet. Damals bekam ich jede Woche Rückfragen von Leuten, die damit
>nicht klar kamen.

Logisch. Wenn, denn hätte ich eher einen Screenshot gemacht.
Aber auch das ist nicht so optimal.

>Dann schrieb ich die Hexadezimal-Werte für alle möglichen Controller ins
>Makefile. Seit dem hat nie wieder jemand nachgefragt.

Ein ELF-File wäre noch einfacher.

>Nachdem die initiale Entwicklung abgeschlossen ist, halte ich es für
>absolut sinnvoll, die Fuses (bzw den ganzen Compilier+Flash Vorgang)
>durch ein wie auch immer geartetes Script zu automatisieren.

Das hat auch keiner bestritten.

>Ich nutze jedoch während der Entwicklung gerne die Fuses GUI vom AVR
>Studio.

AHA!!!!

>Wer ich was von Steinzeit und so von sich gibt, irritiert mich.

??? Satzbau? Wort vergessen?

von F. F. (foldi)


Lesenswert?

m.n. schrieb:
> Sicher ist es interessant für einen Anfänger, der zuvor noch nie einen
> µC von innen gesehen hat und im Einzelschritt Änderungen von Registern
> oder Statusflag sehen möchte. Gut zum Lernen,

Dazu fand ich das auch gut und habe sehen können, dass ich das was ich 
zuvor angelesen hatte auch so funktionierte.
Ich weiß nicht, ob in komplexen Programmen ein Debugger hilft, aber wenn 
ich wissen will, ob ich zu einem gewissen Punkt komme, lasse ich eine 
Led leuchten.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

m.n. schrieb:
> Gibt es denn aktuell Möglichkeiten, beim laufenden Programm interne
> Variablen anzusehen, ohne das Programm anzuhalten?

Wie sollte das denn gehen, außer vielleicht durch eine echte
Emulation und Dualport-RAM, bei der der Debugger unabhängig vom
Prozessor auf den RAM zugreift (was schweineteuer ist)?

von Bernd K. (prof7bit)


Lesenswert?

Jörg Wunsch schrieb:
> Wie sollte das denn gehen, außer vielleicht durch eine echte
> Emulation und Dualport-RAM, bei der der Debugger unabhängig vom
> Prozessor auf den RAM zugreift (was schweineteuer ist)?

Bei ARM-Cortexen ist das standardmäßig immer mit eingebaut.

> schweineteuer

J-Link EDU: 50€

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ Bernd K. (prof7bit)

>> Wie sollte das denn gehen, außer vielleicht durch eine echte
>> Emulation und Dualport-RAM, bei der der Debugger unabhängig vom
>> Prozessor auf den RAM zugreift (was schweineteuer ist)?

>Bei ARM-Cortexen ist das standardmäßig immer mit eingebaut.

Dann hat man aber bestenfalls die CPU-Register, aber nicht alle 
Variablen!

>> schweineteuer

>J-Link EDU: 50€

Er meint die Kosten für das Silizium, denn eine Registerbank als Dual 
Port ist hat aufwändiger als Single Port (Wobei viele CPUs sowieso mit 
DualPort Registern arbeiten, um mehr Operationen zu parallelisieren.

von m.n. (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> Wie sollte das denn gehen, außer vielleicht durch eine echte
> Emulation und Dualport-RAM, bei der der Debugger unabhängig vom
> Prozessor auf den RAM zugreift (was schweineteuer ist)?

Einfach ausgedrückt muß das Debug-Interface µC-intern als weiterer 
Busmaster auf den Prozessor selbst, Speicher und IO-Bereich zugreifen 
können.
Bei Renesas geht das ab HSX- und SH-Controllern mit JTAG-Interface. Die 
neuesten RXe können dies auch über die FINE-Schnittstelle erledigen, 
ähnlich wie die Cortexe per SWD.
Das geht schon mit ST-Link und der IAR-Kickstarter Version. Eine feine 
Sache!

Entscheidend dabei ist, daß die IDE diese Funktionen ünterstützt. Bei 
IAR heißt das Schlüsselwort dafür 'Live Watch'. Am besten hat mir das 
bei HEW von Renesas gefallen, da man dort auch eigene Gruppen von 
anzuzeigenden Registern vorgeben kann und ganz gezielt und übersichtlich 
mal Timer, DMAC oder eine UART untersuchen kann.
Will beispielsweise ein Timer nicht laufen, ändert man die 
Konfigurationsbits solange, bis er 'anspringt' - während das Programm 
läuft.

EM:Blocks unterstützt dies ein wenig, indem man Werte von Variablen 
angezeigt bekommt, wenn man bei laufendem Programm den Cursor im Editor 
entsprechend positioniert - auf die Variable schiebt.
Hierzu muß die Variable allerdings einen festen Speicherplatz haben und 
somit global oder static sein. Damit kann man leben.

Beim Abfragen von Touch-Koordinaten per Interrupt hat mir das sehr 
geholfen, da man aktuelle Roh- und Endwerte anzeigen kann. Bewegt man 
den Finger, kann man die Änderung direkt verfolgen. Verwendet man zur 
Skalierung Variable, so kann man auch diese zur Laufzeit anpassen.
Damit ist man sehr produktiv.

von Bernd K. (prof7bit)


Lesenswert?

Falk Brunner schrieb:
>>Bei ARM-Cortexen ist das standardmäßig immer mit eingebaut.
>
> Dann hat man aber bestenfalls die CPU-Register, aber nicht alle
> Variablen!

Doch, das greift bei laufender CPU aufs RAM zu. Kannst live beliebigen 
globalen und statischen Variablen im RAM zuschauen ohne daß das laufende 
Programm in irgendeiner Weise abgebremst oder anderweitig beeinträchtigt 
wird. Mit der passenden Software auf dem PC 
https://www.segger.com/j-link-j-scope.html kann mans sogar schön in 
Echtzeit plotten. Beste Erfindung seit geschnitten Brot.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ Bernd K. (prof7bit)

>wird. Mit der passenden Software auf dem PC
>https://www.segger.com/j-link-j-scope.html kann mans sogar schön in
>Echtzeit plotten. Beste Erfindung seit geschnitten Brot.

WOW! Das sieht ja wirklich gut aus! Und mit dem zusätzlichen Busmaster 
klingt das auch logisch.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bernd K. schrieb:
> ohne daß das laufende Programm in irgendeiner Weise abgebremst oder
> anderweitig beeinträchtigt wird.

Das wiederum wage ich zu bezweifeln.  Man sollte nie „nie“ sagen
(oder eben hier „in irgendeiner Weise“).  Ohne Dualport-RAM geht
es einfach nicht ohne Ausbremsen.  Kann allerdings sein, dass sich
(je nach Anwendungsfall) das Ausbremsen in einem Bereich bewegt, wo
es dich wenig stört.  Aber manchmal sind auch zwei oder drei
zusätzliche Takte nicht tolerierbar, und oft genug sind Variablen
ohehin nicht an definierten Speicherplätzen abgelegt, sondern mal
in diesem, mal in jenem Register.  Dann hilft es auch nicht viel,
wenn der Debugger zwischenzeitlich auf den RAM zugreifen kann.

von Falk B. (falk)


Lesenswert?

@Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite

>> ohne daß das laufende Programm in irgendeiner Weise abgebremst oder
>> anderweitig beeinträchtigt wird.

>Das wiederum wage ich zu bezweifeln.  Man sollte nie „nie“ sagen
>(oder eben hier „in irgendeiner Weise“).  Ohne Dualport-RAM geht
>es einfach nicht ohne Ausbremsen.

Stimmt!

>  Kann allerdings sein, dass sich
>(je nach Anwendungsfall) das Ausbremsen in einem Bereich bewegt, wo
>es dich wenig stört.

Darauf wird es hinauslaufen. Das Debugmodul darf den anderen 
Busteilnehmern halt nicht dazwischen funken. Vielleicht steckt 
ausreichend Intelligenz drin, um sichere Lücken im Buszugriff ausnutzen 
zu können.

>  Aber manchmal sind auch zwei oder drei
>zusätzliche Takte nicht tolerierbar, und oft genug sind Variablen
>ohehin nicht an definierten Speicherplätzen abgelegt, sondern mal
>in diesem, mal in jenem Register.

Naja, globale Variablen eher nicht. Nichtstatische lokale Variablen sind 
in diesem Fall sowieso nicht gefragt.

> Dann hilft es auch nicht viel,
>wenn der Debugger zwischenzeitlich auf den RAM zugreifen kann.

Doch doch. Ausserdem geht auch auch um das Monitoring von IO-Registern. 
Wobei dort bestimmte "heiße" Register eher nicht überwacht werden 
können, wenn ein Zugriff von denen Hardwareaktionen auslöst (UART Daten 
etc.)

Trotzdem sieht das schon recht nett aus!

von m.n. (Gast)


Lesenswert?

Jörg Wunsch schrieb:
> Bernd K. schrieb:
>> ohne daß das laufende Programm in irgendeiner Weise abgebremst oder
>> anderweitig beeinträchtigt wird.
>
> Das wiederum wage ich zu bezweifeln.  Man sollte nie „nie“ sagen

Vermutlich werden je nach Zugriff (und µC) 10 - 50 ns benötigt. Dies 
aber nur für die ausgewählten Variablen ein paar Mal pro Sekunde und 
auch nur dann, wenn ein gleichzeitiger Zugriff über den betreffenden Bus 
stattfindet. So bremst ein Zugriff aufs RAM nicht die Zugriffe aufs 
Flash-ROM oder die Peripherie aus und umgekehrt.

Aber das ist doch Alles Kleinkram im Gegensatz zu einem Debugger, der 
auf einen Breakpoint läuft und den µC komplett stoppt. In einer realen 
Anwendung kann dann ein Antrieb ungebremst auf den Anschlag fahren oder 
ein geöffnetes Luftdruckventil die Meßvorrichtung zum Platzen bringen.

Ein Knackpunkt sind allerdings IO-Register, die allein durchs Lesen ggf. 
ein Interrupt-Flag löschen, wie zum Beispiel beim STM32F4 der Zugriff 
auf ein Capture-Register eines Timers. Wenn so etwas passieren kann, muß 
man das entsprechend beachten.

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.