• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem z Atmegą 8
#1
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.
 
Odpowiedź
#2
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.
 
Odpowiedź
#3
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();
}
}
 
Odpowiedź
#4
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.
 
Odpowiedź
#5
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
 
Odpowiedź
#6
Dwie Atmegi 328P ruszyły pełną parą wgranie bootloaderów przez ARDUINO UNO R3 powiodło się bezproblemowo.
 
Odpowiedź
#7
(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.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości