Forum: Mikrocontroller und Digitale Elektronik Atmega328p auf 1 mhz mit 32 khz Uhrenquarz


von R. B. (Gast)


Lesenswert?

Hallo zusammen,

ich bin nun schon einige Zeit auf der Suche nach der Konstellation wie 
im Betreff geschrieben. Ich habe diverse Seiten im Netz gelesen und auch 
hier im Forum. Z.B:
Beitrag "Atmega 328p: LowPower Library bei 1Mhz intern und 8Mhz extern"
oder
Beitrag "Warum Uhrenquarz 32,768 kHz?"
oder
Beitrag "Mit Uhrenquarz Takt vorgeben"

Zu meinem Ziel bin ich bisher nicht gekommen. Kurz warum ich das machen 
möchte.
Ich möchte den atmega mit 2 AAA bzw. 1 Knopfzelle laufen lassen. Daher 
liegt der Bereich der Batterien zwischen 1,8 V und 3,6 V. Um das machen 
zu können muss der Mega ja, laut Datenblatt, auf 1 Mhz laufen.
Warum der 32khz Quarz? Der soll zu der Konstellation gut passen, genauer 
sein als der interne Taktgeber und auch noch recht stromsparend sein. 
Der interne Taktgeber schwankt wohl relativ stark mit fallender 
Spannung.
Ich stehe etwas auf dem Schlauch wenn es um die Fuses und die Bootloader 
geht.
Ich habe mir schon auf der Seite http://www.engbedded.com/fusecalc/ das 
ganze angeschaut was die Fuses betrifft.
Was genau bedeutet das "1K" bzw. "32K" bei
"Ext. Low-Freq. Crystal; Start-up time PWRDWN/RESET: 1K CK/14 CK + 65 
ms;  [CKSEL=0100 SUT=10] "

bzw.

"Ext. Low-Freq. Crystal; Start-up time PWRDWN/RESET: 32K CK/14 CK + 65 
ms;  [CKSEL=0100 SUT=10]".
Welches davon wäre dann das richtige? Steht das 32K für die 32K der 
Quarzes?
High (D9)- und Extendet(FF) Fuse bleiben ja immer gleich. Also betrifft 
es nur den Low-Fuse ob 64 oder 65.

Wo bekomme ich dann einen passenden Bootloader dafür her, oder wie kann 
man sich selber einen erstellen? Und warum sieht man in manchen 
Bootloadern das dort auch noch einmal du Fuses gesetzt sind.

Sorry wenn ich hier so auf dem Schlauch stehe, aber so ganz klick will 
es noch nicht machen. Ich würde mich echt freuen wenn Ihr mir hier 
helfen könntet.

Danke euch schonmal.

von Georg M. (g_m)


Lesenswert?

Robert B. schrieb:
> Ich möchte den atmega mit 2 AAA bzw. 1 Knopfzelle laufen lassen. Daher
> liegt der Bereich der Batterien zwischen 1,8 V und 3,6 V. Um das machen
> zu können muss der Mega ja, laut Datenblatt, auf 1 Mhz laufen.
> Warum der 32khz Quarz? Der soll zu der Konstellation gut passen, genauer
> sein als der interne Taktgeber und auch noch recht stromsparend sein.

Du möchtest aus 32kHz 1MHz erzeugen?

von Theor (Gast)


Lesenswert?

Robert B. schrieb:
> Hallo zusammen,
>
> [...]
> Was genau bedeutet das "1K" bzw. "32K" bei
> "Ext. Low-Freq. Crystal; Start-up time PWRDWN/RESET: 1K CK/14 CK + 65
> ms;  [CKSEL=0100 SUT=10] "
>
> bzw.
>
> "Ext. Low-Freq. Crystal; Start-up time PWRDWN/RESET: 32K CK/14 CK + 65
> ms;  [CKSEL=0100 SUT=10]".
> Welches davon wäre dann das richtige? Steht das 32K für die 32K der
> Quarzes?

Das steht im Datenblatt ab Seite 24.

"Start-up time" ist die Startzeit jeweils nach
"PWRDWN" -> "Abschaltung"
"RESET" -> "Reset".

Es ist eigentlich deutlich erklärt, dass die verschiedenen 
Taktquellenvarianten und Stromversorgungen jeweils verschiedene Zeiten 
benötigen um den AVR sicher zu starten.

"CK" ist, - dass geht aus dem Kontext hervor -, die Einheit der Anzahl 
der Taktzyklen. Also eine Zeitangabe.

> [...]
> Wo bekomme ich dann einen passenden Bootloader dafür her,

Z.B. aus dem Internet.

> oder wie kann
> man sich selber einen erstellen?

Man tippt ein Programm ein.

Ein Bootloader besteht im wesentlichen aus zwei Teilen: 1. Der 
Kommunikation mit z.B. einem PC über eine Schnittstelle. 2. Dem 
Speichern der empfangenen Daten im Flash-Speicher.
Dazu kommen evtl.: Absicherung der Kommunikation gegen Fehler. 
Dekompression der Daten. Entschlüsselung der Daten. Verifikation der 
Daten. Authentifizierung.

> Und warum sieht man in manchen
> Bootloadern das dort auch noch einmal du Fuses gesetzt sind.

Das sieht man dort nicht. :-) OK. Wo sieht man das?

> [...]

von Stefan F. (Gast)


Lesenswert?

> Warum der 32khz Quarz?

Frage das denjenigen, der in der Schaltung den 32 kHz Quarz eingeplant 
hat. Du kannst ihn jedenfalls nicht nutzen, um die CPU mit mehr als 32 
kHz zu takten.

von S. Landolt (Gast)


Lesenswert?

Habe ich das richtig verstanden - der interne RC-Oszillator soll per 
OSCCAL mit Hilfe des 32 KiHz-Quarzoszillators justiert werden? Ist 
machbar, vielleicht lässt sich sogar etwas (Halb-)Fertiges hier im Forum 
finden, ich glaube, c-hater hatte mal so etwas vorgestellt.

von S. Landolt (Gast)


Lesenswert?

Ja, ist von c-hater, und damit, wie zu erwarten, in Assembler. Wirkt, 
auf den ersten Blick, sehr aufwändig gemacht:
Beitrag "OSCCAL beim Tiny25/45/85"
Scheint universell zu sein, da hier auf den ATtiny85 bezogen.

von R. B. (Gast)


Lesenswert?

Danke euch erstmal für die bisherigen Antworten.

@Georg M.
Nein. Du hast meinen Text ja sogar zietiert und da steht es drin.

> Ich möchte den atmega mit 2 AAA bzw. 1 Knopfzelle laufen lassen. Daher
> liegt der Bereich der Batterien zwischen 1,8 V und 3,6 V. Um das machen
> zu können muss der Mega ja, laut Datenblatt, auf 1 Mhz laufen.

...das möchte ich.

Das mit dem 32khz Quarz habe ich nur ein paar mal im Netz aufgeschnappt 
nur leider wurde nie beschrieben wie es geht. Ich wunderte mich auch wie 
das gehen soll. Ich kann mir auch maximal vorstellen den internen 
oszillator mit hilfe des 32khz externen immer "auf Kurs" zu halten damit 
dieser genauer läuft. So wie es S. Landolt auch vermutet.
Durch diesen Ideenanstoß bin ich bei erneuter suche auf folgenden 
Beitrag gestoßen: 
https://www.mikrocontroller.net/articles/Sleep_Mode#Quarzgenaue_Zeitbasis
Das müsste das ganze ja in etwas wiederspiegeln. Wenn ich das richtig 
verstehe wird der Timer2 des Mega durch den 32khz Quarz asynchron 
getaktet und ist für die Zeit verantwortlich wo der Arduino schläft. 
Z.B. für die 8 Sekunden die meiner immer schläft.
Habe ich das so korrekt verstanden?

@Theor

> Z.B. aus dem Internet.
Ja danke... wenn ich da das passende gefunden hätte und ich mir 100% 
sicher wäre hätte ich hier nicht gefragt ;) Anstelle von "aus dem 
Internet" wäre ein Link toll wenn es so einfach ist. Mit einer kleinen 
Antwort warum z.B. der Bootloader des Links dafür geeignet ist.

> Man tippt ein Programm ein.
>
> Ein Bootloader besteht im wesentlichen aus zwei Teilen: 1. Der
> Kommunikation mit z.B. einem PC über eine Schnittstelle. 2. Dem
> Speichern der empfangenen Daten im Flash-Speicher.
> Dazu kommen evtl.: Absicherung der Kommunikation gegen Fehler.
> Dekompression der Daten. Entschlüsselung der Daten. Verifikation der
> Daten. Authentifizierung.

Man tippt ein Programm ein? Ich kann ein Programm starten und es 
benutzen aber ein Programm eintippen? Meinst du Code in ein Programm 
eingeben? Wenn ja welches Programm wäre das? Ggf. sind die Infos auch 
überflüssig wenn es schon fertige Bootload gibt. Ich will das Rad nicht 
neu erfinden. Nur bin ich in der Thematik nicht geübt und lerne noch.
Die Beschreibung was ein Bootloader ist/macht finde ich schonmal sehr 
hilfreich. Danke.

> Das sieht man dort nicht. :-) OK. Wo sieht man das?
Ich habe mich hier etwas vertan und meinte eigentlich die Board.txt und 
die einstellungen für den Bootloader entsprechend für den Chip

Z.B.:
optiboot28.menu.cpu.atmega328p=ATmega328p
optiboot28.menu.cpu.atmega328p.upload.maximum_size=32256
optiboot28.menu.cpu.atmega328p.upload.maximum_data_size=2048

->  optiboot28.menu.cpu.atmega328p.bootloader.high_fuses=0xDE
->  optiboot28.menu.cpu.atmega328p.bootloader.extended_fuses=0xFD
-> 
optiboot28.menu.cpu.atmega328p.bootloader.file=optiboot/optiboot_atmega3 
28.hex

optiboot28.menu.cpu.atmega328p.build.mcu=atmega328p

von S. Landolt (Gast)


Lesenswert?

Also, fertige Bootloader gibt es einige, s. Unterforum 'Projekte & 
Code'. In Kombination mit diesem 32 KiHz-Quarz-Abgleich aber vermutlich 
nicht.

von Hugo H. (hugohurtig1)


Lesenswert?

Robert B. schrieb:
> das möchte ich

Was genau möchtest Du eigentlich tun?

Robert B. schrieb:
> Ich möchte den atmega mit 2 AAA bzw. 1 Knopfzelle laufen lassen.

Und wozu genau? Was bezweckst Du damit?

von s.c.n.r. (Gast)


Lesenswert?

Robert B. schrieb:
> ich bin nun schon einige Zeit auf der Suche nach der Konstellation wie
> im Betreff geschrieben.

Deinem Betreff ist zu entnehmen, dass du einen 32 kHz Uhrenquarz besitzt 
(exakt 32768 Hz) und einen 1mHz Takt, also 0,001 Hz benötigst
(das Einheitenzeichen der Einheit Hertz für die Frequenz schreibt sich 
mit großem "H").

Also zurück zu deinem Problem. Du kannst einfach einen Teiler 1:2^15 
verwenden (ergibt 1Hz) und noch drei Teiler 1:10 nachschalten. Ein 1:10 
Teiler wiederum setzen sich meist aus einem 1:5 und einem 1:2 Teiler 
zusammen. Wenn du als letztes in der Kette einen 1:2 setzt, ist das 
Ausgangssigal symmetrisch, was oft wünschenswert ist.

von R. B. (Gast)


Lesenswert?

Hugo H. schrieb:
> Und wozu genau? Was bezweckst Du damit?

Es ist kein Geheimnis was ich baue, aber ich wüsste nicht was der Rest 
meines Projektes mit diesem Teilproblem zu tun hat. Außer evtl. diesen 
Beitrag aufzublähen und vom Kern den ich behandelt haben möchte 
abzuweichen.
Sollte es doch einen Grund geben euch Dinge mitzuteilen werde ich das 
gern tun.

S. Landolt schrieb:
> Also, fertige Bootloader gibt es einige, s. Unterforum 'Projekte &
> Code'. In Kombination mit diesem 32 KiHz-Quarz-Abgleich aber vermutlich
> nicht.

Ja :( leider.

s.c.n.r. schrieb:
> Deinem Betreff ist zu entnehmen, dass du einen 32 kHz Uhrenquarz besitzt
> (exakt 32768 Hz) und einen 1mHz Takt, also 0,001 Hz benötigst
Je genau 32768 Hz oder 32,768 kHz oder im englischen 32.768 kHz ;)
Meinst du mit 0,001 Hz den 1mHz? Also wenn mich nicht alles täuscht sind 
1 mHz = 1.000.000 Hz (Punkte hier als Tausendertrennzeichen für bessere 
Lesbarkeit). Korregiert mich bitte wenn das falsch ist. Oder was genau 
meinst du mit 0,001 Hz?

s.c.n.r. schrieb:
> Also zurück zu deinem Problem. Du kannst einfach einen Teiler 1:2^15
> verwenden (ergibt 1Hz) und noch drei Teiler 1:10 nachschalten. Ein 1:10
> Teiler wiederum setzen sich meist aus einem 1:5 und einem 1:2 Teiler
> zusammen. Wenn du als letztes in der Kette einen 1:2 setzt, ist das
> Ausgangssigal symmetrisch, was oft wünschenswert ist.

Bitte verzei mit meine absolute Unwissenheit. Das verstehe ich nicht.
2^15 sind ja 32.768 kommt mir bekannt vor vom Quarz. Was genau meinst du 
mit den Teilern? "Einfach verwenden" glaub ich dir aufs Wort. Alles ist 
einfach wenn man weiß wie es geht. Nur ich stehe hier voll auf dem 
Schlauch. Wo genau muss ich diese Teiler denn setzen?
Wenn es einen Link gibt wo ich mir dazu was durchlesen kann wäre ich 
sehr dankbar.
Symmetrisch klingt gut. Irgendwie nach Einklang.

Ich komme nicht aus der Mikrotechnik oder irgend einem anderen 
elektrotechnischen Beruf der damit was anfangen könnte. Ich mache das 
aus Hobby. Deswegen auch an alle anderen die hier gern helfen möchte. 
Habt nachsehen wenn mir nicht alles auf anhieb klar ist. Ich bin aber 
bereit zu lernen :D

von Hugo H. (hugohurtig1)


Lesenswert?

Robert B. schrieb:
> Es ist kein Geheimnis was ich baue, aber ich wüsste nicht was der Rest
> meines Projektes mit diesem Teilproblem zu tun hat.

Ich auch nicht - viel Spaß noch.

von Stefan S. (chiefeinherjar)


Lesenswert?

Robert B. schrieb:
> Meinst du mit 0,001 Hz den 1mHz? Also wenn mich nicht alles täuscht sind
> 1 mHz = 1.000.000 Hz

1 mHz heißt ein MILLI-Hertz. Du meinst wohl 1MHz - also 1 MEGA-Hertz

von S. Landolt (Gast)


Lesenswert?

> Ja :( leider.
Nun ja, dann muss man es eben selbst machen (und anschließend als 
Projekt hier vorstellen, im besten Fall). Der ATmega328 hat als 
boot-size bis zu 2048 Worte, das sollte also keine Beschränkung 
darstellen.
  Falls aber hierfür die Kenntnisse fehlen, stellt sich durchaus die 
Frage nach dem Gesamtprojekt. Es sei denn natürlich, es findet sich in 
dieser unsäglichen Krise jemand, der das maßgeschneidert anfertigt und 
unter 'Langeweile-totschlagen mit Erkenntnisgewinn' verbucht.

von Einer K. (Gast)


Lesenswert?

Robert B. schrieb:
> Ich stehe etwas auf dem Schlauch wenn es um die Fuses und die Bootloader
> geht.
> Ich habe mir schon auf der Seite http://www.engbedded.com/fusecalc/ das
> ganze angeschaut was die Fuses betrifft.

Mein Rat:
Lass die Fuses auf Werkseinstellung.
Dann bisste schon mal auf 1MHz internem Takt.

Wenne keine Schnittstelle wie Serial, Onwire usw nutzt, dann muss auch 
nichts kalibriert werden.
SPI und I2C sind sehr geduldig, was den Takt angeht, also viel 
problemloser.

Auf den Bootloader verzichte ich bei solchen Konfigurationen
Eben auch um die Kalibrierung einzusparen.
Rate ich dir auch.

Für ein genaues Zeitraster dann den Uhrenquarz an Timer2 verwenden.
Da muss auch nix mit den Fuses gemacht werden.

von R. B. (Gast)


Lesenswert?

Stefan S. schrieb:
> Robert B. schrieb:
>> Meinst du mit 0,001 Hz den 1mHz? Also wenn mich nicht alles täuscht sind
>> 1 mHz = 1.000.000 Hz
>
> 1 mHz heißt ein MILLI-Hertz. Du meinst wohl 1MHz - also 1 MEGA-Hertz

Stimmt, da ist es wieder mit den großen und kleinen Buchstaben. Jetzt 
bin ich aber noch mehr verwirrt warum Milliherz?


S. Landolt schrieb:
>> Ja :( leider.
> Nun ja, dann muss man es eben selbst machen (und anschließend als
> Projekt hier vorstellen, im besten Fall). Der ATmega328 hat als
> boot-size bis zu 2048 Worte, das sollte also keine Beschränkung
> darstellen.
>   Falls aber hierfür die Kenntnisse fehlen, stellt sich durchaus die
> Frage nach dem Gesamtprojekt. Es sei denn natürlich, es findet sich in
> dieser unsäglichen Krise jemand, der das maßgeschneidert anfertigt und
> unter 'Langeweile-totschlagen mit Erkenntnisgewinn' verbucht.

Also Erfahrung fehlt hier alle mal bei mir. Je nachdem wie schwer es zu 
erlernen ist würde ich mir das aneignen wenn es gute Quellen gibt. Wenn 
das jedoch so komplex ist und man dort ebenfalls viel Zeit investieren 
muss würde ich gern auf a) hilfe zurückgreifen, oder b) etwas Fertiges 
nehmen.

Arduino Fanboy D. schrieb:
> Mein Rat:
> Lass die Fuses auf Werkseinstellung.
> Dann bisste schon mal auf 1MHz internem Takt.

Hmm aktuell läuft er auf 16 MHz. Zumindest würde ich das mal stark 
vermuten ohne genau nachzuschauen, da ich einen 16MHz Quarz dran habe. 
Bootloader ist der von der Arduino Software drauf für den Uno.
>
> Wenne keine Schnittstelle wie Serial, Onwire usw nutzt, dann muss auch
> nichts kalibriert werden.
> SPI und I2C sind sehr geduldig, was den Takt angeht, also viel
> problemloser.

Ich würde ungern auf solche Dinge verzichten. Ich habe damit Nodes 
gebaut die diverse aufgaben haben. Temperatur+Luftfeuchtigkeit in 
Räumen, Tür- und Fensterkontakte, Gragentüröffner, Helligkeit über einen 
einfachen Fotowiderstand, usw.

> Auf den Bootloader verzichte ich bei solchen Konfigurationen
> Eben auch um die Kalibrierung einzusparen.
> Rate ich dir auch.

Meine Platinen haben leider nur eine FTDI Schnittstelle und keine SPI. 
Klar könnte ich bei einem Update dann den Chip runterpulen und anderswoh 
bestücken. Ist aber nicht so komfortabel.

> Für ein genaues Zeitraster dann den Uhrenquarz an Timer2 verwenden.
> Da muss auch nix mit den Fuses gemacht werden.

Einfach den 32 kHz Quarz anschließen ohne was anzupassen? Ich vermute 
man muss dann auf Timer2 umstellen im Code oder?

von Einer K. (Gast)


Lesenswert?

Robert B. schrieb:
> Einfach den 32 kHz Quarz anschließen ohne was anzupassen?
Natürlich!

Robert B. schrieb:
> Ich vermute
> man muss dann auf Timer2 umstellen im Code oder?
Dein Arduino millis() arbeitet dann weiter mit Timer0.

Und ja, wenn du das auf den Timer2 umbauen willst, dann darfst du in den 
Arduino Core eingreifen.

Robert B. schrieb:
> Meine Platinen haben leider nur eine FTDI Schnittstelle und keine SPI.
Tja..
Dann wirst du dir einen kalibrierenden Bootloader bauen dürfen.

Tipp:
Der original Bootloader QuellCode wird mit der Arduino IDE ausgeliefert.

von Hugo H. (hugohurtig1)


Lesenswert?

Arduino Fanboy D. schrieb:
> Tja..
> Dann wirst du dir einen kalibrierenden Bootloader bauen dürfen.

Nein - er wird mal erklären dürfen, was er eigentlich erreichen will. 
Will er aber nicht - also interessant.

von s.c.n.r. (Gast)


Lesenswert?


von c-hater (Gast)


Lesenswert?

S. Landolt schrieb:

> Ja, ist von c-hater, und damit, wie zu erwarten, in Assembler. Wirkt,
> auf den ersten Blick, sehr aufwändig gemacht:

> Beitrag "OSCCAL beim Tiny25/45/85"

> Scheint universell zu sein, da hier auf den ATtiny85 bezogen.

Und für diesen Anwendungsfall ist er ziemlich ungeeignet.

Es ging dabei um ein "ziemlich" anderes Problem, nämlich: Justiere den 
internen RC-Oszillator anhand eines extern über irgendeinen Pin 
eingespeisten Taktsignals. Nicht darum, ihn anhand eines von Timer2 
gelieferten Signals zu justieren.

Das ist schon deshalb selbstverständlich, weil die mit dem Code 
addressierten Tinys natürlich weder Timer2 noch einen daran 
angeflanschten Uhrenquarz haben, bzw. haben können, das können nur die 
Megas...

Allerdings sind natürlich weite Teile des Codes recht problemlos auch 
für diesen Anwendungsfall verwendbar. Und ich habe natürlich auch 
fertigen Code für die Anwendung auf diesen Fall...

von S. Landolt (Gast)


Lesenswert?

> Allerdings sind natürlich weite Teile des Codes recht
> problemlos auch für diesen Anwendungsfall verwendbar.
Genauso schien es mir auf den ersten Blick - auch auf den zweiten.

> Und ich habe natürlich auch fertigen Code für die Anwendung
> auf diesen Fall...
Und worauf warten Sie? Nur zu, hier gibt es mindestens einen 
Interessierten.

von S. Landolt (Gast)


Lesenswert?

PS:
> ... Tinys natürlich weder Timer2 noch einen daran
> angeflanschten Uhrenquarz
Eben dies meinte ich mit dem Satz
>> Scheint universell zu sein, da hier auf den ATtiny85 bezogen.

von Rene K. (xdraconix)


Lesenswert?

S. Landolt schrieb:
> Und worauf warten Sie? Nur zu, hier gibt es mindestens einen
> Interessierten.

Uuuuhhhh... da kennt jemand C-hater noch nicht! xD
Ich hol schonmal das Popcorn :-)


Zum eigentlichen Problem:

Warum fragen alle: "Was willst du eigentlich erreichen?" Diese Frage hat 
einen, dir wahrscheinlich noch nicht so klaren, guten Grund. Ich schätze 
mal 90% der Fragen, welche hier gestellt werden, haben ein Ziel vor 
Augen und einen sich selbst fest auferlegten Weg zu eben jenem.

Aaaaaber, man kann Rom auch über viele Wege erreichen. Und deshalb die 
Frage nach dem Ziel deines Projektes. Ist ein solch extremer Takt dann 
überhaupt nötig? Und wenn "Ja" warum dann genau 1Mhz? Soll es eine 
Uhrenanwendung sein, warum dann nicht die 32Khz als Takt nutzen (denn 
genau dafür ist sie da).

Für welche Anwendung bedarf es also einen selbstkalibrierenden Takt? 
Gerade wenn dann noch "Arduino" ins Spiel kommt wird das dann alles sehr 
suspekt.

von S. Landolt (Gast)


Lesenswert?

> Uuuuhhhh... da kennt jemand C-hater noch nicht! xD
Au contraire! Wir kennen uns seit über einem Jahrzehnt. Und rein 
fachlich schätze ich ihn sehr.

von Rene K. (xdraconix)


Lesenswert?

S. Landolt schrieb:
> Au contraire! Wir kennen uns seit über einem Jahrzehnt. Und rein
> fachlich schätze ich ihn sehr.

Je vous demande mille fois pardon! Danke für die Aufklärung, dann wird 
er ja sicherlich den Satz verzeihen :-) Wie ich auch schon mehrfach über 
ihn äußerte: Fachlich ein Genie - Menschlich... naja. :-D

von c-hater (Gast)


Lesenswert?

S. Landolt schrieb:

> Und worauf warten Sie? Nur zu, hier gibt es mindestens /einen/
> Interessierten.

Who is it?

Der TO wohl nicht, der kann mit Assemblercode offensichtlich ungefähr 
genau soviel anfangen wie meine Katze.

Und für Leute, die Assembler können, sollte es kein Problem sein, den 
Code selber entsprechend anzupassen.

von S. Landolt (Gast)


Lesenswert?

> Who is it?
Ich bin das.
Ich schaue gerne in Assemblerprogramme von fähigen Leuten, man lernt 
meist etwas dabei. Und ja, ich habe selbst schon so etwas geschrieben, 
aber zum Vorstellen reicht es wohl nicht.
Wenn Sie aber nicht wollen, auch recht. Langeweile habe ich nicht, diese 
C-Krise trifft mich kaum, "tangiert mich nur peripher", hätten wir 
früher gesagt.

von c-hater (Gast)


Lesenswert?

Rene K. schrieb:

> Wie ich auch schon mehrfach über
> ihn äußerte: Fachlich ein Genie

Nein, ich betone jederzeit: nur guter Handwerker. Einer der einfach 
weiß, was er tut, weil er seinen Job beherrscht.

Genies sind eine ganz andere Klasse. Klar: ich wäre auch gerne eins. 
Aber ich weiß: das bin ich nicht und werde ich auch nicht mehr werden, 
dazu bin ich einfach schon zu alt, mein Denken ist viel zu sehr auf 
eingefahrene Bahnen fixiert, um noch irgendwas Geniales hervorbringen zu 
können.

Nicht ganz so schlimm, wenn man sich vor Augen hält, daß auch die 
meisten echten Genies wie z.B. Einstein nach ihren verrückten, aber 
wegweisenden Ideen eigentlich nur noch Mittelmaß produziert haben.

Sprich: wirkliche Genies müssen jung sein (oder zumindest jung 
anfangen). Das sagt die Geschichte der Genies.

Allerdings: Es genügt nicht, nur jung zu sein, man muß auch ein Gehirn 
haben und dieses nicht nur dafür einsetzen, wie man das Date mit 
GretchenModermöse kriegt...

Das richtet sich vor allem an den akademischen Nachwuchs...

von Thomas E. (thomase)


Lesenswert?

Robert B. schrieb:
> Durch diesen Ideenanstoß bin ich bei erneuter suche auf folgenden
> Beitrag gestoßen:

Dann stosse ich dich jetzt mal auf diesen Beitrag:

https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR#Timer2_im_Asynchron_Mode

Hättest du den von vornherein selbst gefunden, hättest du dir diesen 
Thread sparen und uns das Geschwätz von einigen Leuten hier ersparen 
können.

von c-hater (Gast)


Lesenswert?

Thomas E. schrieb:

> Dann stosse ich dich jetzt mal auf diesen Beitrag:
>
> 
https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR#Timer2_im_Asynchron_Mode

Sollte in der Regel perfekt funktionieren, ist aber trotzdem weit davon 
entfernt, optimal sein...

Das merkt man genau dann, wenn der eigentliche Nutzcode nennenswert 
Rechenzeit erfordert...

von Pressluftschuppen (Gast)


Lesenswert?

c-hater schrieb:

> Allerdings: Es genügt nicht, nur jung zu sein, man muß auch ein Gehirn
> haben und dieses nicht nur dafür einsetzen, wie man das Date mit
> GretchenModermöse kriegt...


Es genügt nicht, keine Gedanken zu haben, man muss auch unfähig sein, 
sie auszudrücken.

von R. B. (Gast)


Lesenswert?

Thomas E. schrieb:
> Hättest du den von vornherein selbst gefunden, hättest du dir diesen
> Thread sparen und uns das Geschwätz von einigen Leuten hier ersparen
> können.

Das stimmt. Wie aber so oft ist es manchmal so das einem das passende 
Wort fehlt nachdem man suchen muss. Timer2 oder Asynchron Mode wärem mir 
nie eingefallen.



Damit Onkel Hugo heute abend, vor neugier, nicht zur Ruhe kommt sage ich 
gern was ich vor habe. Wie ich schon schrieb habe ich damit verschieden 
"Nodes" gebaut. Die Nodes haben diverse Senoren verbaut. Halt immer nach 
Bedarf. Teilweise aber auch mehrere auf einer Platine. Sowohl die 
Funkmodule, sowohl auch die ganzen Senoren, arbeiten in einem Bereich 
von 1,7 bis 3,6 Volt. Das fand ich allein deswegen schon gut weil das 
zufällig 2xAA, 2xAAA oder eine Knopfzelle sind. So komme ich ohne 
Spannungswandler etc aus. Ich habe aktuell einen "schlafverbrauch" von 
4,7 Mikroampere. Somit halten alle Versionen zumindest 2 Jahre und 
länger.
Da ich diese Platine jederzeit mit anderen Sensoren bestücken möchte 
will ich mir alle Schnittstellen offen halten. Serial, Onwire, I2C und 
was es noch so gibt.
Nun hatte ich bei einigen Sensoren die unter 3,1 Volt gefallen sind das 
Problem das sie angefangen haben zu spinnen. Daraufhin hatte ich 
nachgeforscht und im Datenblatt des Megas die Tabelle gesehen mit den 
MHz zur Spannnung. Ich dann direkt etwas überrascht das es überhaupt mit 
der Konstellation funktioniert hat. Zumindest wenn ich davon ausgehe das 
der Mega mit 16 MHz läuft.
Da ich das ganze als Hobby betreibe, keineerleit sonstige Erfahrung mit 
Technik in der Art habe, fehlt mir das entsprechende Fachwissen worüber 
sich hier einige ergötzen mögen. Zum glück gibts auch andere die doch 
helfen möchten.
Assembler ... ja hatte ich auch ein Semester vor 15 Jahren.

Die Nodes schicken dann halt Ihre Daten über ein Funkmodul an ein 
Gateway und daran hängt eine Datenbank zur weiterverarbeitung.

So und wenn ich nun dem Sleepmodus über den internen RC-Oszillator 
laufen lasse komme ich irgendwie nicht auf einen Schlaf-Modus Strom von 
4,7 Mikroampere sondern mehr. Das ist irgendwie doof wenn man es mit 
Batterien betreibt. Wenn ich aber einen 16 MHz Quarz nehme komme ich da 
auf den genannten Wert.

Ich möchte doch an meinem Projekt nichts ändern außer den Mega im 
Spannungsbereich von 1,7 - 3,6 Volt stabil laufen haben ohne den 
Stromverbrauch zu erhöhen. Wenn der Strom noch weniger wird bin ich 
nicht böse drum. Darum verstehe ich nicht ganz warum das "drum herum" 
wichtig ist. Da ich aber nur Leihe bin wird es mir nun sicher jemand 
sagen.

von S. Landolt (Gast)


Lesenswert?

4.7 uA? - Welcher sleep-mode ist das, und wie erfolgt das Aufwecken?

von spess53 (Gast)


Lesenswert?

Hi

>Darum verstehe ich nicht ganz warum das "drum herum"
>wichtig ist.

Weil du in deiner Ahnungslosigkeit schon vieles falsch gemacht hast.

> Da ich aber nur Leihe bin wird es mir nun sicher jemand
>sagen.

Pfandleihe oder was?

MfG Spess

von R. B. (Gast)


Lesenswert?

Ok. Danke an die die es probiert haben mir zu helfen. Das Forum ist hier 
von Pros für Pros. Sorry das ich versucht habe Spas an der Materie zu 
finden. Aber hier will, bis auf einer, wohl niemand helfen und lieber 
Anfänger auslachen, beleidigen oder auf Lappalien rumreiten um sich zu 
profilieren.

Viel Spaß euch ;)

von Theor (Gast)


Lesenswert?

@ TO

Ich denke, es könnte Dir von Nutzen sein, welche Motive ein Teil der 
Menschen in diesem Forum hat. Ich rede hier von dem Teil, der Erfahrung 
und Wissen hat und der eine einigermaßen hilfsbereite Einstellung hat.

Diese Menschen haben irgendwann begonnen, sich aus reiner Faszination 
für das Thema Technik zu interessieren. Sie haben über lange Zeiten, 
über Jahre hinweg, Tage und Nächte lang Anstrengungen unternommen zu 
verstehen wie etwas funktioniert, warum es so und nicht anders gemacht 
wurde, wie die Dinge korrekt heissen, wie die Mathematik dahinter 
aussieht, welche handwerklichen Fähigkeiten dazu gehören und sie haben 
das Alles praktisch durchgeführt, gelesen, gelötet, diskutiert, haben 
Fehler gemacht und sind an mancher Stelle zeitweise gescheitert. Kurz: 
Sie haben Leidenschaft für das Thema entwickelt, haben auf Anderes 
verzichtet, Frustrationen ausgehalten, in vielen Fällen 
Persönlichkeitsentwicklungen durchgemacht, wie das bei jeder ernsthaften 
Beschäftigung mit irgendeiner Kunst der Fall ist.

Ich rate Dir, darüber mal ernsthaft und lang nachzudenken und auch mal 
zu betrachten, mit welchem Thema Du Dich wirklich ernsthaft und sogar 
leidenschaftlich beschäftigt hast und was Du dabei mit Dir und Anderen 
erlebt hast.

Sehr interessant könnte für Dich auch die Netiquette 
https://www.mikrocontroller.net/articles/Netiquette sein und ich möchte 
Dir besonders auf den dort verlinkten Artikel 
https://tty1.net/smart-questions_de.html empfehlen. Dort sind an einigen 
Stellen die Haltungen der oben von mir erwähnten Menschen erklärt.

Dann schaue Dir nochmal Deine Motive und die Art und Weise an, die Frage 
zu stellen, die Du hier gestellt hast. Vielleicht gehst Du dann die 
Sache auf neue Weise an, angefangen mit eigenen Anstrengungen.

von Rene K. (xdraconix)


Lesenswert?

Okay, es wird also eine Sensor Node. Wobei 4,7µA schon sehr sportlich 
sind. Aber okay... man muss sich Ziele setzen.

Welche Interaktion nutzt du um die µC aus dem Tiefschlaf zu wecken? Die 
Erfahrung die du gesammelt hast, das der µC mehr Strom verbraucht wenn 
der interne OSZ läuft ist richtig. Logisch, denn diese bedarf ja auch 
Strom (die externe im übrigen auch!).

Aber muss diese wirklich nachkalibriert werden? Ich denke nicht. Das 
einzigste Zeitkritische was ich lese ist die serielle Schnittstelle, 
diese ist aber robuster als du eventuell denkst.

Mein Vorschlag: nutze einen externe RTC - Vorteil: du hast eine 
Zeitbasis, du hast eine Möglichkeit zu bestimmten Zeiten den µC aus dem 
Tiefschlaf zu holen und in den meisten Fällen direkt einen 32Khz sowie 
einen 1Hz Ausgang. Als auch das sie für extrem niedrigen Energiebedarf 
ausgelegt sind.

Wenn es ja Nodes sind - willst du sie über Funk / Wlan kommunizieren 
lassen? Das wird dann in deinem System der größte Stromfresser werden.

