Forum: Mikrocontroller und Digitale Elektronik Wie schnell startet ein Atmega328p?


von Olli Z. (z80freak)


Lesenswert?

Aktuell nurze ich einen Atmega328 auf einem Arduino Board mit 
entsprechendem Bootloader. Der verzögert den Start schon erheblich und 
für eine besondere Anwendung wäre ich drauf angewiesen das der Chip 
binnen weniger (max 10) Millisekunden läuft. Der muss nix grosses 
machen, nur eine Reihe von LEDs ansteuern.

Das Problem ist, das dies selten ausgelöst wird und ich die dafür zur 
verfügung stehende Schaltleitung (12V=, max. 0.5A) nutzen wollte. 
Ansonsten müsste ich eine eigene Stromversorgung herstellen und mich um 
Stromsparmodi, aufwachen, etc. kümmern. Ginge zur Not, ist aber nicht so 
leicht integrierbar.

Hatte daher schon überlegt die Ansteuerung mit diskreter Elektronik zu 
machen, aber das wird dann doch recht aufwendig, weil der Arduino 
bestimmte Muster erzeugt.

von Werner (Gast)


Lesenswert?

Dann wirf den Bootloader weg und programmier es so rein. Dann werdenm 10 
ms ausreichend sein.

Oder modifiziere den Bootlader so, dass er nur bei einem Tastendruck 
(gedrückt beim Anlegend er Versorgungspannung) etwas macht und ansonsten 
direkt weiter ins Hauptprogramm springt. Am besten ohne dieses mittels 
CRC oder sonstiges zu Prüfen, denn das dauert dann zu lange.

Dann musst Du wohl so oder so einen Programmieradapter haben. Ist der 
vorhanden?

Werner

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Werner schrieb:
> Dann werdenm 10 ms ausreichend sein.
Das kommt sehr auf die Taktquelle und die Versorgung an.
10ms werden reichen, wenn der Quarz schnell anschwingt, die 
Versorgungsspannung schnell ansteigt und auch der Rest passt. Aber wie 
üblich lohnt sich hier ein Blick ins Datenblatt. Hier speziell die 
Kapitel 15. und 13.2.2.

Werner schrieb:
> direkt weiter ins Hauptprogramm springt. Am besten ohne dieses mittels
> CRC oder sonstiges zu Prüfen
Wozu eigetnlich sowas? Ich prüfe keines meiner "Hauptprogramme" in einem 
µC beim Startup mittels einer CRC. Und ich habe totzdem noch keinen 
Ausfall. Wer sollte im Zweifelsfall den Prüfer prüfen? Denn der sitzt ja 
im gleichen Flash...

: Bearbeitet durch Moderator
von Einer K. (Gast)


Lesenswert?

Viele Arduinos haben Resonatoren drauf.
Dann besteht Hoffnung.

Alternativ: Interner Takt.

von Peter D. (peda)


Lesenswert?

Der Bootloader muß raus oder deaktiviert werden und den internen 
RC-Oszillator als Takt.

von Toni Tester (Gast)


Lesenswert?

Lothar M. schrieb:
> Werner schrieb:
>> direkt weiter ins Hauptprogramm springt. Am besten ohne dieses mittels
>> CRC oder sonstiges zu Prüfen
> Wozu eigetnlich sowas? Ich prüfe keines meiner "Hauptprogramme" in einem
> µC beim Startup mittels einer CRC. Und ich habe totzdem noch keinen
> Ausfall. Wer sollte im Zweifelsfall den Prüfer prüfen? Denn der sitzt ja
> im gleichen Flash...

Ist z. B. im Automotivebereich schon seit Jahrzehnten Usus, um z. B. 
Bitkipper auf Grund von EMV-Einwirkungen abzufangen - eben so ein 
Funktionales Sicherheitsthema (auch wenn es damals noch nicht so hieß).
Sprich, das Ganze dient der Absicherung gegen Einzelfehler - wenn 
natürlich der gesamte Flashbereich kompromittiert ist, ist's irgendwann 
aus. Aber dann ist so etwas ja i. A. nur eine einzelne Maßnahme von 
mehreren - kommt eben immer auf die Funktionalität, das geforderte 
Sicherheitslevel usw. an.

von Olli Z. (z80freak)


Lesenswert?

Lothar, die zitierte Passage aus dem Datenblatt ist der Schlüssel, 
vielen Dank! Die "0ms" würden mir schon gefallen :-)
Also programmieren über ISP ist angesagt und dabei würde dann die 
Arduino IDE den Bootloader nicht wieder mit draufschreiben?! Einen 
ISP-Adapter habe ich jedenfalls, aber noch nie genutzt wenn ich ehrlich 
bin. Hab immer den Komfort von USB verwendet.

Dann ist die Startzeit auch noch dem einschwingen geschuldet und das 
geht offenbar mit einem RC-Glied schneller als mit einem Quarz (wusste 
ich auch noch nicht, hätte ich eher umgekehrt vermutet...). Scheinbar 
muss man ein paar Fuse-Bits umdrehen. Wie man das in der IDE macht muss 
ich mir noch raussuchen. Meine Anwendung wäre jetzt wohl nicht so 
timingkritisch das ich unbedingt einen Quarz bräuchte, also könnte ich 
mit einem intern erzeugten 16MHz Takt gut leben.

Ok, ein hauptpunkt für die "lange" Startzeit ist wohl die 
Betriebsspannung. Die muss stabil sein, was einfach durch warten 
erreicht wird. Und wenn ich es richtig gelesen habe, wird beim Arduino 
der Brown-Out ausgeschaltet. Dieser muss dann wohl an, damit der Chip 
nicht Amok läuft. Da ich ja ohnehin irgendwie aus 12V, 5V machen muss 
bietet es sich ja an einen Spannungsregler zu nehmen (oder zu entwerfen) 
der den RESET des Atmega so ansteuert, das dieser erst high wird, wenn 
die Ausgangsspannung stabil ist und sobald diese absinkt, den Chip 
entweder stromlos macht, oder wenigstens RESET auf low zieht.

Das wäre bei meinem geplanten Einsatz wichtig, denn diesen 
Zustandswechsel habe ich öfters.

: Bearbeitet durch User
von Einer K. (Gast)


Angehängte Dateien:

Lesenswert?

Olli Z. schrieb:
> Also programmieren über ISP ist angesagt und dabei würde dann die
> Arduino IDE den Bootloader nicht wieder mit draufschreiben?!

Man kann es richtig machen, oder auch eben falsch machen.


Hier mal eine Konfiguration für Standalone ATMega328p.
evtl wirst du sie noch für deine Zwecke anpassen müssen

von Bastler (Gast)


Lesenswert?

Und dann gäbe es da auch noch die Möglichkeit in den 10ms ein 
Kondensator zu laden der dann den 328p auch lange genug versorgen 
kann...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Toni Tester schrieb:
> Ist z. B. im Automotivebereich schon seit Jahrzehnten Usus
Da sag ich jetzt mal besser nichts zu...
Oder doch: nicht alles, was im Automobilbereich "Usus" ist, ist auch gut 
oder sinnvoll. Mir fällt da was zum Thema "Diesel" ein. Sowas scheint 
dort auch "Usus" zu sein.  :-/

> um z. B. Bitkipper auf Grund von EMV-Einwirkungen abzufangen
Jetzt kann es aber durchaus sein, dass nicht das Flash korrumpiert wird, 
weil dort die Ladung ja "gefangen" ist, sondern viel eher, dass ein 
simples Bit in einem Register umkippt...

Olli Z. schrieb:
> Dann ist die Startzeit auch noch dem einschwingen geschuldet und das
> geht offenbar mit einem RC-Glied schneller als mit einem Quarz (wusste
> ich auch noch nicht, hätte ich eher umgekehrt vermutet...).
Eigentlich logisch, denn ein Quarz muss erst mal in Schwingung kommen. 
Dafür reicht einmal "Anschubsen" nicht aus, das muss sachte gehen, sonst 
kommt zu viel Energie in den Quarz und er schwingt auf ungewollten 
Frequenzen.

Ein Kondensator muss aber nur 1x über die Schaltschwelle des Oszillators 
geladen werden und kann dann über den Widerstand sofort rückgekoppelt 
werden.

von Hans M. (Gast)


Lesenswert?

Olli Z. schrieb:
> also könnte ich
> mit einem intern erzeugten 16MHz Takt gut leben.

Das will ich sehen. :-P

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

SBR SREG, TURBO

;)

von Puls Ochsi Meter (Gast)


Lesenswert?

Hans M. schrieb:
> Olli Z. schrieb:
>> also könnte ich
>> mit einem intern erzeugten 16MHz Takt gut leben.
>
> Das will ich sehen. :-P

Kannst Du nicht -wegen der Interferenzen mit der schnellen Atmung.

von Codix (Gast)


Lesenswert?

Ohne Adruino, den kein Mensch braucht, startet mein ATMega32 nach rund 
80 µs.
Dein 328 sollte bei 8 MHz internem Takt, in etwa die gleiche Zeit 
benötigen.
Das ganze Bootloader Gedöns ist aus meiner Sicht völlig unnötig.
Benutze den ISP und gut.

von c-hater (Gast)


Lesenswert?

Olli Z. schrieb:

> Dann ist die Startzeit auch noch dem einschwingen geschuldet und das
> geht offenbar mit einem RC-Glied schneller als mit einem Quarz (wusste
> ich auch noch nicht, hätte ich eher umgekehrt vermutet...).

Tja: da fehlt dir offensichtlich grundlegende Bildung (allerdings auf 
Hochschulniveau, das Fehlen dieses Wissens wäre also nur dann schlimm, 
wenn du eine naturwissenschaftliche Hochschulbildung hättest).

Also grobe Daumenformelfassung des Sachverhaltes: Je genauer ein 
Oszillator sein soll, desto höher muss seine sog. "Güte" sein. 
Blöderweise hat aber gerade diese Güte auch wieder den Charakter einer 
Zeitkonstanten, bestimmt also die "Geschwindigkeit", mit der das 
schwingfähige Gebilde auf Änderungen seiner Umwelt reagieren kann.

Eine hohe Zeitkonstante ist hier gut und nützlich bezüglich der 
Einhaltung der Sollfrequenz, denn die soll ja eben möglichst konstant 
und unabhängig von Umwelteinflüssen sein. Sie ist aber extrem störend 
für den Extremfall der Sprungantwort des Systems auf das Zuschalten der 
Spannung, die zwar einerseits ihren Betrieb überhaupt erst ermöglicht, 
aber andererseits natürlich die krassest denkbare Änderung für die 
Umweltbedingungen des Systems darstellt...

Also die ganz kurze Fassung: je genauer ein Taktgeber sein soll, desto 
länger braucht er nach dem Einschalten, bis er so genau ist, wie er sein 
sollte...

von Martin L. (maveric00)


Lesenswert?

Hallo,

Lothar M. schrieb:
> Toni Tester schrieb:
>> Ist z. B. im Automotivebereich schon seit Jahrzehnten Usus
> Da sag ich jetzt mal besser nichts zu...
> Oder doch: nicht alles, was im Automobilbereich "Usus" ist, ist auch gut
> oder sinnvoll. Mir fällt da was zum Thema "Diesel" ein. Sowas scheint
> dort auch "Usus" zu sein.  :-/

Tja, gesundes Weniger-Als-Halbwissen reicht anscheinend, um sich eine 
Meinung zu "Bilden". Von betrügerischen Machenschaften einiger 
Managements (oder glaubt wirklich jemand, dass dort Entwickler 
eigenmächtig gehandelt haben?) auf die Unfähigkeit aller Ingenieure 
eines Industriezweigs zu schließen zeugt schon von einem seltsamen 
Weltbild.

Nur um da 'mal etwas zum Nachdenken zu geben: die ISO 26262 (Funtionale 
Sicherheit im Bereich Automotive) ist eine Konkretisierung der ISO 61508 
(Funktionale Sicherheit von E/EE/PEE-Steuerungen). Beiden gemein sind 
Empfehlungen zur Absicherung elektrischer und elektronischer Schaltungen 
in Abhängigkeit der Kritikalität der Anwendung.

Und dazu gehört unter anderem auch, sicherheitsrelevante Teile des 
Flash-Speichers beim Hochfahren und im Betrieb durch Prüfsummen/CRC zu 
überwachen.

>> um z. B. Bitkipper auf Grund von EMV-Einwirkungen abzufangen
> Jetzt kann es aber durchaus sein, dass nicht das Flash korrumpiert wird,
> weil dort die Ladung ja "gefangen" ist, sondern viel eher, dass ein
> simples Bit in einem Register umkippt...

Und rate 'mal: genau deswegen ist die Absicherung des Flash natürlich 
nicht die einzige Maßnahme, die auch im Bereich Automotive durchgeführt 
wird. Diese gehen von einfachen Redundanzberechnungen über 
ECC-abgesicherte Speicher (ja, gibt es auch in Controllern, z.B. im 
TriCore) und mitlaufenden Prozessorüberwachungen (Instruction Set Tests) 
bis zum Dual-Core Lockstep mit Fehlererkennungslogik. Der Flash kann 
aber eben auch korrumpiert werden, und daher sollte sein Inhalt - so er 
sicherheitsrelevant ist - überwacht werden.

Ob man das bei einer einfachen Bastelschaltung im Hobbybereich benötigt 
ist eine ganz andere Frage, die wohl nur der TO für sich beantworten 
kann. Im Automotive-Bereich ist es jedenfalls sehr sinnvoll:

Nimmt man eine übliche Fehlerrate von Flash-Speicher von 1000 FIT pro MB 
an (variiert je nach Reinheitsgrad des Housing-Materials) und geht man 
von einer Speichergröße von 1 MB und einer Stückzahl von 1 Mio 
Steuergeräten aus, so muss man damit rechnen, dass über die Lebensdauer 
der Fahrzeuge rund zehn Speicherfehler in der Gesamtpopulation je 
Steuergerät auftreten werden. Wenn davon in 1% der Fälle 
sicherheitsrelevante Parameter oder Funktionen betroffen wären, so würde 
man jedes Jahr damit in Deutschland eine Fahrzeugbesatzung töten. Bei 
inzwischen rund 10 wirklich sicherheitsrelevanten Steuergeräten im 
Fahrzeug wären das also zwischen 10 und 40 Verkehrstote im Jahr, die 
durch einen einfachen CRC-Test vermieden werden. Und das nur wegen 
zufälligen Bit-Kippern (z.B. durch Alpha-Strahlung). Die Absicherung 
gegen Alterung etc. kommt da noch dazu.

Schöne Grüße,
Martin

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Martin L. schrieb:
> Tja, gesundes Weniger-Als-Halbwissen reicht anscheinend
Danke für die Ferndiagnose.

> Von betrügerischen Machenschaften einiger Managements (oder glaubt
> wirklich jemand, dass dort Entwickler eigenmächtig gehandelt haben?) auf
> die Unfähigkeit aller Ingenieure eines Industriezweigs zu schließen
> zeugt schon von einem seltsamen Weltbild.
Meinst du, ein Betriebswirt wäre von alleine auf diese "kreative" Lösung 
gekommen?

> Und dazu gehört unter anderem auch, sicherheitsrelevante Teile des
> Flash-Speichers beim Hochfahren und im Betrieb durch Prüfsummen/CRC zu
> überwachen.
Ich sags ja: wir verwalten uns zu Tode. Wo ist denn in dieser Anwendung 
hier irgendwas Sicherheitsrelevantes zu sehen?

> Nimmt man eine übliche Fehlerrate ... an
Man kann schon viel "annehmen", und wenn angenommen jeder der 
Beiteiligten seine 100% Sicherheit draufschlägt, dann kommt es 
tatsächlich zu annehmbaren Werten, bei denen jeder erschrickt.

> Wenn davon in 1% der Fälle sicherheitsrelevante Parameter oder
> Funktionen betroffen wären, so würde man jedes Jahr damit in Deutschland
> eine Fahrzeugbesatzung töten.
Da ist er wieder, der Konjunktiv.

> Bei inzwischen rund 10 wirklich sicherheitsrelevanten Steuergeräten im
> Fahrzeug wären das also zwischen 10 und 40 Verkehrstote im Jahr, die
> durch einen einfachen CRC-Test vermieden werden.
Gut, dass wir das wissen. Wir kommen also ausgehend von angenommenen 
Werten über den Konjunktiv zu harten Fakten. Denn in dieser simplen 
Rechnung wird "Speicherfehler" mit "Tod" gleichgesetzt. Das könnte man 
jetzt nochmal diskutieren.

Seis drum: auch wenn solche Tests auch im Flugzeug oder im Auto sinnvoll 
oder gar nötig sind, man muss sie nicht wie sauer Bier überall anpreisen 
und einbauen.

: Bearbeitet durch Moderator
von Olli Z. (z80freak)


Lesenswert?

Hallo! Es geht hier darum wie man einen Atmega möglichst 
verzögerungsfrei starten kann und das ist, glaube ich umfänglich 
beantwortet werden. Dafür von mir vielen Dank!

Bitte keine Diskussionen mehr über Autombiltechnik und sonstiges. 
Erstellt Euch dafür einen eigenen Thread und da könnt ihr dann 
weiterspielen "Ich bin schlauer als Du". Ist schon manchmal ein 
Markplatz der Eitelkeiten hier...

von Einer K. (Gast)


Lesenswert?

Olli Z. schrieb:
> Hallo! Es geht hier darum wie man einen Atmega möglichst
> verzögerungsfrei starten kann und das ist, glaube ich umfänglich
> beantwortet werden. Dafür von mir vielen Dank!
>
> Bitte keine Diskussionen mehr über Autombiltechnik und sonstiges.
> Erstellt Euch dafür einen eigenen Thread und da könnt ihr dann
> weiterspielen "Ich bin schlauer als Du". Ist schon manchmal ein
> Markplatz der Eitelkeiten hier...

Schön, dass du deine Antworten erhalten hast..

Aber du hast keinerlei Recht zu bestimmen, wer hier was sagt, und was 
hier gesagt wird.
Keinerlei!
Null Komma gar nicht.


Verstanden?


Suche dir mal bitte jemanden, welcher dir den Kopf wieder gerade rückt.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Martin L. schrieb:
> Und dazu gehört unter anderem auch, sicherheitsrelevante Teile des
> Flash-Speichers beim Hochfahren und im Betrieb durch Prüfsummen/CRC zu
> überwachen.

Ich bin mir ziemlich sicher, dass Du damit offtopic bist. Wenn Du über 
Sicherheit in/um µCs diskutieren möchtest, öffne bitte einen eigenen 
Thread.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Arduino F. schrieb:
> Aber du hast keinerlei Recht zu bestimmen, wer hier was sagt, und was
> hier gesagt wird.

Bestimmen kann er das zwar nicht, trotzdem war die Erinnerung, beim 
Thema zu bleiben, durchaus angebracht. Abeschweifungen vom eigentlichen 
Thema können einen Thread durchaus derart zerfasern, dass nur noch Chaos 
übrigbleibt, weil alle durcheinander quatschen.

Hier geht es darum, die Startzeit eines ATMega328p (mit 
Arduino-Bootloader) zu minimieren.

von Martin L. (maveric00)


Lesenswert?

Hallo,

sorry für das kapern des Threads, aber als Vollzeit-Functional Safety 
Manager im Automobilsektor mit mehr als 10 Jahren Erfahrung fand ich die 
pauschalen, abfälligen Bemerkungen von Lothar bezüglich der Methoden im 
Automobilsektor jenseits von grenzwertig, auch wenn ich seine 
Fachkenntnis auf anderen Gebieten schätze.

Was die anderen Punkte angeht: Glaube mal, Lothar, dass ich alle 
Konjunktive mit entsprechend harten Fakten hinterlegen kann. Und dass 
auch ich die Sinnhaftigkeit für Ollis Projekt in Frage gestellt habe, 
hast Du wohl auch überlesen.

Und weil ich es nicht lassen kann: Auch wenn dieser Thread über ein 
anderes Thema ging, so wurde von Lothar doch eine valide Frage gestellt 
(warum überhaupt CRC), die von Toni korrekt beantwortet wurde, was 
allerdings von Lothar als falsche Antwort dargestellt wurde. Meiner 
Meinung nach lebt ein Forum davon, dass solche Fehler korrigiert werden 
(zugegeben: von mir vielleicht zu emotional), damit die anderen 
Forenteilnehmer keine Falschinformationen bekommen.

Schöne Grüße,
Martin

von Einer K. (Gast)


Lesenswert?

Frank M. schrieb:
> Hier geht es darum, die Startzeit eines ATMega328p (mit
> Arduino-Bootloader) zu minimieren.

Das Thema ist allerdings abgefackelt.
Bis zum Ende durchgekaut.
(wie mir scheint)

Machmal sinds die Nebenthemen, welche mehr Erkenntnis bringen, als die 
vorausgehende Trivialfrage.

Ich persönlich, finde es interessant, wie man solche Blackboxen 
stabilisiert.
Gebe aber zu, dass für mich die Integrität des EEPROM Inhaltes höhere 
Priorität besitzt, denn da kann ein BrownOut recht leicht einen 
Schreibvorgang größerer Datenmengen unterbrechen.


Die Startzeiten eines AVR  haben für mich keinen Mehrwert. Das Thema 
habe ich auch vor Jahren mal durchgearbeitet. Das reicht.

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.