Der AVR-/ARDUINO-Faden

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

ch_ris
Beiträge: 3029
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

grad nochmal probiert, mit/ohne else macht keinen Unterschied.

eclipse:

Code: Alles auswählen

'Building target: VoltLED'
'Printing size:'
"E:\Tools\Eclipse_Sloeb_433\arduinoPlugin\packages\arduino\tools\avr-gcc\4.8.1-arduino5/bin/avr-size" -A "D:\Eclipse_Workspaces\sloeber4.3.1\VoltLED\Release/VoltLED.elf"
D:\Eclipse_Workspaces\sloeber4.3.1\VoltLED\Release/VoltLED.elf  :
section           size      addr
.text             4498         0
.data              116   8388704
.bss               352   8388820
.comment            17         0
.debug_aranges    1264         0
.debug_info      32126         0
.debug_abbrev     6845         0
.debug_line       8240         0
.debug_frame      3548         0
.debug_str        9662         0
.debug_loc       22669         0
.debug_ranges     1368         0
Total            90705


'Finished building target: VoltLED'
' '

15:02:40 Build Finished. 0 errors, 0 warnings. (took 13s.181ms)
mit arduino hab ichs auch gebaut, genau der gleiche fehler.

Code: Alles auswählen

Couldn't deeply cache core build: Rel:
Running normal build of the core...
Der Sketch verwendet 4614 Bytes (76%) des Programmspeicherplatzes. Das Maximum sind 6012 Bytes.
Globale Variablen verwenden 468 Bytes des dynamischen Speichers.
eclipse behauptet zwei errors zu finden:

Code: Alles auswählen

Description	Resource	Path	Location	Type
The type 'DigiUSBDevice' must implement the inherited pure virtual method 'Print::write' 	DigiUSB.cpp	/VoltLED/libraries/DigisparkUSB	line 214	Code Analysis Problem
The type 'DigiUSBDevice' must implement the inherited pure virtual method 'Print::write' 	DigiUSB.cpp	/VoltLED/libraries/DigisparkUSB	line 214	Code Analysis Problem
ich glaub aber das ist ein sporadisch quer hängender Pup.
Benutzeravatar
Finger
Administrator
Beiträge: 7392
Registriert: Di 12. Jun 2012, 20:16
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Finger »

Ich hänge an dem hier:
Globale Variablen verwenden 468 Bytes des dynamischen Speichers.
Wieviel RAM hat die Kiste?
ch_ris
Beiträge: 3029
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

tiny85. glaub 500?
ich denke du hast recht, das könnte einfach nur zu viel gewesen sein. :?:

verdammt!
hab noch mal bisschen aufgeräumt, nu gehts. :oops:
und jetzt bin ich bei 458 mit dem zweiten if.
Benutzeravatar
Finger
Administrator
Beiträge: 7392
Registriert: Di 12. Jun 2012, 20:16
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Finger »

Das der Linker da kein Warning generiert ist schon doof. Aber zuwenig RAM sorgt gerne für die absonderlichsten Laufzeitprobleme....
Benutzeravatar
Fritzler
Beiträge: 12579
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Fritzler »

Der Linker beim gcc generiert dir nurn Warning wenn du sowas im Linkerscript einbaust.
Woher soll der Linker denn wissen wie groß der RAM ist?
Wenn man bei brauchbaren IDEs den Prozessor angibt, dann wird im Linkerscript nen Makro ausgefüllt.

Hier mal wie ich das bei ARM mache:
linker.txt
(2.18 KiB) 35-mal heruntergeladen
Wenn der RAM aber schon voll ist mit .data, dann fliegt dir trotzdem noch der Stack um die Ohren.
Das ist eine hohe Kunst den maximalan Stackverbrauch eines Programms herauszufinden :mrgreen:

PS:
Könntet ihr mal .lds freischalten im Upload?
So enden meistens Linkerscripte.
nero
Beiträge: 698
Registriert: Mo 12. Aug 2013, 11:58
Wohnort: Oberbayern

Re: Der AVR-/ARDUINO-Faden

Beitrag von nero »

Fritzler hat geschrieben: Mo 11. Jan 2021, 18:07
Das ist eine hohe Kunst den maximalan Stackverbrauch eines Programms herauszufinden :mrgreen:
Unbenannt.PNG
Kratlclipse macht das mit Hilfe von ST recht gut. An Rekursionen scheiterts dann.

Sonst issses immer noch recht hilfreich den RAM anfangs mit 5A zu füllen und nach einmal richtig laufen lassen den RAM wieder auslesen. Da wo die 5A aufhöhren geht der Stack an
RTOS (nach Wahl) haben sowas idR eingebaut.
Benutzeravatar
Fritzler
Beiträge: 12579
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Fritzler »

nero hat geschrieben: Mo 11. Jan 2021, 18:24 Kratlclipse macht das mit Hilfe von ST recht gut. An Rekursionen scheiterts dann.
Das ist jetzt aber nur ein Call Graph für eine grade aufgerufene Funktion beim debuggen?
Oder seh ich das falsch?
Selbst wenn man das rausgefunden hat, dann könne (bei Cortex-M) dir immernoch mehrere nested IRQs den Tag versauen.
nero hat geschrieben: Mo 11. Jan 2021, 18:24 Sonst issses immer noch recht hilfreich den RAM anfangs mit 5A zu füllen und nach einmal richtig laufen lassen den RAM wieder auslesen. Da wo die 5A aufhöhren geht der Stack an
RTOS (nach Wahl) haben sowas idR eingebaut.
Das ist dann aber auch erst post mortem und nur für den grade durchgelaufenen Input.
Wenn dann mal ein anderer (unvorhergesehener) Input kommt, kanns immernoch krachen.
Große Kunst eben.

FreeRTOS kann Magic Patterns am start/ende vom Stack anlegen und ruft einen Callback auf wenn das verletzt/überschrieben wurde.

Der GCC hat da ja schon was eingebaut, aber leider nicht als wunschlos glücklich Version, man muss rumfrickeln:
www.adacore.com/uploads/technical-paper ... alysis.pdf
Aber auch das kann mal gut daneben liegen!
Mit LTO ging das Ganze dann sogar komplett kaputt (oder is das inzwischen gefixt?)
nero
Beiträge: 698
Registriert: Mo 12. Aug 2013, 11:58
Wohnort: Oberbayern

Re: Der AVR-/ARDUINO-Faden

Beitrag von nero »

Static Stack Analyzer. Also kein Ausführen nötig. Das fällt "irgendwie" ausm gcc mit raus
bei Rekursion etc scheiterts natürlich.
Aber ein printf, welches ganz tief unten zum Überlauf führt, findet man damit recht zuverlässig.

Der Trick ist eben den gesamten (Stack) RAM eindeutig zu füllen. Dann sieht man bis wohin er wächst. Zumindest typischerweise bei geplanter Anwendung oder im Test (der ja gerne auch quälen darf).
Das geht alles ohne Crash.

Wenns bis zum Crash kommt oder man einen Overflow im Verdacht hat (und man zur Laufzeit debuggen kann) hilft im gdb "rwatch". Das löst einen break beim Speicherzugriff aus. Den auf das Stackende setzen.
Benutzeravatar
Fritzler
Beiträge: 12579
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Fritzler »

nero hat geschrieben: Mo 11. Jan 2021, 18:59 Static Stack Analyzer. Also kein Ausführen nötig. Das fällt "irgendwie" ausm gcc mit raus
Dann funzt das wohl so wie im verlinkten Paper.
Der GCC kann pro Objektdatei und darin enthaltener Funktion die Stackgröße ausgeben.
Dann kann der GCC auch eine Callgraph anylse anfertigen.
Jetzt beides verbinden (macht der GCC leider nicht von sich aus), also ALLE Pfade durchgehen und STackgrößen aufaddieren.
Irgendeiner der Pfade hat dann den größten Stackverbrauch.
Das muss nicht der tiefste Pfad sein, irgendwer packt immer (ausversehen) Arrays auf den Stack :lol:
nero hat geschrieben: Mo 11. Jan 2021, 18:59 Der Trick ist eben den gesamten (Stack) RAM eindeutig zu füllen.
Da bin ich jetzt auch von nichts Anderem ausgegangen.
nero hat geschrieben: Mo 11. Jan 2021, 18:59 Zumindest typischerweise bei geplanter Anwendung oder im Test (der ja gerne auch quälen darf).
Ja eben typisch und für die sich ausgedachten Quälorgien im Test.
Dann kommt Murphy!
Auf 10 Byte genau sollt mans daher nicht treibern, auch wenn der RAM knapp wird.
Daher ja "große Kunst", einen guten Anhaltspunkt liefert das aber allemal.
nero hat geschrieben: Mo 11. Jan 2021, 18:59 Wenns bis zum Crash kommt oder man einen Overflow im Verdacht hat (und man zur Laufzeit debuggen kann) hilft im gdb "rwatch". Das löst einen break beim Speicherzugriff aus. Den auf das Stackende setzen.
Das geht auch ohne (du hattest ja nen Cortex-M ST Bild reingesetzt), setz den Stack an RAM Anfang.
Wenn der rauswandert gibts nen hardfault.
(oder busfault wenn du schöne faulthandler nutzt)
Das ist ncht nur zum debuggen super, sondern auch später im Produktiveinsatz.
Dann macht das Programm nicht erst irgendeinen Murks weils zB eine Sprungadresse überschrieben hat.
ch_ris
Beiträge: 3029
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

ich hab, ehrlich gesagt, keine Ahnung wovon ihr redet.
auch dachte ich, meine ich hab's mal gelesen, dynamisch speicher allokieren wäre nicht möglich auf dem avr.

hab mal minimal code zum eeprom<>v-usb probiert, der braucht schon 370b Ram.
die rxtx buffer von DigiUSB haben je 128b, vielleicht könnte man da noch was drehen.

edit. hab mal auf 64 geändert, scheint keine Probleme zu machen.
mit 32 wiederum geht's nicht, obwohl meine längste zeichenkette 18 zeichen ist.
Benutzeravatar
Finger
Administrator
Beiträge: 7392
Registriert: Di 12. Jun 2012, 20:16
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Finger »

Aber du hast dein Problem gelöst :mrgreen:
ch_ris
Beiträge: 3029
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

Dank eurer Hilfe!
glaube ich muss hier bei dem kleinen Ding meinen Ansatz überdenken:
lustig los gehackt, String's sind toll weil bequem, huch- 7Kb sind zu viel.
von da aus hab ich's verkleinert und hab vermutlich immer um diese Ram problematik drum herum programmiert.
in der Annahme die Probleme wären andere.
Es war holprig. :lol:
Benutzeravatar
Cubicany
Beiträge: 3543
Registriert: Sa 15. Feb 2020, 17:48
Wohnort: Soest

