Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ATtiny 26 - rozbicie liczby 4-cyfrowej - GCC

09 Wrz 2006 14:12 1231 2
  • Poziom 30  
    Witam...

    Normalnie procedura rozbicia liczby na poszczególne cyfry jest prosta...
    Code:

    void print (unsigned int data)
    {
     unsigned int temp, t, s, d;
     
      temp = data;
      t = temp / 1000;       
      temp = temp - (t*1000);
      s = temp / 100;
      temp = temp - (s*100);
      d = temp / 10;
      temp = temp - (d*10);
     ...
    }


    Do tej pory robiłem tak jak wyżej i było ok...
    Ostatnio zabrałem się za ATtiny26 i zaczeły się problemy...
    Po długich bojach z różnymi wyświetlaczami (LED, LCD) doszedłem do wniosku, że problem pojawia się w tym właśnie miejscu...
    Po takiej operacji dostaje na wyświetlaczu kompletne siano...
    Nie ma problemu z samym wyświetlaniem, problemy zaczynają się kiedy chcę np wyświetlić odczyt z ADC...
    Przepuszczam wynik przez wyżej zamieszczoną funkcję i kaplica...
    Podejżewam, że problemem może być zbyt mała ilość ramu...
    Brakuje mi już pomysłów...
    Da się to jakoś inaczej zrobić...?
    Może jest coś czego nie wiem na temat tych uC i programowania ich w gcc...?
  • Pomocny post
    Poziom 20  
    Da sie to zrobić oszczędniej.
    Mój pomysł:

    Code:

    void print (unsigned int data)
    {

     unsigned char l,t[5];
     for (l=3;l<4; l--){
          t[l]=data%10; data/=10;
     }
     //t[4]=0; //wedle uznania :)
     //w stringu t bedziesz miał swoją liczbę podzieloną na 4 cyfry
     // ale nie ascii - zeby bylo ascii to dodaj 0x30
     // jeli chcesz zrobic kasowanie zer nieznaczacych to tez nie ma problemu
    }
     
  • Poziom 30  
    Dzięki przemek20 za pomoc...
    Twój pomysł jest sprytny i faktycznie wymaga mniejszych zasobów...
    Co do mojego problemu ostatecznie okazało się, że przyczyna tkwi w tym konkretnym egzemplarzu uC...
    Jest w jakiś ciekawy sposób uwalony...
    Załadowałem program do innego attiny26 i ruszył od kopa...

    W każdym razie dzięki...