Arduino Micro do kontroli rozstawu rolek w maszynie

Dyskusje o programowaniu mikroprocesorów.

mineque
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 2
Posty: 592
Rejestracja: 12 wrz 2010, 01:59
Lokalizacja: Południe

Re: Arduino Micro do kontroli rozstawu rolek w maszynie

#11

Post napisał: mineque » 26 lip 2021, 21:02

A Arduino Industrial to też tylko wymysł marketingowców?



Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 13
Posty: 7873
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Arduino Micro do kontroli rozstawu rolek w maszynie

#12

Post napisał: tuxcnc » 26 lip 2021, 22:23

mineque pisze:
26 lip 2021, 21:02
A Arduino Industrial to też tylko wymysł marketingowców?
Ale w czym masz problem?
W ramach edukacji i testów wykonałem projekt urządzenia liczącego przedmioty przesuwane na taśmociągu.
Na wejściu jest optyczny czujnik odbiciowy, na wyjściu moduł bluetooth HC06. Wynik zliczania można odczytać na przykład na smartfonie, w formie komunikatu czytelnego dla człowieka.
Sercem urządzenia jest potężny mikroprocesor ATtiny13, który nawet sprzętowego UART-a nie ma, program jest napisany w Arduino IDE i zajmuje aż 430 bajtów, czyli 41% dostępnej pamięci.
Poniżej kod, może się komuś przyda, mam nadzieję że autor nie obrazi się za offtopic:

Kod: Zaznacz cały

#define F_CPU 9600000

#include <avr/io.h>

#define SOFT_TX_PIN (1<<PB1) // PB1 as TXD 
#define SOFT_TX_PORT PORTB
#define SOFT_TX_DDR DDRB

unsigned int count = 0; 
char old = 0;
char now = 0;

int main (void) {
  PORTB =1;
  uart_tx_init ();

  while (1) {
    now = (PINB & 1);
    if (old != now ){
      old = now;
        if (old == 1){
          count++;
          uart_print("Current counter value = ");
          num_to_str(count, 5);
          uart_print("\r\n"); 
        }
      }
    }
  return 0; 
}

void uart_tx_init ()
{
  TCCR0A = 1 << WGM01;    // compare mode
  TCCR0B = (1 << CS01);    // prescaler 8
  OCR0A = 125;  // 9600 baudrate at prescaler 8
  SOFT_TX_PORT |= SOFT_TX_PIN;
  SOFT_TX_DDR |= SOFT_TX_PIN;
}

void num_to_str(unsigned int value, unsigned char nDigit)
{
  switch (nDigit)
  {
  case 5:
    uart_send_byte((value / 10000) + '0');
  case 4:
    uart_send_byte(((value / 1000) % 10) + '0');
  case 3:
    uart_send_byte(((value / 100) % 10) + '0');
  case 2:
    uart_send_byte(((value / 10) % 10) + '0');
  case 1:
    uart_send_byte((value % 10) + '0');
  }
}

void uart_print(char *str)
{
  byte i = 0;
  while (str[i]) {
    uart_send_byte(str[i++]);
  }
}

//bitbanged UART transmit byte
void uart_send_byte (unsigned char data)
{
  unsigned char i;
  TCCR0B = 0;
  TCNT0 = 0;
  TIFR0 |= 1 << OCF0A;
  TCCR0B |= (1 << CS01);
  TIFR0 |= 1 << OCF0A;
  SOFT_TX_PORT &= ~SOFT_TX_PIN;
  while (!(TIFR0 & (1 << OCF0A)));
  TIFR0 |= 1 << OCF0A;
  for (i = 0; i < 8; i++)
  {
    if (data & 1)
      SOFT_TX_PORT |= SOFT_TX_PIN;
    else
      SOFT_TX_PORT &= ~SOFT_TX_PIN;
    data >>= 1;
    while (!(TIFR0 & (1 << OCF0A)));
    TIFR0 |= 1 << OCF0A;
  }
  SOFT_TX_PORT |= SOFT_TX_PIN;
  while (!(TIFR0 & (1 << OCF0A)));
  TIFR0 |= 1 << OCF0A;
}
Jak widać powyżej, sam używam takich maleństw, pewnie dlatego że przygodę z mikrokontrolerami zaczynałem od Intela 8048 i wiem co nawet tak prymitywne układy potrafią, szczególnie jak się je zaprogramuje w assemblerze...
Natomiast nikt mnie nie namówi do programowej obsługi enkodera, jeśli układ który to robi sprzętowo jest tańszy, bo to jest idiotyzm i masochizm.
Czy to trudno zrozumieć?