Re: Der AVR-/ARDUINO-Faden

Beitrag von Cubicany »

Gibt es eine Möglichkeit, wie ich an einem Nano stumpf nacheinander die Ausgänge durchschalten kann?

Habe hier eine Anordnung von Leuchtmeldern, die so LED Einsätze für bis
24V drin haben, die schon bei 5V schön diffus leuchten. So hell sollen die nicht.
Und die sollen nacheinander durch laufen.

Es müsste ja irgendeine Alternative zu

/digitalWrite Pin x High
/delay 500

usw. geben, die einen schlankeren Fuß macht.

Gibt es da irgendeine Art Schieberegiser, Schleife oä.?
Benutzeravatar
Hightech
Beiträge: 11306
Registriert: So 11. Aug 2013, 18:37

Re: Der AVR-/ARDUINO-Faden

Beitrag von Hightech »

For ( int a, a=<16, a++){
digitalWrite(a, HIGH);
Delay(1000);
digitalWrite(a,LOW);
Delay(1000);
}
So oder ähnlich
gtfn-e
Beiträge: 7
Registriert: Do 27. Aug 2020, 10:48

Re: Der AVR-/ARDUINO-Faden

Beitrag von gtfn-e »

for (int a = 0; a <= 16; a++) {
...
Benutzeravatar
Cubicany
Beiträge: 3543
Registriert: Sa 15. Feb 2020, 17:48
Wohnort: Soest

Re: Der AVR-/ARDUINO-Faden

Beitrag von Cubicany »

Habe jetzt erst mal weil nur 6 LEDs verbaut sind, den Code "händisch" so aufgebaut, dass ich erst
mal alle LEDs schön den Ports 7 bis 12 zugeteilt habe und dann im eigentlichen Loop dann mal das
Alphabet für Sehbehinderte durchlaufen lasse. Das ganze klemmt derzeit am Fenster mit Blick
nach draußen. Einfach nur, um sich den Gag zu erlauben, wann die Leute anfangen zu fragen, was
das denn für "griechische Symbole" sind, die ich da ins All sende. ;) :lol:

Ne Schleife ist dafür etwas ungeeignet.
Benutzeravatar
Sven
Beiträge: 4421
Registriert: Fr 28. Jun 2013, 12:52
Wohnort: Sechsundzwanzigdreisechzehn

Re: Der AVR-/ARDUINO-Faden

Beitrag von Sven »

Du könntest auch direkt aufs Port Register schreiben und in einer Schleife mit den Shift Operatoren ein Bit durchschieben.
Funktioniert natürlich nur, wenn alles an einem Port hängt und der Port nur die LEDs ansteuert.
Benutzeravatar
phettsack
Beiträge: 1186
Registriert: Mo 12. Aug 2013, 18:17

Re: Der AVR-/ARDUINO-Faden

Beitrag von phettsack »

Ich werfe mal die Library Ticker in den Hut.
Damit kann man sich verschiedene Ticker/Timer definieren und ist nicht mehr drauf angewiesen selber mit Delay zu stochern.

Den Tickerzähler kann man dann mit einem Modulo auswerten und dadurch die Ausgänge hochzählen:

Code: Alles auswählen

switch (timer1.counter() % 16) {
case 0:
 PIN1 = HIGH;
 break;
case 1:
 PIN2 = HIGH;
 break;
... usw
}
Das ist jetzt nur ein grober Entwurf, so aus dem Kopf runtergekurbelt.
MSG
Beiträge: 2182
Registriert: Fr 9. Nov 2018, 23:24
Wohnort: Nähe Dieburg

Re: Der AVR-/ARDUINO-Faden

Beitrag von MSG »

phettsack hat geschrieben: Fr 22. Jan 2021, 12:07Delay
delay ist eine Krankheit. Das bremst die komplette loop() Schleife aus. Und damit hat man dann wunderschöne Effekte bei Multiplexanzeigen,... :)

Ich mach das immer so:

Code: Alles auswählen

// global Data
unsigned long gNow; // current time

void loop() {
  gNow = millis(); // used in many other functions
  doSomething();
  ....
}

void doSomething(){
  static unsigned long sLastUpdateTime;  // time of last execution
  const int cRefresh = 100;   // execute every 100 ms

  if ( sLastUpdateTime < ( gNow - cRefresh ) ) {
    sLastUpdateTime = gNow;
    .....  // 
    }
}

j.o.e
Beiträge: 541
Registriert: Fr 29. Nov 2019, 01:15

Re: Der AVR-/ARDUINO-Faden

Beitrag von j.o.e »

gtfn-e hat geschrieben: Do 21. Jan 2021, 11:42 for (int a = 0; a <= 16; a++) {
...
So die Pins nicht aufsteigend sind, kann man mit a ein Array indizieren.

const int ledo[] = { LED2, LED7, LED1, ...};

und dann statt
digitalWrite(a, ...)
eben
digitalWrite(ledo[a], ...)

Oder so ...
IPv6
Beiträge: 2166
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 »

MSG hat geschrieben: Fr 22. Jan 2021, 12:35 Ich mach das immer so:

Code: Alles auswählen

...
  if ( sLastUpdateTime < ( gNow - cRefresh ) ) {
 ...
Das ist genau der "falsche" Weg, der nach den 56 Tagen und einem Überlauf Probleme machen kann.
Mit fiktiven Werten als Beispiel:
Variable läuft nach 999 über, wird also nicht 1000, sondern nach 999 wieder zu 0.

Wird jetzt deine Funktion bei Timerstand = 999 aufgerufen (zufälligerweise) kann deine Abfrage nie mehr wahr werden, denn es kann keinen Wert größer 999 geben der die Abfrage wahr werden lassen würde.

Die Abfrage muss andersrum gestaltet werden:

Code: Alles auswählen

if (currentMillis - previousMillis >= interval)
Damit läuft das auch mit Überläufen in jedem Fall sauber.
Benutzeravatar
sukram
Beiträge: 3063
Registriert: Sa 10. Mär 2018, 18:27
Wohnort: Leibzsch

Re: Der AVR-/ARDUINO-Faden

Beitrag von sukram »

Wenn es ein 32 Bit Integer ist, sind es 49 Tage 17 Stunden 2 Minuten und ein paar Bröckchen. Das gleiche Problem lief mir erst vor kurzem auf meiner SPS über den Weg (dort in ST, aber gleiches Grundproblem).
MSG
Beiträge: 2182
Registriert: Fr 9. Nov 2018, 23:24
Wohnort: Nähe Dieburg

Re: Der AVR-/ARDUINO-Faden

Beitrag von MSG »

IPv6 hat geschrieben: Fr 22. Jan 2021, 13:05 Das ist genau der "falsche" Weg, der nach den 56 Tagen und einem Überlauf Probleme machen kann.

Die Abfrage muss andersrum gestaltet werden:

Code: Alles auswählen

if (currentMillis - previousMillis >= interval)
Damit läuft das auch mit Überläufen in jedem Fall sauber.
Ich sehe das Problem (tauchte bei mir noch nicht auf, da das Programm immer nur ein paar Stunden lief ;) ) und versuch grad deine Lösung nachzuvollziehen.

Annahme: Die Variablen haben einen Bereich von 0 bis 1000, damit es leichter nachzuvollziehen ist:

currentMillis wäre 2 (weil gerade übergelaufen)
previousMillis wäre 900 (Ausführung vor dem Überlauf)
interval wäre 100, damit der Programmteil alle 100ms ausgeführt wird:

if (currentMillis - previousMillis >= interval) <=>
if ( 2 - 900 >= 100 )
Da ist jetzt die Frage was 2 - 900 beim Datentyp unsigned int long als Ergebnis hat *grübel*
IPv6
Beiträge: 2166
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 »

Wenn alle Variabeln vom Typ unsigned long sind, was sie sein müssen, damit sie auch gleichartig überlaufen, dann sind unter den genannten Voraussetzung 2 - 900 = 999 - 897 = 102.

Man kann die überlaufenden Variabeln wie eine Uhr betrachten, nach der 12 kommt die 1, so auch umgekehrt. Zwei Stunden vor 1 Uhr war es eben 11 Uhr.
j.o.e
Beiträge: 541
Registriert: Fr 29. Nov 2019, 01:15

Re: Der AVR-/ARDUINO-Faden

Beitrag von j.o.e »

MSG hat geschrieben: Fr 22. Jan 2021, 13:54
IPv6 hat geschrieben: Fr 22. Jan 2021, 13:05 Das ist genau der "falsche" Weg, der nach den 56 Tagen und einem Überlauf Probleme machen kann.

Die Abfrage muss andersrum gestaltet werden:

Code: Alles auswählen

if (currentMillis - previousMillis >= interval)
Damit läuft das auch mit Überläufen in jedem Fall sauber.
Ich sehe das Problem (tauchte bei mir noch nicht auf, da das Programm immer nur ein paar Stunden lief ;) ) und versuch grad deine Lösung nachzuvollziehen.

Annahme: Die Variablen haben einen Bereich von 0 bis 1000, damit es leichter nachzuvollziehen ist:

currentMillis wäre 2 (weil gerade übergelaufen)
previousMillis wäre 900 (Ausführung vor dem Überlauf)
interval wäre 100, damit der Programmteil alle 100ms ausgeführt wird:

if (currentMillis - previousMillis >= interval) <=>
if ( 2 - 900 >= 100 )
Da ist jetzt die Frage was 2 - 900 beim Datentyp unsigned int long als Ergebnis hat *grübel*
Der von Dir am Beispiel "damit es leichter nachzuvollziehen ist" gewähle Datentyp ist nicht "unsigned int long" - darum führt deine Überlegung zum Widerspruch. Anschaulicher ist das Schriftliche Subtrahieren:

002
- 900
1 <-- geliehen
--------
102

Bei der 100-er Stelle (also 0 - 9) musstest Du dir eine 1 (also 1000) leihen, damit ergibt sich 10 - 9 = 1. Ergo lautet das Ergebnis 102.

Die geliehene 1 (=1000) geht unter, da im Überlauf - denn dein Datentyp kann ja nicht unterscheiden zwischen 0 und 1000.
Benutzeravatar
Wulfcat
Beiträge: 1852
Registriert: Mi 14. Aug 2013, 22:43
Wohnort: Neuss, NRW, Dland,Kontinent Europa, Planet Erde, 3ter Planet Solsystem, Nördliche Spiralarm Milchstr

Re: Der AVR-/ARDUINO-Faden

Beitrag von Wulfcat »

Hallo.... Ich glaube ich werde mit meinen Fragen das Nieveau hier erst einmal etwas herunter ziehen...... ;)

Ich habe mir zum Einstig in die Arduino Programmierung / Nutzung so ein Emakefun Nano Starterkit zugelegt...
Habe schon die Arduino IDE installiert und zum laufen bekommen und werde die "Experimente" / Beispiele nacheinander durcharbeiten...... Hauptsächlich um das Einspielen der Software/Umsetzen der "Sketches" zu üben.
Nur ein Systematischer einstig in die Programmierung für einen DAU wie mich fehlt da.....
Habt ihr einen Tip für ein gutes Tutoriel....... Buch..... ecetera????
Was ich beim rumgokkeln gefunden hatte bezog sich auf Arduino UNO und nicht den Nano in meinem Kit...
Oder kann man durch umstellen des Zielsystems in der IDE von Uno auf Nano die Tutorials auch benutzen?????

Was ist von dem Buch "Arduino für Dummis" zu halten (Fand die Reihe eigentlich ganz gut für die Einstige in neue Bereiche......)
Jetzt könnt ihr erst einmal herzlich lachen.... 8-)
Anse
Beiträge: 2278
Registriert: Mo 12. Aug 2013, 21:30
Wohnort: Bühl (Baden)

Re: Der AVR-/ARDUINO-Faden

Beitrag von Anse »

Wulfcat hat geschrieben: So 24. Jan 2021, 23:55 Was ich beim rumgokkeln gefunden hatte bezog sich auf Arduino UNO und nicht den Nano in meinem Kit...
Oder kann man durch umstellen des Zielsystems in der IDE von Uno auf Nano die Tutorials auch benutzen?????
Kurz gegooled, Da ist jeweils ein Atmega328 drauf. Also bis aufs Layout gleich. Die Pin-Nummern sind ja im Arduino Universum irgend wie "genormt". Sollte also auch mit dem Nano gehen. Der nano muss aber auf ein Breadboard.
Wulfcat hat geschrieben: So 24. Jan 2021, 23:55 Habt ihr einen Tip für ein gutes Tutoriel....... Buch..... ecetera????
Ein paar Beispiele nachbauen um den Umgang mit der IDE zu lernen ok. Aber danach such Dir ein konkretes Projekt. Sonst wird das nichts. Ging mir nicht anders. Damals aber noch ohne Arduino.
Benutzeravatar
Wulfcat
Beiträge: 1852
Registriert: Mi 14. Aug 2013, 22:43
Wohnort: Neuss, NRW, Dland,Kontinent Europa, Planet Erde, 3ter Planet Solsystem, Nördliche Spiralarm Milchstr

Re: Der AVR-/ARDUINO-Faden

Beitrag von Wulfcat »

Anse hat geschrieben: Mo 25. Jan 2021, 00:07
Wulfcat hat geschrieben: So 24. Jan 2021, 23:55 Was ich beim rumgokkeln gefunden hatte bezog sich auf Arduino UNO und nicht den Nano in meinem Kit...
Oder kann man durch umstellen des Zielsystems in der IDE von Uno auf Nano die Tutorials auch benutzen?????
Kurz gegooled, Da ist jeweils ein Atmega328 drauf. Also bis aufs Layout gleich. Die Pin-Nummern sind ja im Arduino Universum irgend wie "genormt". Sollte also auch mit dem Nano gehen. Der nano muss aber auf ein Breadboard.
Wulfcat hat geschrieben: So 24. Jan 2021, 23:55 Habt ihr einen Tip für ein gutes Tutoriel....... Buch..... ecetera????
Ein paar Beispiele nachbauen um den Umgang mit der IDE zu lernen ok. Aber danach such Dir ein konkretes Projekt. Sonst wird das nichts. Ging mir nicht anders. Damals aber noch ohne Arduino.
Ok Uno Ähnlich wie Nano..... Werde das ding mal genau gokkeln und mir das entscheidene rausschreiben...

Breadbord hab ich schon.... Hab mir schon ne Holz Büchse gebaut mit Breadbords, Stromversorgung und noch kommendem anderen... Zum mitnehmen..... "Pausenvergnügen" und schnellem "Zuklappen"... :lol:

Projekte hab ich genug.... ZB Li Ion Zellen Tester mit 10 Steckpätzen für Zellen..... Hab ich nur noch nicht weit umgesetzt weil ich mich gezogen habe, das ganze in Hardwired Logic zu bauen.
Wäre nen IC Massengab geworden...... Schaltplatine mit 20 Relais gibst schon und Ladeschaltung........
Nur 20 Kanäle passen nich so recht zum Arduino..... Wobei.... ich hab da noch ein paar Klassische 8255 Pio´s
:lol:

Gibt es ein gutes Tutorial zur Programm Syntax was auch in mein altes "Analoges" hirn passt? :lol:
Nach allem was ich jetzt schon Quergelesen hab kann amn die Arduinos auch prima per C / C++ Progarmmieren kann.... Hab auch das schon ne weile liegen, konnte nur bisher nicht den Arsch für hoch bekommen..... 8-)
Auf Fusspilzebene will ich nach möglichkein in der ersten zeit nicht Programmieren.....(Hab das vor 30 Jahren mit Z80 gemacht.... ich sag nur mit Papier und Bleistift compilieren..... :roll: )
ch_ris
Beiträge: 3029
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

puh,
Arduino Referenz wäre nicht schlecht zum Einstieg glaub ich:
https://www.arduino.cc/reference/en/

Kaiser-Kecher C/C++ Bibel mit 1400 seiten.( ich weis ned, zum Nachschlagen sicher nicht schlecht, ich guck selten rein )

stackoverflow.com hat mir mehr/öfter geholfen.

aber: ich kann nix, vielleicht musst du es also genau anders machen.
Benutzeravatar
Später Gast
Beiträge: 1680
Registriert: Di 5. Apr 2016, 22:03
Wohnort: Karlsruhe
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Später Gast »

Wulfcat hat geschrieben: Mo 25. Jan 2021, 00:41
Projekte hab ich genug.... ZB Li Ion Zellen Tester mit 10 Steckpätzen für Zellen..... Hab ich nur noch nicht weit umgesetzt weil ich mich gezogen habe, das ganze in Hardwired Logic zu bauen.
Wäre nen IC Massengab geworden...... Schaltplatine mit 20 Relais gibst schon und Ladeschaltung........
Nur 20 Kanäle passen nich so recht zum Arduino..... Wobei.... ich hab da noch ein paar Klassische 8255 Pio´s
:lol:
Expander brauchste wg 20 IO Pins nicht, es gibt ja auch noch den Mini Mega 2560.(bescheuerter Name :roll: )

Was ich mittlerweile an C pfuschpfusch kann, habe ich auch aus der Arduino Reference + zusammengeklauter Code von zu meinen Projekten passenden Sachen gelernt. Ist ganz praktisch, weil da kann man zumindest hoffen, dass der Code funktioniert und den dann auf die eigenen Bedürfnisse anpassen. Aus Büchern lernen tuts nicht so gut für mich.
MSG
Beiträge: 2182
Registriert: Fr 9. Nov 2018, 23:24
Wohnort: Nähe Dieburg

Re: Der AVR-/ARDUINO-Faden

Beitrag von MSG »

Zum Einstieg empfiehlt sich das z.B. Arduino Kochbuch.

http://myhomearchiv.synology.me/downloa ... chbuch.pdf

Ist zwar nicht das neuste Buch, aber da wird viel erklärt.

Ob das ein Arduino Mega/Nano/Uno.... ist, ist erst einmal egal. Sie unterschieden sich anhand des Speichers und der Ein- / Ausgänge.
Das Pinout ist natürlich verschieden und ebenso die verschiedenen Möglichkeiten der Pins.

Nano: https://i2.wp.com/www.teachmemicro.com/ ... 1500&ssl=1
Uno: https://i.pinimg.com/originals/f9/cf/ec ... 44ee73.png

Einfach mal nach
Arduino uno pinout
googeln :)
gtfn-e
Beiträge: 7
Registriert: Do 27. Aug 2020, 10:48

Re: Der AVR-/ARDUINO-Faden

Beitrag von gtfn-e »

Das hier hat mir sehr geholfen:

https://www.arduinoforum.de/referenz.php
Benutzeravatar
Wulfcat
Beiträge: 1852
Registriert: Mi 14. Aug 2013, 22:43
Wohnort: Neuss, NRW, Dland,Kontinent Europa, Planet Erde, 3ter Planet Solsystem, Nördliche Spiralarm Milchstr

Re: Der AVR-/ARDUINO-Faden

Beitrag von Wulfcat »

Danke schon mal für die erste "Infoflut"
Werd mir ersteinmal einiges Runterladen und in Papier verwandeln(Damit man sich dann da hinein eigene Notizen machen)
Wenn ich die ersten Dinger durchgearbeitet hab, werd ich, wenn Probleme ihre hässichen Häupter erheben, euch mit weiteren dummen Fragen nerven.... :mrgreen:
Schon mal Danke an alle. 8-)
Benutzeravatar
reutron
Beiträge: 1953
Registriert: Mo 12. Aug 2013, 19:58
Wohnort: Gottow
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von reutron »

Ich kann das "Arduino Kompendium" empfehlen.....
Eckdaten zum Buch:
-Verlag – BMU Verlag
-Author – Danny Schreiter
-Seitenzahl – 534
-Preis
ebook – 9,99€
Taschenbuch – 17,99€
Hardcover – 24,99€
-ISBN – 978-3-96645-017-1

Hatte ich mir zugelegt nach dem ich im Netz mehrfach solche Beurteilung gelesen habe.
"Das Buch gibt einem Anfänger quasi alles in die Hand was benötigt wird um gleich los zulegen.
Wenn man also dem Buch noch einen Arduino UNO, ein USB Kabel und ein paar kleine, elektronische Bauteile beilegen würde. Hätte man das komplette Starterpaket. "
Benutzeravatar
Wulfcat
Beiträge: 1852
Registriert: Mi 14. Aug 2013, 22:43
Wohnort: Neuss, NRW, Dland,Kontinent Europa, Planet Erde, 3ter Planet Solsystem, Nördliche Spiralarm Milchstr

Re: Der AVR-/ARDUINO-Faden

Beitrag von Wulfcat »

reutron hat geschrieben: Mo 25. Jan 2021, 19:00 Ich kann das "Arduino Kompendium" empfehlen.....
Eckdaten zum Buch:
-Verlag – BMU Verlag
-Author – Danny Schreiter
-Seitenzahl – 534
-Preis
ebook – 9,99€
Taschenbuch – 17,99€
Hardcover – 24,99€
-ISBN – 978-3-96645-017-1

