Forum: Mikrocontroller und Digitale Elektronik ATtiny45 - EEPROM Ansteuerung - PB4 high


von Michael R. (michael666)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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?

von Michael R. (michael666)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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
von Michael R. (michael666)


Lesenswert?

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
Noch kein Account? Hier anmelden.