Der AVR-/ARDUINO-Faden

Der chaotische Hauptfaden

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

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

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris » Fr 1. Jul 2022, 20:36

nee, ist ein schaltassistent aka kupplungsloses schalten.
danke, ich guck mir das am pc morgen mal an.

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

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris » Sa 2. Jul 2022, 09:38

hab noch andere Änderungen drin die erst mal getestet werden müssen,
so ähnlich könnte ich mir das aber zukünftig vorstellen.
Alexander470815 hat geschrieben:
Fr 1. Jul 2022, 20:07
Ein Zählwert von 1500 wären 10.000 U/min
Ein Zählwert von 1501 wären 9.993 U/min
Bei 10.000 U/min hätte man somit noch eine Auflösung von 7 U/min.

Reicht das nicht könnte man den Prescaler ja noch schneller wählen.
eine Auflösung von ~250U reicht hier technisch imho.
viel hilft natürlich viel, auch bei der zeitlichen Auflösung.

hab's mal überschlagen, der zu erwartende Drehzahl Abfall/Anstieg entspricht etwa meiner rpm Auflösung.
ich sag mal bis 2000 Umin pro sekunde, also etwa die gleiche Größenordnung.
Damit ist das ganze aber möglicherweise grenzwertig bzw. ausgereizt.
ich behalte das mal im Hinterkopf, danke nochmal.

Benutzeravatar
Später Gast
Beiträge: 1343
Registriert: Di 5. Apr 2016, 22:03
Wohnort: Karlsruhe
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von Später Gast » Mo 4. Jul 2022, 11:04

ich hab das an meiner Bohrmaschine mit ein mal

attachInterrupt(digitalPinToInterrupt(PinA), Berechnung, FALLING);

im Setup und dann

void Berechnung () {
Zeit_Gemessen = millis() - Letzte_Messung; // Zeit in ms
Letzte_Messung = millis();
Drehzahl = 60000 / Zeit_Gemessen; // Aktuelle Drehzahl
}

Berechnung eines Mittelwerts dann in der Ausgabe. Funktioniert wunderbar. Das ist ja das, was Alexander vorgeschlagen hatte. Die erste Iteration hatte bei mir auch erst Pulse in einem festen Zeitfenster gezählt und umgerechnet, ist aber iwie nicht so gut gelaufen. Hatte auch probleme wg digiSpark/Attiny85 und dem Bootloader und hab ewig pins vertauschen müssen, bis es irgendwann mal gelaufen ist. Wird nicht mehr angefasst. ;)

MSG
Beiträge: 1699
Registriert: Fr 9. Nov 2018, 23:24
Wohnort: Nähe Dieburg

Re: Der AVR-/ARDUINO-Faden

Beitrag von MSG » Mi 13. Jul 2022, 16:14

Was mache ich falsch (ESP32)?

Code: Alles auswählen

void S(String text){
  if ( settings.debug == true ) {
    Serial.print(text);
  }
}

S("---");
S("a");
S("b");
S("---");
S("a" + "b");
S("---");

src/main.cpp:111:11: error: invalid operands of types 'const char [2]' and 'const char [2]' to binary 'operator+'
   S("a" + "b");
           ^
Ich dachte beim Arduino ist alles, was zwischen doppelten Anführungszeichen steht ein String, dann sollte man den doch auch verknüpfen können? Aber der Fehlermeldung nach sind das wohl zwei char Arrays ....
Erwartet hätte ich, dass da
---ab---ab---
rauskommt.

Ziel des ganzen soll eigentlich sein, einfach debugging-Meldungen auszugeben mit so etwas
S("blablubber ist: " + blablubber + "\n");

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

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris » Mi 13. Jul 2022, 16:39

nee, geht nicht. in JS ja. glaub ich.
aber type Nazis wie c , java lassen das nicht zu. oder? nochmal einklammern?

virtexultra
Beiträge: 84
Registriert: So 9. Dez 2018, 11:30

Re: Der AVR-/ARDUINO-Faden

Beitrag von virtexultra » Mi 13. Jul 2022, 16:46

Nein, die Annahme mit den Anführungszeichen ist falsch. Das ist erst mal ein const char*. Dieser wird nur implizit in einen String umgewandelt da die Funktion S einen String erwartet und die Klasse String einen passenden Konstruktor bereitstellt.

Als einfache Abhilfe hier, sollte man das erste Element explizit in ein String Objekt wandeln können.

Code: Alles auswählen

S(String("a") + "b");
Dann wird nicht mehr probiert den operator+ auf zwei const char* auszuführen sondern auf ein String Objekt und einen const char*. Hierfür bietet die Klasse String eine geeignete Funktion und das concat kann ausgeführt werden.

MSG
Beiträge: 1699
Registriert: Fr 9. Nov 2018, 23:24
Wohnort: Nähe Dieburg

Re: Der AVR-/ARDUINO-Faden

Beitrag von MSG » Do 14. Jul 2022, 10:29

ch_ris hat geschrieben:
Mi 13. Jul 2022, 16:39
nee, geht nicht. in JS ja. glaub ich.
aber type Nazis wie c , java lassen das nicht zu. oder? nochmal einklammern?
Naja in mindestens PERL, PHP würde es gehen, JS meineswissens auch.

Aber selbst in ABAP, das typisiert ist, geht das. Hier werden Zeichenketten in ' eingeschlossen und Strings in |:

Code: Alles auswählen

data: lv_zahl1 type i default 4,
      lv_zahl2 type p length 5 decimals 2,
      lv_bla type c length 3 default 'bla'.

form S using iv_text type string.
  write: /, iv_text.
endform.

perform S using |Hier steht jetzt fließtext und die Zahl 1 ist { lv_zahl1 } und Zahl 2 ist { lv_zahl2 } und bla ist { lv_bla }.|.
virtexultra hat geschrieben:
Mi 13. Jul 2022, 16:46
Nein, die Annahme mit den Anführungszeichen ist falsch. Das ist erst mal ein const char*. Dieser wird nur implizit in einen String umgewandelt da die Funktion S einen String erwartet und die Klasse String einen passenden Konstruktor bereitstellt.

Als einfache Abhilfe hier, sollte man das erste Element explizit in ein String Objekt wandeln können.

Code: Alles auswählen

S(String("a") + "b");
Dann wird nicht mehr probiert den operator+ auf zwei const char* auszuführen sondern auf ein String Objekt und einen const char*. Hierfür bietet die Klasse String eine geeignete Funktion und das concat kann ausgeführt werden.
Danke für die ausführliche Erklärung virtexultra. So ist das verständlich warum das so ist. Die Idee, den linken Operanden erst mal zum String zu machen funktioniert einwandfrei. Deine Lösung compiliert sogar mit etwas anspruchsvolleren Aufrufen:

Code: Alles auswählen

S(String("a") + "b" + 5 + 'o' + String(1.23456, 2) + "\n");

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

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris » Fr 15. Jul 2022, 10:38

ah! wieder was gelernt.
Das mit den Nazis bitte humorig verstehen, hat auch seine Vorteile.

ich brauche mal einen watchdog im Nano.
bin mir nicht sicher ob ich den Kommentar in der wdt.h richtig verstehe.
ist's so richtig?:

Code: Alles auswählen

void setup() {
	MCUSR = 0;
	wdt_disable();
	....zeug
	wdt_enable(WDTO_1S);
	}
	loop: wdt_reset()
	
\code
#include <stdint.h>
#include <avr/wdt.h>

uint8_t mcusr_mirror __attribute__ ((section (".noinit")));

void get_mcusr(void) \
__attribute__((naked)) \
__attribute__((section(".init3")));
void get_mcusr(void)
{
mcusr_mirror = MCUSR;
MCUSR = 0;
wdt_disable();
}
\endcode

Saving the value of MCUSR in \c mcusr_mirror is only needed if the
application later wants to examine the reset source, but in particular,
clearing the watchdog reset flag before disabling the
watchdog is required, according to the datasheet.

IPv6
Beiträge: 1833
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 » Sa 16. Jul 2022, 10:35

Für den watchdog noch der Hinweis, dass dieser mit dem alten Bootloader, der auf den ganzen Chinaklonen der Nanos drauf ist, nicht funktioniert.
Also zuerst den neuen Bootloader oder den vom UNO oder einen ganz anderen passenden draufpacken.

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

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris » Sa 16. Jul 2022, 13:22

verdammt.
wie äussert sich das? geht einfach nicht?
irgendwas las ich das man den quasi bricken könnte und nur noch per isp rankommt.

Online
Benutzeravatar
Alexander470815
Beiträge: 1888
Registriert: So 11. Aug 2013, 15:42
Wohnort: D:\Hessen\Gießen

Re: Der AVR-/ARDUINO-Faden

Beitrag von Alexander470815 » Sa 16. Jul 2022, 13:54

Naja ein USBasp kostet doch nichts, einfach darüber programmieren und das Bootloader Problem erübrigt sich.

IPv6
Beiträge: 1833
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 » Sa 16. Jul 2022, 15:27

Und wenn kein usbasp zur hand ist kann man einfach einen zweiten Arduino als ISP verwenden, das hat man ja meistens rumliegen. Sann ist das eine Sache von wenigen Minuten.

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

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris » Sa 16. Jul 2022, 15:43

ja klar, muss man halt auf dem schirm haben. und grad den fraglichen uploade ich mit dem phone. wenn der dann erst mal tot ist geht im Feld nix mehr.

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

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris » So 17. Jul 2022, 10:02

ich muss noch mal nach-haken, hab jetzt so getan wie im Kommentar beschrieben:

Code: Alles auswählen

 #include <avr/wdt.h>

    uint8_t mcusr_mirror __attribute__ ((section (".noinit")));

    void get_mcusr(void) \
      __attribute__((naked)) \
      __attribute__((section(".init3")));
    void get_mcusr(void)
    {
      mcusr_mirror = MCUSR;
      MCUSR = 0;
      wdt_disable();
    }
damit sollte ja nur noch ein wdt_enable(x); am ende der setup() nötig sein.
wenn ich jetzt in setup mcusr_mirror ins eeprom logge und dann später ausgebe (Serial.print(EEPROM.read(var), 10);):
reset knopp oder per konsole =121 (0b 01111001)
kabel ziehen=91 (0b 01011011)

wenn ich mcusr_mirror nach dem loggen auf null setzte:
reset knopp oder per konsole =0
kabel ziehen=121

:?:
wieso macht das einen unterschied?
was bedeutet das überhaupt, sollte nicht 0000xxxx rauskommen?

oder 123 oder 89 kommt da raus, auf nix ist verlass :cry:
(edit, ach verdammt, das könnte eine eeprom schreib/lese schwäche sein, hängt nur am usb strom.
aber der oben beschriebene unterschied ist ja nicht nur ein falsches bit)

Benutzeravatar
gafu
Beiträge: 5550
Registriert: Mi 14. Aug 2013, 20:56
Wohnort: nahe Jena
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von gafu » Mo 18. Jul 2022, 15:41

Später Gast hat geschrieben:
Mo 4. Jul 2022, 11:04
Hatte auch probleme wg digiSpark/Attiny85 und dem Bootloader und hab ewig pins vertauschen müssen, bis es irgendwann mal gelaufen ist. Wird nicht mehr angefasst. ;)
Ich hatte mich gefragt, ob nur ich "Pech" mit Openhardware habe, letztes Problem digisparks.
Nach so im Mittel 10-15 programmiervorgängen schreibt sich der bootloader scheinbar seinen eigenen Speicher kaputt, und programmieren über USB geht nimmer.
Ich hatte 5 davon, zuletzt waren vier davon tot.

