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.
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?
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? > [...]
> 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.
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.
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.
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
Also, fertige Bootloader gibt es einige, s. Unterforum 'Projekte & Code'. In Kombination mit diesem 32 KiHz-Quarz-Abgleich aber vermutlich nicht.
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?
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.
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
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.
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
> 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.
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.
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?
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.
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.
Robert B. schrieb: > Korregiert mich bitte wenn das falsch ist. Du liegst falsch. https://de.wikipedia.org/wiki/Vors%C3%A4tze_f%C3%BCr_Ma%C3%9Feinheiten#SI-Pr%C3%A4fixe
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...
> 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.
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.
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.
> 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.
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
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.
> 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.
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...
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.
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...
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.
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.
4.7 uA? - Welcher sleep-mode ist das, und wie erfolgt das Aufwecken?
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
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 ;)
@ 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.
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.
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.
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?
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.
1.7 V kann ich nicht bieten, aber DS3234 läuft ab 2.0 V lt. Datenblatt, vielleicht geht auch etwas weniger.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.