Arduino Polska Forum

Pełna wersja: Problem z Atmegą 8
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam
Czy spotkał się ktoś z problemem wgrania sketcha zawierającego bibliotekę IRemote do Atmegi 8.
Przy wgraniu do Arduino UNO niema żadnych problemów jak chcę wgrać do Atmegi 8 wyskakują błędy podczas kompilacji np:
c:/program files/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: p_ynne_swiecenie_diody.cpp.elf section .text will not fit in region text
c:/program files/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: region text overflowed by 1250 bytes

Wszystkie inne sketche nie posiadające biblioteki IRemote.h ładują się bez problemów do Atmegi.
Ta biblioteka jest tak rozwlekła, że po kompilacji kod nie mieści się we flashu. Mój kumpel przez to musiał w swoim sterowniku zastosować m16. Niestety, takie uroki uniwersalności.
Masz rację że kod jest dosyć obszerny ale nie pokazuje mi że jest za duży tylko jakieś dziwne błędy wysypuje a może potrafiłbyś jakoś odchudzić tą bibliotekę żeby wepchać to na Atmegę 8 wrzucam kod w jakim ta biblioteka występuje chodzi mi o proste załączanie, rozjaśnianie i ściemnianie taśmy LEDowej.

Kod:
Kod:
#include <IRremote.h>

int bright;
int before;
int out=3;
int steps=5;
int RECV_PIN = 5;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup(){
irrecv.enableIRIn();
before=0;
bright=255;
pinMode(out,OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
  if (results.value==0x20DF22DD){
    if(before==0){
      digitalWrite(out,HIGH);
      before=1;
    }
    else{
      digitalWrite(out,LOW);
      before=0;
      bright=255;
    }
  }
  if (results.value==0x20DFF10E && before==1){
    if(bright-255/steps<0){
      analogWrite(out,bright);
    }
    else{
      bright=bright-255/steps;
      analogWrite(out,bright);
    }
  }
  if (results.value==0x20DF718E  && before==1){
    if(bright+255/steps>255){
      analogWrite(out,bright);
    }
    else{    
      bright=bright+255/steps;
      analogWrite(out,bright);
    }
  }
  irrecv.resume();
}
}
Niestety, nawet jakbyś kilka linijek kodu napisał, to i tak zainkludowanie tej biblioteki wypełni cały flash. Nie bawię się na co dzień Arduino ale kiedyś podglądałem tą bibliotekę i ładuje ona do flasha od groma różnych wzorców bo działa z ogromną ilością pilotów. Obsługuje kodowanie typu manchester, space, pulse i to różnych producentów. Wiem że to nie rozwiąże Twojego problemu ale polecam podszkolić się w języku C na AVR. Ja kupiłem książkę takiego Pana który nazywa się Mirosław Kardaś. Jestem w niej mnóstwo wiedzy w tym np. biblioteka do obsługi pilota, co prawda do RC5, ale pokazuje On jak można sobie rozkodować pilota samemu. Ewentualnie poszukaj w necie odchudzonej tej biblioteki. Może znajdziesz.
Dziękuje za zainteresowanie postem jak również za informację czekam właśnie na przesyłkę z Atmegą 328P myślę że to rozwiąże mój problem.
Pozdrawiam
Dwie Atmegi 328P ruszyły pełną parą wgranie bootloaderów przez ARDUINO UNO R3 powiodło się bezproblemowo.
(16-02-2015, 23:27)Nefarious19 napisał(a): [ -> ]Niestety, nawet jakbyś kilka linijek kodu napisał, to i tak zainkludowanie tej biblioteki wypełni cały flash.

taki to urok c jesli chodzi o jego bez sensowne zapychanie flasha to zaświeć i zgaś diodę zajmuje 3kb
w baskomie nawet 0.5kb,
niestety tutaj trzeba używać większych kontrolerów.