An einen toten hab ich ICSP Kabel angelötet und per usbasp dann ohne bootloader direkt aufgespielt, das ging sofort. Geht aber nicht bei den original digistump, wo per Fuses der reset abgeschaltet ist, aber ich hatte eh keine original.

Einer ist gestorben, als ich den an eine usb-verlangerung mit Wackelkontakt / kein Kontakt auf den stromleitungen gesteckt hab, die wird dann noch ausgesondert.

Ich bin jetzt so auf dem Trip, da den USB Kontakte Teil abzusägen und die dann von dem unzuverlässigen bootloader zu befreien
Das der beim Schreiben die geschriebenen Daten nicht zur Kontrolle zurückliest, ist schon scheiße genug, aber wenn der sich regelmäßig selber abschießt, das geht gar nicht.

Müll eigentlich.
Leider sind atmel MCU gerade Goldstaub geworden irgendwie, die STM32 und ESP32 dagegen preislich noch normal.

IPv6
Beiträge: 1833
Registriert: Fr 17. Mär 2017, 22:05

Re: Der AVR-/ARDUINO-Faden

Beitrag von IPv6 » Mo 18. Jul 2022, 18:12

gafu hat geschrieben:
Mo 18. Jul 2022, 15:41
die STM32 und ESP32 dagegen preislich noch normal.
In welchem Universum? :D
Die ganze Industrie geiert gerade nach STM32, nichts lieferbar.
Die Bluepill Boards mit STM32F103 kosten aus China 7 €, die waren mal bei unter einem Euro pro Stück. Und mit hoher Wahrscheinlichkeit bekommt man da mehr oder weniger gute Klone, ich hatte da mal ein Exemplar das soweit funktioniert, aber der UART hat sich immer mal wieder komisch verhalten, bei einem originalen STM32 ging alles einwandfrei.

Benutzeravatar
gafu
Beiträge: 5550
Registriert: Mi 14. Aug 2013, 20:56
Wohnort: nahe Jena
Kontaktdaten:

Re: Der AVR-/ARDUINO-Faden

Beitrag von gafu » Di 19. Jul 2022, 21:57

Ich hatte nur kurz bei AliExpress geguckt, da waren die STM32 Boards (vergleichbar zu arduino Mini oder sowas) bei 1,90 herum.
Und die mega328 bei 7 usd

Jannyboy
Beiträge: 1074
Registriert: So 11. Aug 2013, 14:49
Wohnort: Kreis Augsburg

Re: Der AVR-/ARDUINO-Faden

Beitrag von Jannyboy » Mi 20. Jul 2022, 21:52

gafu hat geschrieben:
Di 19. Jul 2022, 21:57
Ich hatte nur kurz bei AliExpress geguckt, da waren die STM32 Boards (vergleichbar zu arduino Mini oder sowas) bei 1,90 herum.
Und die mega328 bei 7 usd
Drei Board bei Ali bekommst du.
Willst du aber 200-300 Stück für Nullserie haben muss man schon stückeln mit verschiedenen Ratings und Ausbaustufen. 10k Stück für die Serie kannst gleich vergessen.

Grüße Jan

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

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris » Fr 22. Jul 2022, 06:44

Hab probiert MCUSR mit externer besaftung zu lesen.
ich kann kein System entdecken. es kommt zwar nicht jedes Mal was anderes raus,
zb. bei Reset per Konsole 5x hintereinander 0,
nach dem nächsten Kaltstart und erneuten Konsole Reset aber wieder mehrfach was anderes.
war immer 0 oder die ersten 4 bits, die 0 sein sollten, waren auch beteiligt.

Brown Out Detection?
ist standardmäßig off glaub ich.
sollte doch aber bei einem Reset nix ausmachen?

oder das ist einfach nicht zu gebrauchen.

EDIT
der bootloader könnte schuld sein.
https://www.idogendel.com/en/archives/623
je nachdem welcher, löscht der mcusr.
0 scheint also ein korrektes Ergebnis.

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