Hatte ich mir zugelegt nach dem ich im Netz mehrfach solche Beurteilung gelesen habe.
"Das Buch gibt einem Anfänger quasi alles in die Hand was benötigt wird um gleich los zulegen.
Wenn man also dem Buch noch einen Arduino UNO, ein USB Kabel und ein paar kleine, elektronische Bauteile beilegen würde. Hätte man das komplette Starterpaket. "
Danke für die Info... Werd mir das Buch anschauen..... Klingt interressant
andreas6
Beiträge: 4149
Registriert: So 11. Aug 2013, 15:09

Re: Der AVR-/ARDUINO-Faden

Beitrag von andreas6 »

Als kleines Projekt habe ich den AVR-Transistortester nach dem Bauvorschlag von Kübbeler auf einer Streifenrasterkarte aufgebaut, mit der richtigen Software den neuen Atmega328 in der Schaltung geflasht und er reagiert soweit auf den Einschaltknopf, bleibt etwa eine Minute an mit leuchtender Led und geht dann wieder aus. Leider bleibt das 2x16-Lcd tot, es wird nichts dargestellt. Eine Messung zeigt, dass wenigstens eine der vier Datenleitungen ständig auf Null liegt. Die anderen bewegen sich zumindest und haben 5V-Pegel mit Impulsen. Mit dem Diodentest vom Multimeter trocken vermessen, sind alle Datenleitungen frei, keine hat einen Schluss nach Masse. Hat jemand dieses Projekt auch so aufgebaut und zum Rennen gebracht?

MfG. Andreas
Benutzeravatar
Fritzler
Beiträge: 12579
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Fritzler »

Wackelt der AVR Pin denn ohne das Display?
Auf Streifenraster hatte ch das nie aufgebaut, nur mit eigenen Platinen.
Da hätte ich noch welche über wenn du haben willst.
andreas6
Beiträge: 4149
Registriert: So 11. Aug 2013, 15:09

Re: Der AVR-/ARDUINO-Faden

Beitrag von andreas6 »

Ohne Lcd habe ich noch nicht gemessen, hole ich nach. Danke fürs Angebot, aber ich möchte das genau mit der Streifenkarte so bauen. Die hat nämlich eine andere Pinbelegung für den Controller als üblich. Es könnte sein, dass die Software dazu nicht mehr passt durch die vielen Änderungen im Laufe der Zeit. Daher auch die Frage nach einem erfolgreichen Aufbau.

MfG. Andreas
bastelheini
Beiträge: 1663
Registriert: So 11. Aug 2013, 13:55

Re: Der AVR-/ARDUINO-Faden

Beitrag von bastelheini »

andreas6 hat geschrieben: Di 26. Jan 2021, 11:26 Als kleines Projekt habe ich den AVR-Transistortester nach dem Bauvorschlag von Kübbeler auf einer Streifenrasterkarte aufgebaut, mit der richtigen Software den neuen Atmega328 in der Schaltung geflasht und er reagiert soweit auf den Einschaltknopf, bleibt etwa eine Minute an mit leuchtender Led und geht dann wieder aus. Leider bleibt das 2x16-Lcd tot, es wird nichts dargestellt. Eine Messung zeigt, dass wenigstens eine der vier Datenleitungen ständig auf Null liegt. Die anderen bewegen sich zumindest und haben 5V-Pegel mit Impulsen. Mit dem Diodentest vom Multimeter trocken vermessen, sind alle Datenleitungen frei, keine hat einen Schluss nach Masse. Hat jemand dieses Projekt auch so aufgebaut und zum Rennen gebracht?

MfG. Andreas
gabs an LCDs nicht ein Kontrastpoti, das wenn falsch eingestellt halt dafür sorgte, das man nix sah?
andreas6
Beiträge: 4149
Registriert: So 11. Aug 2013, 15:09

Re: Der AVR-/ARDUINO-Faden

Beitrag von andreas6 »

Korrekt. Das wurde auch mehrfach herum gedreht. Aber wenn eine Datenleitung nicht schaltet, kann auch nichts an Daten ankommen.

MfG. Andreas
runni
Beiträge: 114
Registriert: Do 18. Okt 2018, 09:54
Wohnort: München

Re: Der AVR-/ARDUINO-Faden

Beitrag von runni »

Hab das auf Lochraster mit einem 2x16 Display am laufen, erst mit Atmega 8, seit 2014 328.. geht ohne Probleme. Ich kann Dir das eeprom und hex File von damals zusenden. Fuses sind glaube ich original wie ausgeliefert geblieben.

Als Schaltung hab ich die von Markus F. ohne Abschaltung, da ich das Teil von einer AA Zelle mit 5V StepUp versorge.
IMG_20210126_183212bs.jpg
IMG_20210126_183236bs.jpg
andreas6
Beiträge: 4149
Registriert: So 11. Aug 2013, 15:09

Re: Der AVR-/ARDUINO-Faden

Beitrag von andreas6 »

Danke, das ist die ursprüngliche Software, die sollte auch gehen. Es ist aber nicht dieses spezielle Streifenrasterlayout, was eine andere Pinbelegung als das Original hat. Ich hänge das mal mit ran. Genau diese Version habe ich gebaut.