von R. B. (Gast)


Lesenswert?

Rene K. schrieb:
> Okay, es wird also eine Sensor Node. Wobei 4,7µA schon sehr sportlich
> sind. Aber okay... man muss sich Ziele setzen.

Das habe ich aktuell schon erreicht. Ich meine natürlich in der zeit woe 
der Mega nicht aktiv ist. Aktuell sind es immer 8 Sekunden. Per Software 
läuft ein Zähler der das ganze dann auf 5 Minuten verlängert und dann 
die anderen Teile wie Sensoren oder das Funkmodul wieder aktiviert und 
sendet.

Oder meinste du mit der neuen Konfiguration?

> Welche Interaktion nutzt du um die µC aus dem Tiefschlaf zu wecken? Die
> Erfahrung die du gesammelt hast, das der µC mehr Strom verbraucht wenn
> der interne OSZ läuft ist richtig. Logisch, denn diese bedarf ja auch
> Strom (die externe im übrigen auch!).
>
> Aber muss diese wirklich nachkalibriert werden? Ich denke nicht. Das
> einzigste Zeitkritische was ich lese ist die serielle Schnittstelle,
> diese ist aber robuster als du eventuell denkst.
>
> Mein Vorschlag: nutze einen externe RTC - Vorteil: du hast eine
> Zeitbasis, du hast eine Möglichkeit zu bestimmten Zeiten den µC aus dem
> Tiefschlaf zu holen und in den meisten Fällen direkt einen 32Khz sowie
> einen 1Hz Ausgang. Als auch das sie für extrem niedrigen Energiebedarf
> ausgelegt sind.
>
Hatte ich auch schon überlegt und nachgeschaut. Dann kann man sich 
glaube auch das mit den 8 Sekundenschritten sparen und gleich eine Zeit 
vorgeben wann alles aufwachen soll. Dachte nur es geht sicher auch ohne.
>
> Wenn es ja Nodes sind - willst du sie über Funk / Wlan kommunizieren
> lassen? Das wird dann in deinem System der größte Stromfresser werden.
Da hast du recht. Das Funkmodul RFM69CW braucht definitiv am meisten 
Strom. Ist aber nur ganz kurz aktiv.


Ich schau mir die weiter oben verlinkten Beiträge über Ostern mal an und 
werde damit etwas rumprobieren.

von R. B. (Gast)


Lesenswert?

Rene K. schrieb:
> Mein Vorschlag: nutze einen externe RTC - Vorteil: du hast eine
> Zeitbasis, du hast eine Möglichkeit zu bestimmten Zeiten den µC aus dem
> Tiefschlaf zu holen und in den meisten Fällen direkt einen 32Khz sowie
> einen 1Hz Ausgang. Als auch das sie für extrem niedrigen Energiebedarf
> ausgelegt sind.

Hallo Rene.
Danke nochmal für deine vorherige Antwort. Ich bin nun dazu hingerissen 
evtl. wirklich eine RTC zu verbauen. Gefunden habe ich z.B. die DS1308. 
Diese soll, laut Usern im Internet, aber sehr ungenau gehen. Also mehrer 
Sekunden am Tag. Es ist bei mir nich so zeitkritisch, aber schön wäre es 
trotdem wenn es nicht so ungenau wäre.
Darauf hin schrieben einig die DS3231 und DS3232 sind viel genauer. 
Leider arbeiten die aber nur zwischen 2.3 V und 5.5 V und nicht wie die 
DS1308 zwischen 1.7 V und 5.5 V.
Ich hoffe es ist nich unverschämt diese bitte zu äußern. Hättest du ggf. 
eine low Current RTC mit guter Genauigkeit in diesem Spannungsbereich 
die du mir empfehlen kannst?

von Stefan F. (Gast)


Lesenswert?

Der DS1308 Chip an sich ist nicht schlecht, aber die Hersteller der 
Module setzen billigste Bauteile (meist auch Fälschungen vom Chip) ein 
und missachten grundlegende Layout Regeln. Das zusammen macht sie so 
ungenau.

von S. Landolt (Gast)


Lesenswert?

1.7 V kann ich nicht bieten, aber DS3234 läuft ab 2.0 V lt. Datenblatt, 
vielleicht geht auch etwas weniger.

von S. Landolt (Gast)


Lesenswert?

Pardon, das war ein Irrtum: zwar steht da "Supply Voltage 2.0 ... 5.5 
V", einige Zeilen tiefer aber "Power-Fail Voltage 2.45 ... 2.70 V"; und 
tatsächlich, unter zweieinhalb Volt läuft das Ding hier nicht an.
  Wobei übrigens der erwähnte DS3231 eine 'VPF' im selben Bereich 
aufweist lt. Datenblatt.

von Ich mach Bubu -was machst Du (Gast)


Lesenswert?

S. Landolt schrieb:
> Pardon, das war ein Irrtum: zwar steht da "Supply Voltage 2.0 ... 5.5
> V", einige Zeilen tiefer aber "Power-Fail Voltage 2.45 ... 2.70 V"; und
> tatsächlich, unter zweieinhalb Volt läuft das Ding hier nicht an.

Dafür läuft er über 5,5 Volt an -und zwar blau

?

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.