Re: Der AVR-/ARDUINO-Faden

Beitrag von ch_ris » Fr 22. Jul 2022, 12:47

weitere versuche wurden durch mein isp adapter eingebremst.
bastelstunde.
scheint sich aber gelohnt zu haben, erste versuch hat geklappt.
Dateianhänge
noex_153.jpg
noex_153.jpg (10.21 KiB) 533 mal betrachtet

xanakind
Beiträge: 10300
Registriert: So 11. Aug 2013, 21:55

Re: Der AVR-/ARDUINO-Faden

Beitrag von xanakind » Mo 25. Jul 2022, 00:02

Kurze Frage mal zu einem anderen Controller:
STM32 und der STM32 Cube Programmer.
Ich will ja auf meinen DPS5005 Modulen eine andere Firmware installieren:
https://hackaday.com/2022/01/22/another ... -firmware/
Eine Anleitung für dummies wie mich gibt es hier:
https://profimaxblog.ru/dps_fw_flashing/
Leider hängt es bei mir an grundlegenden Dingen:
Ich kann keine Verbindung aufbauen:
Zwischenablage02.jpg
Im Gerätemanager wird der Programmer (3€ China-Clone) angezeigt und wird wohl korrekt erkannt.
Ein Firmwareupdate über den CubeProgrammer hat scheinbar auch funktioniert.
Drücke ich auf "Connect" passiert nichts
Egal was ich da einstelle.
Nichtmal eine Fehlermeldung erscheint :(

Ich werde das morgen mal auf einem anderen Rechner testen, ich vermute das ist wieder mal so ein typisches Windows-Ding.
Der Rechner hier war jetzt mal 5 Tage aus und ohne Strom. Geht das W-Lan nicht mehr richtig. "Keine Internetverbindung" mit dem Laptop ging es aber :roll:

bastelheini
Beiträge: 1563
Registriert: So 11. Aug 2013, 13:55

Re: Der AVR-/ARDUINO-Faden

Beitrag von bastelheini » Mo 25. Jul 2022, 04:10

nur überflogen aber bei dir ist JTAG statt SWD eingestellt... Absicht?

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

Re: Der AVR-/ARDUINO-Faden

Beitrag von Fritzler » Mo 25. Jul 2022, 07:38

Jap, JTAG ist falsch, die STM32 sind meist per SWD programmiert, weil das viel weniger Pins brauch.

Und nimm nicht diesen sch**ss Cube Programmer das ist völlig dumme klickibunti SW ohne ordentliche Fehlermeldungen.
Der Vorgänger ist da besser: https://www.st.com/en/development-tools ... nk004.html
(ST Link Utility)

poolizei
Beiträge: 99
Registriert: Mi 8. Feb 2017, 00:16

Re: Der AVR-/ARDUINO-Faden

Beitrag von poolizei » Mo 25. Jul 2022, 07:46

xanakind hat geschrieben:
Mo 25. Jul 2022, 00:02
Ein Firmwareupdate über den CubeProgrammer hat scheinbar auch funktioniert.
Üblicherweise ist genau das daß Problem durch die FW Updates werden die China Klone unbrauchbar obwohl sie prinzipiell super laufen...

Mir auch passiert obwohl ich den Klon unwissentlich zum Original Preis erworben habe.

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

Re: Der AVR-/ARDUINO-Faden

Beitrag von Fritzler » Mo 25. Jul 2022, 07:53

Falls das der Fall sein sollte kann es Xana ja zum Treffen mitbringen.
Dann komm ich mitm Programmer.
(Aber vorher Bescheid sagen, sonst nehm ich den nicht mit!)

Ein Adapter von ARM 20 pol JTAG (2,54mm) auf DPS5005 musste aber selber mitbringen:
Bild
Benötigt werden:
vtref an 3,3V
SWDIO, SWDCLK, GND, reset

Antworten