Toby było tyle na temat sprzętu, teraz o oprogramowaniu.
Skopiowałem same nagłówki z pewnego programu do nowego sketch'a i skompilowałem.
Obrazek
Jak widać, program który nic nie robi zeżarł 19% pamięci programu i 44% pamięci danych, a od czego są te biblioteki to powinieneś wiedzieć...
No niestety, ale Arduino IDE tak właśnie działa, czego świadomość powinien mieć każdy kto po to środowisko sięga.
A Bascom to już pominę milczeniem...


oprawcafotografii
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 4
Posty: 6107
Rejestracja: 29 kwie 2009, 10:11
Lokalizacja: Kraków / Jaworzno / Kopanka

Re: Arduino Micro do kontroli rozstawu rolek w maszynie

#13

Post napisał: oprawcafotografii » 26 lip 2021, 22:55

A jeśli te "pierwsze kroki" zaspokajają 100% potrzeb?

q
„Największym wrogiem wolności jest najedzony niewolnik.”


Steryd
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 2
Posty: 4146
Rejestracja: 13 lut 2017, 19:34
Lokalizacja: Szczecin

Re: Arduino Micro do kontroli rozstawu rolek w maszynie

#14

Post napisał: Steryd » 27 lip 2021, 00:45

To nie dla tuxa. Jak nie trzeba przekompilować jądra i nie rozumiesz do czego służy uc, a tymbardziej waższ sięy wykorzystywać tak proste narzędzie jak arduino do czegoś do czego starczy pc z linuxem, to jesteś idiotą nawet większym niż on sam.
Można?
Morzna!!!

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 13
Posty: 7873
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Arduino Micro do kontroli rozstawu rolek w maszynie

#15

Post napisał: tuxcnc » 27 lip 2021, 05:40

oprawcafotografii pisze:
26 lip 2021, 22:55
A jeśli te "pierwsze kroki" zaspokajają 100% potrzeb?
Przecież sam używam, bo to jest wygodne.
Trzeba tylko rozumieć dlaczego program Blink (do migania LED-em z przykładów) skompilowany dla ATtiny13 zajmuje 86 bajtów, a skompilowany dla Uno już 924 bajty...


oprawcafotografii
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 4
Posty: 6107
Rejestracja: 29 kwie 2009, 10:11
Lokalizacja: Kraków / Jaworzno / Kopanka

Re: Arduino Micro do kontroli rozstawu rolek w maszynie

#16

Post napisał: oprawcafotografii » 27 lip 2021, 08:11

Oraz to dlaczego użytkownik ma to w du*** :)

q
„Największym wrogiem wolności jest najedzony niewolnik.”


Avalyah
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 7
Posty: 2364
Rejestracja: 29 lis 2015, 00:38
Lokalizacja: Bielsko-Biała

Re: Arduino Micro do kontroli rozstawu rolek w maszynie

#17

Post napisał: Avalyah » 27 lip 2021, 09:59

tuxcnc pisze:Jak widać, program który nic nie robi zeżarł 19% pamięci programu i 44% pamięci danych, a od czego są te biblioteki to powinieneś wiedzieć...

I co z tego? Póki pamięci nie braknie to nie ma znaczenia, czy procesor zużyjesz w 99% czy w 3%. A żeby tej pamięci brakło to trzeba się bardzo postarać. A przez czas zaoszczędzony na implementowanie wszystkiego samemu można robić rzeczy bardziej pożyteczne, jak np. zająć się logiką swojego programu.

Optymalizacja, zwłaszcza sprzętowa ma sens tylko przy produkcji (a i to nie zawsze, czasami nie robi różnicy czy procek kosztuje 8 czy 12zł). Przy tego typu jednorazowych projektach to zwyczajna głupota. Trochę tak, jak jeździć godzinę po sklepach, żeby znaleźć tańszą bułkę. Czasu ani paliwa nikt nie liczy, bo liczy się to, że zaoszczędził w te pół godziny 2 złote na bułkach.

Malujesz się tux takim specjalistą, więc dziwi mnie, że tego nie wiesz. Może dlatego, że swoje projekty robisz w ramach ćwiczeń, a nie praktycznej potrzeby. Gdybyś potrzebował coś, co ma działać, a dodatkowo nie miał doświadczenia, to byś nigdy nawet nie spojrzał na goły procek, choćby i 50gr kosztował, jeśli ten sam projekt możesz w 15 minut zacząć programować na podróbie arduino mega za 20zł i zająć się tym, co istotne a nie składaniem płytek prototypowych, czytaniem datasheetów, ogarniania programatorów itd. Te umiejętności mogą się przydać później, jeśli projekt przerodzi się w coś komercyjnego, ale dla jednorazowych wynalazków nie ma żadnego sensu.


WP Kamil
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 1
Posty: 293
Rejestracja: 11 kwie 2014, 11:25
Lokalizacja: Polska

Re: Arduino Micro do kontroli rozstawu rolek w maszynie

#18

Post napisał: WP Kamil » 27 lip 2021, 12:28

Grbl też istnieje i znalazł dla siebie miejsce pomimo faktu, że da się lepiej, szybciej i profesjonalnej. Można nie rozumieć dlaczego ktoś wykorzystuje tą platformę, ale chyba nie ma co z tym walczyć i każdego nawracać na Linuxa czy inne płytki. Tu też nie ma co autora nawracać na jedyne i słuszne podejście. Pewnie i wśród nas znajdą się osobniki które wyłącznie Asemblera uznają a C jest beee

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 13
Posty: 7873
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Arduino Micro do kontroli rozstawu rolek w maszynie

#19

Post napisał: tuxcnc » 27 lip 2021, 15:10

Czego się tak uwzięliście?
Ja tylko przedstawiam fakty, więc nie dyskutujecie ze mną, tylko z faktami.
Normalnie czuję się jakbym rozmawiał z nawiedzonymi cyklistami - rower wystarczy do wszystkiego, bez samochodu da się żyć, a na argument że rowerem nie przewieziesz tony ziemniaków odpowiadacie "ale da się sto razy po dziesięć kilogramów...
Naprawdę zaczyna mnie to nudzić, w du*** mam te wasze mądrości, z takim podejściem to Wy macie problem a nie ja.
A jak ktoś w temacie o Arduino nie może się powstrzymać od wyskoczenia z Linuksem, to już musi mieć problem z głową, bo inaczej nie da się tego wytłumaczyć...
I to by było na tyle.


Avalyah
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 7
Posty: 2364
Rejestracja: 29 lis 2015, 00:38
Lokalizacja: Bielsko-Biała

Re: Arduino Micro do kontroli rozstawu rolek w maszynie

#20

Post napisał: Avalyah » 27 lip 2021, 16:29

tuxcnc pisze:na argument że rowerem nie przewieziesz tony ziemniaków odpowiadacie "ale da się sto razy po dziesięć kilogramów...

Twoja analogia powinna brzmieć tak - po co wozić tonę ziemniaków samochodem, jak można rowerem na dziesięć razy, ale za to przy okazji trochę się potrenuje. Bo Ty sugerujesz robienie wszystkiego naokoło, w sposób pochłaniający więcej czasu i nie dający żadnego zysku. No może oprócz dodatkowej nauki, ale czasem trzeba coś potrzebnego zrobić na już i korzystać, a nie budować browar, żeby napić się piwa.

Nie rozumiesz, że pamięć czy możliwości procesora, których nie zużyjesz są zwyczajnie zmarnowane. Nie masz w tym żadnego zysku, jeśli zamiast 50% ramu wykorzystasz 30%. Nie masz żadnego zysku w napisaniu programu C czy w Bascomie, jeśli działają tak samo.

Ale co ja Ci będę tłumaczył, wymyśliłeś coś sobie i będziesz się tego trzymał, zamiast pomyśleć. Gdybyś trochę odbetonował myślenie na pewno by to nie zaszkodziło i przestałbyś naskakiwać na każdego, kto pokazuje jakieś swoje rozwiązania tutaj.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Arduino, Raspberry pi i inne systemy mikroprocesorowe”