MfG. Andreas
Dateianhänge
TTester_strip.pdf
(63.99 KiB) 39-mal heruntergeladen
runni
Beiträge: 114
Registriert: Do 18. Okt 2018, 09:54
Wohnort: München

Re: Der AVR-/ARDUINO-Faden

Beitrag von runni »

Da wird es ja ein Schaltbild dazu geben, wirst halt mal alles durchklingeln müssen. Das Display hat aber schon die richtige Belegung?
Ich baue halt das einfach auf ein Reststück auf, die Widerstände sind z.B. SMD und auf der Rückseite... wusste nicht das es da ein Streifenraster - Layout gibt. :)
andreas6
Beiträge: 4149
Registriert: So 11. Aug 2013, 15:09

Re: Der AVR-/ARDUINO-Faden

Beitrag von andreas6 »

Dem Speicheroscar bleibt nichts verborgen, mit 1s/div habe ich mal die Datenleitungen ohne angeschlossenes Lcd angeschaut. Alle Leitungen schalten, aber auf sehr merkwürdige Weise. D4 liegt eigentlich immer auf Null, es kommen nur selten 5V-Impulse, D5 ist ähnlich. D6 und D7 liegen meist auf 5V und bekommen kurze Nullimpulse. Da sieht mir tatsächlich nach einem Softwareproblem aus. Ich darf dann mal die Quellen durchforsten... Somit ist auch festgestellt, dass das Kontrastpoti ordentlich arbeitet und eine variable Spannung liefert.

MfG. Andreas
runni
Beiträge: 114
Registriert: Do 18. Okt 2018, 09:54
Wohnort: München

Re: Der AVR-/ARDUINO-Faden

Beitrag von runni »

Ohne Controller sollte ein schwarzer Balken nach Anlegen der Spannung im Display zu sehen sein, erst nach der Initialisierung verschwindet der. Hast Du den Balken, kannst Du den Kontrast des Balkens einstellen?

Hab Dir mal die fertige SW von 2014 daran gehangen.
mega328.zip
(28.05 KiB) 80-mal heruntergeladen
andreas6
Beiträge: 4149
Registriert: So 11. Aug 2013, 15:09

Re: Der AVR-/ARDUINO-Faden

Beitrag von andreas6 »

Auf dem Lcd ist gar nichts zu sehen. Vielleicht habe ich ein uraltes mit negativer Kontrastspannung erwischt, das gab es auch mal. Es sind noch weitere vorhanden, irgend eins wird mit positiver Spannung laufen. Aber nicht mit diesen Datenleitungen, da ist noch mehr faul.

MfG. Andreas
bastelheini
Beiträge: 1663
Registriert: So 11. Aug 2013, 13:55

Re: Der AVR-/ARDUINO-Faden

Beitrag von bastelheini »

Habt ihr ne bestimmte Bezugsquelle für die Arduinos oder kauft ihr wo es grad passt (ebay, ali, ???).
IPv6
Beiträge: 2166
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 »

Ich kaufe hauptsächlich Nanos, die lassen sich so schön überall verbauen.
Die kommen im Zehnerpack meist vom günstigen Anbieter auf Ali/Ebay.

Für meine Zwecke ist das meistens ausreichend.
Jedoch bemerke ich hin und wieder mal schräges Verhalten, was darauf hindeutet, dass die verwendeten ATmegas aus nicht so ganz sauberen Quellen stammen.
Ich hatte in letzter Zeit mal ein paar Arduinos auf Strom sparen getrimmt.
Also LEDs runter, Spannnungsregler gebrückt, USB-UART entfernt und direkt an zwei AA Batterien gelötet.
Dabei ist aufgefallen, dass sich die Stromverbräuche im Tiefschlaf unterscheiden.
Wärend zwei Arduinos wie zu erwarten bei < 1µA lagen war einer nicht unter 50 µA zu bekommen.
Ich habe den Fehler mit dem zu hohen Verbrauch erst an allen anderen Stellen gesucht bis ich drauf kam, dass der Controller wohl einen Fehler hatte.

Bei einem anderen Nano aus Fernost war mal irgendwas mit dem UART, der nicht immer sauber ging.
Und gelegentlich sind auch die CH340 USB-UART Wandler defekt oder verhalten sich komisch. Die schmeiß ich dann auch runter und spiele das Programm über einen USBasp ein. Hat man halt keine serielle Ausgabe am Rechner zum debuggen.

Für unter 2€ pro Board muss man das wohl in Kauf nehmen. Für Arbeiten, wo Zeit Geld kostet, wäre das eher nichts.
ch_ris
Beiträge: 3029
Registriert: Mo 30. Nov 2015, 10:08

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris »

hab hier auch einen liegen mit kaputtem ch340.
der ist komplett einseitig bestückt. obs hilft weiß ich nicht aber da werd ich künftig auf doppelseitig achten.
Benutzeravatar
Münsterländer
Beiträge: 329
Registriert: Fr 11. Okt 2013, 14:55
Wohnort: Borken (bei Holland)

Re: Der AVR-/ARDUINO-Faden

Beitrag von Münsterländer »

@Wulfcat
Ich bin auch in der DAU Klasse unterwegs und habe mal mit dem Kinder Tutorial angefangen. Das war für mich eigentlich ganz passend. Bin dann aber irgendwann versumpft und will jetzt zusammen mit meinem Sohn wieder einsteigen...
https://starthardware.org/lektion-1-vorbereitung/
Antworten