Hallo, ich habe leider im Netz nichts dazu gefunden. Ich habe zwei ATtiny45 gekauft und diese mit dem Arduino programmiert. Soweit so gut. Wenn ich aber das eeprom.write befehl rein setze (und glaube sogar, nichtmal anspreche) dann schaltet PB4 beim einschaltet des uC den Ausgang sofort auf HIGH. Man kann ihn zwar ganz normal benutzen, aber es ist doof wenn der Ausgang mir sofort ein Relais anspricht. Hat ja jemand einen Rat, da ich gerne die eeprom funktion für mein Projekt (Dimmer) nutzen möchte. Grüße Michael
Das kann ich mir ehrlich gesagt nicht recht vorstellen, das es da einen Zusammenhang gibt. Der wäre auch vollkommen unlogisch. Wie sieht denn dein Programm aus?
Ich hatte leider noch nicht soviel zeit das genau zu untersuchen, aber der fehler war weg, als ich den eeprom include und eeprom.read drin gelassen habe. sobald eeprom.write dazu kam, war der fehler da. Bei dem Arduino selber konnte ich diesen Fehler nicht reproduzieren. Habe den Code momentan nicht zur hand, ich werde aber mal eine abgespeckte variante aufspielen und vllt liegt es an dem zusammenhand zwischen eeprom und meinem eigentlich recht simplen code.
Michael Ru schrieb: > Ich hatte leider noch nicht soviel zeit das genau zu untersuchen, aber > der fehler war weg, als ich den eeprom include und eeprom.read drin > gelassen habe. > sobald eeprom.write dazu kam, war der fehler da. Das besagt normalerweise nicht viel. Diese "Wenn ich diese und jene Funktionalität dazu/weg gebe" Spielchen führen im Regelfall zu nichts. Ausnahmen bestätigen die Regel, wenn durch die Zusatzfunktionalität technologische Limits, wie zb Speichergrößen, überschritten werden. Aber meistens sind diese Spielchen einfach nur Sackgassen und haben mit dem eigentlichen Problem wenig zu tun, ausser das sie die Symptome eines ganz anderen Fehlers eventuell klarer hervortreten lassen.
:
Bearbeitet durch User
So, ich konnte den Fehler beseitigen, weiss aber nicht wieso genau original code war
1 | void dimmLED() { |
2 | ledValuenew = dimmsteps[dimmstep]; |
3 | |
4 | dimmstep++; |
5 | |
6 | EEPROM.write(0, dimmstep); |
7 | |
8 | analogWrite(led,ledValuenew); |
9 | |
10 | if(dimmstep >= 7) |
11 | {
|
12 | dimmstep = 0; |
13 | }
|
14 | longpress = 0; |
15 | |
16 | onlydimm = 1; |
17 | previousMillis = currentMillis; |
18 | |
19 | delay(100); |
20 | return; |
21 | }
|
- Wenn die Taste länger als x-sekunden gehalten wird, dann greift die Funktion dimmLED() - Die Dimm-stufen sind in unterschiedlichen Stufen (Array) aufgeteilt und werden dann halt über dimmstep ermittelt. - EEPROM.write macht nichts anderes, als den Wert zwischen 0 und 7 zu speichern. Der Fehler wurde beseitigt, indem ich
1 | analogWrite(led,ledValuenew); |
über
1 | delay(100); |
gesetzt habe. Also eigentlich nur die Reihenfolge geändert, deswegen kann ich mir nicht erklären wieso aufgrund dessen ein unabhängiger Ausgang auf HIGH gesetzt wird, zumal die Funktion beim starten nicht ausgeführt wird. komisch... aber gelöst.
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.