Pages: [1]   Go Down
Author Topic: Attiny45 speicherplatz probleme?  (Read 445 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hallo leute smiley hab wieder ein problem glaub ich...

hab mir diesen chip http://www.reichelt.de/Atmel-Attiny-AVRs/ATTINY-45-20PU/3/index.html?;ACTION=3;LA=446;ARTICLE=68160;GROUPID=2958;artnr=ATTINY+45-20PU


gekauft und laut technischer daten hat der 4kbyte.

die arduino software zeigt mir an das mein sketch 4.406 bytes hat auf den arduino mega 2560!

heißt das das die paar zeilen schon garkein platz haben auf den attiny45?!

hier der sketch :/

Code:
  #include <EEPROM.h>
  const int sP = 10; //taster
  byte mode = 1;
  unsigned long cM = 0;
  unsigned long pM = 0;
  int fade;                   
  long ftime=0;
  int periode = 6000;
  int value = 0; 
  int hA[] = {
     90, 130, 30, 900};
  int hbeatIndex = 1; 
  long prevMillis;
   
  int ledpin = 13;
  void setup()
  {
   digitalWrite(sP, HIGH);
  }
   
  void loop()
  {
   mode = EEPROM.read(1);
   
   cM = millis();
    if (digitalRead(sP) == LOW && mode == 1 && cM - pM > 200){
      mode = 2;
      EEPROM.write(1, 2);
      pM = cM;
    }
      if (digitalRead(sP) == LOW && mode == 2 && cM - pM > 200){
      mode = 3;
      EEPROM.write(1, 3);
      pM = cM;
    }
    if (digitalRead(sP) == LOW && mode == 3 && cM - pM > 200){
      mode = 4;
      EEPROM.write(1, 4);
      pM = cM;
    }
      if (digitalRead(sP) == LOW && mode == 4 && cM - pM > 200){
      mode = 1;
      EEPROM.write(1, 1);
      pM = cM;
    }
   
    if (mode == 1){
    if ((millis() - prevMillis) > (long)(hA[hbeatIndex] * 1)){
          hbeatIndex++;
          if (hbeatIndex > 3) hbeatIndex = 0;
 
          if ((hbeatIndex % 2) == 0){
              for(value = 1 ; value <= 255; value+=5)
    {
      analogWrite(ledpin, value);
      delay(1);
    }
          }
          else{
              for(value = 255; value >= 0; value-=5)
    {
      analogWrite(ledpin, value);
      delay(1);
    } 
          }
          prevMillis = millis();
      }
  }
 
   if (mode == 2){
     ftime = millis();
     fade = 128+127*cos(2*PI/periode*ftime);
    analogWrite(ledpin, fade); 
   }
   
    }
   

kann ich den irgendwie noch abspecken?

liebe grüße! smiley
Logged

Offline Offline
Faraday Member
**
Karma: 128
Posts: 4117
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sicher, dass der MEGA die korrekte Referenz ist? Auf UNO oder Nano zeigt er nur 3,7kB an.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

haha du hast recht! hab grad auf attiny45 umgeschalten und siehe da, 3322 byte *__* is ja noch massig platz :-P DANKE!!
Logged

Cologne
Offline Offline
God Member
*****
Karma: 11
Posts: 512
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

die Zeile:
Code:
     fade = 128+127*cos(2*PI/periode*ftime);
alleine frisst schon 1.434 Byte.
Kann man das nicht anders berechnen, z.B. mit Tabellen ?
Logged

Offline Offline
Faraday Member
**
Karma: 128
Posts: 4117
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dafür reicht auch eine einfache Näherungs-Funktion:

z.B. das hier:
http://lab.polygonal.de/?p=205

Oder der Klassiker:
http://en.wikipedia.org/wiki/Bhaskara_I%27s_sine_approximation_formula

Mit cos(x) = sin(PI/2 - x)
Logged

Pages: [1]   Go Up
Jump to: