logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

kompatybilność programu na różnych mikrokontrolerach i zastosowanie przemysłowe

kamil3211 22 Lis 2020 13:26 840 17
  • #1 19060744
    kamil3211
    Poziom 10  
    1.Czy program napisany na np atmege328 w atmel studio czy innych edytorach będzie mógł zostać od razu wgrany na np atmege1284 czy trzeba będzie tam dużo pozmieniać.(to ma dla mnie bardzo duże znaczenie). W takim arduino ide można
    z marszu wrzucić taki sam program na większość tych rodzajów arduino. A w przypadku innych atmeg co najwyżej pozmieniać piny.
    2. Czy avr nadaje się do zastosowań przemysłowych? nie znalazłem rzeczy której nie można zrobić na avr a można na plc ?
  • #2 19060749
    Klima
    Poziom 31  
    1. Trzeba będzie dużo pozmieniać. Kod w arduino też nie jest przenaszalny w 100%.
    2. Nadaje się, jak pewnie każdy inny mikrokontroler. PLC to całe urządzenie, AVR to jedynie mikrokontroler - drobna część tego, co jest w PLC.
  • #3 19060877
    tmf
    VIP Zasłużony dla elektroda
    ad 1. Będzie wymagane co najmniej przekompilowanie programu. Reszta zależy - XMEGA oraz nowe AVR mają w miarę ujednolicone peryferia i tu zazwyczaj zmiana modelu procesora nie pocąga jakiś drastycznych zmian w kodzie. Szczególnie jeśli jest to zmiana w ramach jednej rozdziny. Bardzo dużo zależy też od sposobu napisania programu. Arduino zapewnia pewnien poziom abstrakcji od sprzętu, dzięki temu przenoszenie jest łatwiejsze, ale jest za to cena - dłuższy, wolniejszy kod, brak specyficznych optymalizacji związanych z peryferiami w konkretnym procesorze. Nic nie stoi na przeszkodzie, aby własny kod też pisać wykorzystując funkcje zapewniające pewną abstrakcję.
    ad 2. Tak jak napisał kol. @Klima, PLC to znacznie więcej niż sam procesor. Oczywiście AVR może być stosowany w zastosowaniach przemysłowych, przecież firma nie wypuszczałaby tej rodziny tylko dla hobbystów :) Mało tego, są AVR np. do celów automotive, gdzie wymagania są szczególnie duże.
    BTW, na twoim miejscu, jeśli myślisz o łątwym przenoszeniu kodu, nie zajmowałbym się starociami typu ATMega1284, czy 324/8, ale jako minimum XMEGA lub AVR DA, DB, lub nowoczesnymi ATMega/ATTiny serii 0, 1 itd. Nie tlyko mają znacznie ulepszone i nowe peryferia, ale w przeciwieństwie do starych AVR dostęp do nich jest mocno zunifikowany, co ułatwia przenoszenie softu.
  • #4 19061213
    kamil3211
    Poziom 10  
    a czy te nowe atxmegi mają większą moc obliczeniową ogólnie od atmeg. Proszę o ogólne porównanie, żeby nie brać na przykład najlepszej atmegi i najgorszej xmegi . i które mają lepszy stosunek mocy do ceny? z tego co widze to chyba podobmnie
    mam jeszcze jedno pytanie bo nie będę zakładał kolejnego wątku.

    Czy napięcie zasilania jakim zasilam atmege328 ma wpływ na odczyty pinów analogowych ? wydaje mi się, że nie ale
    zbudowałem na niej przetwornice step down i kiedy zamiast 5 V zasilam np 4 V to napięcie jakie daje przetwornica to 3,3 V a jak daje już 5V to jest 4,6 V na wyjściu co by wiadczyło o tym że ma to wpływ. Gdybym miał oscyloskop to bym sprawdził sygnał generowany przez pin cyfrowy sterujący jak się zmienia ale nie mam
  • #5 19061251
    BlueDraco
    Specjalista - Mikrokontrolery
    Każda ATmega ma gorszy stosunek mocy obliczeniowej do ceny od przeciętnego współczesnego uC 32-bitowego. Jeśli zaczynasz poważny projekt, a nie amatorską zabawkę, to zrób go we współczesnej technologii, a nie w muzealnej - wyjdzie taniej i dużo wygodniej.
  • #6 19061282
    kamil3211
    Poziom 10  
    BlueDraco napisał:
    Każda ATmega ma gorszy stosunek mocy obliczeniowej do ceny od przeciętnego współczesnego uC 32-bitowego. Jeśli zaczynasz poważny projekt, a nie amatorską zabawkę, to zrób go we współczesnej technologii, a nie w muzealnej - wyjdzie taniej i dużo wygodniej.

    a czy Arduino Due ARM Cortex
    kwalifikuję się jako te dobre do zastosowań profesjonalnych?
    Napięcie zasilania: od 7 V do 12 V
    Mikrokontroler: AT91 SAM3X8E rdzeń 32-bit
    Maksymalna częstotliwość zegara: 84 MHz
    Pamięć SRAM: 96 kB
    Pamięć Flash: 512 kB
    Piny I/O: 54
    Kanały PWM: 12
    Ilość wejść analogowych: 12 (kanały przetwornika A/C)
    Przetwornik C/A (cyfrowo-analogowy)
    Kontroler DMA
    Interfejsy szeregowe: UART, SPI, I2C, CAN, USB
    Debugger JTAG

    Dodano po 18 [minuty]:

    :)a tak apropo poważnych projektów komputer który wysłał kilku ludzi na księżyc i sprowadził ich z powrotem miał 15 razy mniej mocy obliczeniowej ciągnął ze 100W i był zawodny tu jest ten artykół więc nie wiem czy te atmegi są takie słabe :) http://wrcooke.net/commentary/to_the_moon.html


    a f16 jest sterowany chyba czymś podobnym do atmegi328
  • #7 19061464
    tmf
    VIP Zasłużony dla elektroda
    BlueDraco napisał:
    Każda ATmega ma gorszy stosunek mocy obliczeniowej do ceny od przeciętnego współczesnego uC 32-bitowego.

    Nie zachowuj się jak R_MIK. Wątek jest o konkretnych MCU.
    kamil3211 napisał:
    a czy te nowe atxmegi mają większą moc obliczeniową ogólnie od atmeg. Proszę o ogólne porównanie, żeby nie brać na przykład najlepszej atmegi i najgorszej xmegi . i które mają lepszy stosunek mocy do ceny?

    A czy twój projekt zyska na tym jeśli stosunek ceny do mocy się zmieni? Bo realizując jakiś projekt istotne jest czy wybrany MCU spełnia założenia projektowe, czy nie. To czy je spełnia z naddatkiem 50%, czy 500% jest raczej bez znaczenia, w wielu przypadkach raczej świadczy o kiepskim projektancie.
    Ale tak, XMEGA mają taktowanie max 32 MHz vs. 16 MHz dla starych AVR i vs. 24 MHz dla nowych AVR. Więc rdzeń jest szybszy o około 50-100%. Do tego dochodza lepsze ukł. peryferyjne, jednakże zysk z tego jest trudny do oszacowania. AVR DA i DB mają rozbudowane peryferia analogowe, co może być kompletnie bez znaczenia, a może być kluczowe. Dywagacje na ogólnym poziomie są bez znaczenia, ściągnij noty i sprawdź, xz\y jest tam to czego potrzebujesz.
    kamil3211 napisał:
    zy napięcie zasilania jakim zasilam atmege328 ma wpływ na odczyty pinów analogowych ? wydaje mi się, że nie ale
    zbudowałem na niej przetwornice step down i kiedy zamiast 5 V zasilam np 4 V to napięcie jakie daje przetwornica to 3,3 V a jak daje już 5V to jest 4,6 V na wyjściu co by wiadczyło o tym że ma to wpływ.

    To zależy od programu i np. wybranego nap. referencyjnego dla ADC. Jeśli nap. referencyjne to Vcc, to oczywistym jest, że odczyty się zmienią. Jeśli masz nawet zewnętrzne nap. referencyjne >4V, a zasilasz procek z 4V to też nie będzie to działać poprawnie.
    kamil3211 napisał:
    a czy Arduino Due ARM Cortex
    kwalifikuję się jako te dobre do zastosowań profesjonalnych?

    Naprawdę uważasz,że jedna z największych firm produkujących MCU, jak Microchip ma tkaie przychody bo sprzedaje układy dla amatorów?
  • #8 19061583
    kamil3211
    Poziom 10  
    tmf napisał:
    Microchip
    tmf napisał:
    Naprawdę uważasz,że jedna z największych firm produkujących MCU, jak Microchip ma tkaie przychody bo sprzedaje układy dla amatorów?

    myślę, że nie dla amatorów. Ale straciłem trochę wiarę w nie bo patrzę i jakiś stm32 jest pod każdym względem lepszy od tych avr a kosztuje 14 zł tu jest https://kamami.pl/zestawy-uruchomieniowe-stm3...uacyjny-z-mikrokontrolerem-stm32f103c8t6.html
  • #9 19061619
    khoam
    Poziom 42  
    kamil3211 napisał:
    myślę, że nie dla amatorów. Ale straciłem trochę wiarę w nie bo patrzę i jakiś stm32 jest pod każdym względem lepszy od tych avr a kosztuje 14 zł tu jest https://kamami.pl/zestawy-uruchomieniowe-stm3...uacyjny-z-mikrokontrolerem-stm32f103c8t6.html

    Pod tym linkiem masz w miarę obiektywne porównanie ATmega do STM32, bez konkretnego wskazywania na "zwycięzcę".
  • #10 19061642
    kamil3211
    Poziom 10  
    już to czytałem XD

    Dodano po 1 [minuty]:

    gdzieś na tym forum widziałem że ktoś napisał że chińczycy produkują stm bez tych wszystkich pierdół tylko sam mikrokontroler
  • #11 19061898
    tmf
    VIP Zasłużony dla elektroda
    kamil3211 napisał:
    Ale straciłem trochę wiarę w nie bo patrzę i jakiś stm32 jest pod każdym względem lepszy od tych avr a kosztuje 14 zł

    No to ich użyj, potrzebujesz błogosławieństwa forumowiczów?
    kamil3211 napisał:
    gdzieś na tym forum widziałem że ktoś napisał że chińczycy produkują stm bez tych wszystkich pierdół tylko sam mikrokontroler

    Bez tych wszystkich pierdół, czyli konkretnie bez czego? Bez peryferii, tylko sam rdzeń?
    Najpierw zdecyduj czego potrzebujesz, potem przejrzyj noty układów, lub zadaj pytanie na forum, ale precyzując konkretne wymagania. Taka dyskusja o niczym, jeśli nikt nie wie o co ci chodzi i czego oczekujesz raczej nic nie wnosi.
  • #12 19061951
    kamil3211
    Poziom 10  
    To tyle dziękuje za pomoc
    BlueDraco trochę mnie zepchnął z tropu
  • #13 19062228
    piotr_go
    Konstruktor DIY elektronika
    tmf napisał:
    Bez tych wszystkich pierdół, czyli konkretnie bez czego? Bez peryferii, tylko sam rdzeń?

    Bez PLLa, DMA... Z EEPROMem.
    Taka 32bitowa STM8-ka.
    Mają nawet 5V wersje.
  • #14 19062762
    gaskoin
    Poziom 38  
    kamil3211 napisał:
    Czy program napisany na np atmege328 w atmel studio czy innych edytorach będzie mógł zostać od razu wgrany na np atmege1284 czy trzeba będzie tam dużo pozmieniać.(to ma dla mnie bardzo duże znaczenie)


    Edytor nie ma nic do rzeczy. Zależy jak sam napiszesz program. Jeśli napiszesz wszystko w jednym pliku, to przenoszenie bardzo trudne i będzie "polowaniem" na miejsca do zmiany. Można wyekstrahować część odpowiedzialną za sprzęt, wtedy jest to jedyna część do zmiany przy przenoszeniu kodu na inny procesor. Plików źródłowych z "logiką" wtedy nie zmieniasz. Tu masz przykład jak można takie coś zrealizować i nie koniecznie jest to wolniejsze:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Nie masz w tym programie wzmianki o sprzęcie, funkcje powerOff i switchFrequency są zależne od sprzętu i są zaimplementowane gdzieś indziej. Jak jest dobrze napisany program to możesz odpalić go nawet na PC, co też z resztą w przemyśle się robi (testy jednostkowe)
  • #15 19063188
    BlueDraco
    Specjalista - Mikrokontrolery
    Możecie podać nazwę tego chińskiego cuda? Nie spotkałem.

    Artykuł "porównawczy" nie do końca obiektywny, np. przykład mający wykazać, jak trudno się inicjuje STM32 jest zupełnie niewiarygodny, bo:
    a. nie ma obowiązku uruchamiania PLL ani zewnętrznego kwarcu
    b. nie ma obowiązku używania koszmarnego HAL
    c. zainicjowanie portów jak w przykładzie wymaga na STM32 dokładnie o jednej więcej linijki kodu, niż w ATmega
    - czyli uczciwie napisany program "porównawczy" na STM32 miałby o jedną prostą instrukcję więcej, niż na ATmega i nie zawierałby żadnych wywołań procedur.
  • #16 19063228
    gaskoin
    Poziom 38  
    BlueDraco napisał:
    Możecie podać nazwę tego chińskiego cuda? Nie spotkałem.


    HK32F030M. @piotr_go chyba zakładał kiedyś o tym temat.

    BlueDraco napisał:
    Artykuł "porównawczy" nie do końca obiektywny ...


    Nie ma się co kłócić. Sam jestem fanboyem STM32, ale szczerze mówiąc jednak prościej wystartować z AVR
  • #17 19063236
    khoam
    Poziom 42  
    BlueDraco napisał:
    Artykuł "porównawczy" nie do końca obiektywny

    Dlatego też napisałem, że jest "w miarę obiektywny" w przeciwieństwie do wielu opinii użytkowników na tym forum. Sam nie mam zamiaru brać w dyskusji o wyższości świąt bożenarodzeniowych nad świętami wielkanocnymi.
  • #18 19063267
    Konto nie istnieje
    Poziom 1  

Podsumowanie tematu

Dyskusja dotyczy przenoszenia programów napisanych dla mikrokontrolerów ATmega328 na inne modele, takie jak ATmega1284. Uczestnicy podkreślają, że przenoszenie kodu wymaga przynajmniej przekompilowania, a w niektórych przypadkach może być konieczne wprowadzenie istotnych zmian, szczególnie w zależności od sposobu napisania programu. Arduino zapewnia pewien poziom abstrakcji, co ułatwia przenoszenie, ale może prowadzić do mniej optymalnego kodu. W kontekście zastosowań przemysłowych, ATmega jest uznawana za odpowiednią, chociaż PLC oferuje bardziej kompleksowe rozwiązania. Uczestnicy porównują również ATmega z nowoczesnymi mikrokontrolerami 32-bitowymi, takimi jak STM32, wskazując na ich lepsze parametry w kontekście mocy obliczeniowej i ceny. Wspomniano także o Arduino Due jako potencjalnie odpowiednim do zastosowań profesjonalnych.
Podsumowanie wygenerowane przez model językowy.
REKLAMA