• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak zacząć z programowaniem mikrokontrolerów w C ?

Object Storage Arubacloud
0 głosów
255 wizyt
pytanie zadane 5 sierpnia 2020 w C i C++ przez tonn204 Mądrala (7,440 p.)
Cześć chciałbym zacząć z programowaniem mikrokontrolerów w języku C. Z tego co się dowiedziałem chodzi tu o kontrolery AVR. Nasuwa mi się pytanie jaki sprzęt wybrać na początek bo jestem w tym temacie totalnie zielony. Widziałem, że ludzie robili coś na płytkach stykowych, ale chciałbym na początek wybrać jakiś gotowy zestaw, żeby w ogóle zobaczyć czy na tyle mi się to spodoba i czegoś nie zepsuć. Chciałbym aby na początek był to sprzęt prosty do uruchomienia i bez dodatkowej elektroniki. Jak już będę miał wszystko to skąd mam się uczyć programowania pod tym kątem ? Jeżeli znacie jakieś rzeczowe tutoriale , strony, na których wszystko jest prosto wytłumaczone nie pogardzę linkiem. AVR jest dobry na początek ? Jeżeli nie no co polecicie (urządzenia takie jak Arduino odpadają, bo zależy mi na programowaniu w C)
komentarz 6 sierpnia 2020 przez pvalue Dyskutant (8,720 p.)

@antos, od AVR Studio i kupna programatora conajmiej Dragona lub AVR One ...

komentarz 6 sierpnia 2020 przez tonn204 Mądrala (7,440 p.)

@tkz, Czyli an Arduino też da się pisać w C ?

komentarz 6 sierpnia 2020 przez tonn204 Mądrala (7,440 p.)

@tkz, Bo widziałem takie gotowe zestawy AVR tylko nie wiem, który wybrać.

komentarz 6 sierpnia 2020 przez tonn204 Mądrala (7,440 p.)
A jak znasz jakieś tutoriale do programowania Arduino  w C?
komentarz 6 sierpnia 2020 przez tkz Nałogowiec (42,000 p.)
Głównie korzystałem z dokumentacji, czy not technicznych, oraz w dużej mierze z googla.
komentarz 6 sierpnia 2020 przez Oscar Nałogowiec (29,320 p.)

@antos,
 Jeśli nie chcesz bawić się elektroniką (na razie) to weź zestaw z jakimiś urządzeniami we-wy (ledy, wyświetlacze, przyciski, głośniczek itp). Ja na początek używałem tego:Moduł uruchomieniowy Masz tam od razu wszystko, programujesz serialem, nauczysz się sterować przyciskami, ledami, wyświetlaczem LCD, kartą SD itp. Nawet w przyszłości, jak już będzie bieglejszy, taka płytka przyda ci się by np. uruchomić jakiś algorytm obsługi czegoś nowego. Taka płytka zmniejsza znacznie możliwości zniszczenia układu jakimiś błędami montażu, zasilanie już jest podłączone. Kup też od razu multimetr, bo wcześniej czy później będziesz musiał zająć się elektroniką, a lepiej zacząć od badania już zmontowanego układu.

2 odpowiedzi

0 głosów
odpowiedź 6 sierpnia 2020 przez profesorek96 Szeryf (91,420 p.)
Ja na twoim miejscu zaczął bym po pierwsze od przyswojenia podstaw elektroniki. Polecam ci do tego tą książkę:

https://helion.pl/ksiazki/elektronika-dla-bystrzakow-wydanie-iii-cathleen-shamieh,eleb3v.htm#format/d

Następnie zakupił bym zestaw arduino. Na Allegro czy Aliexpres jest mnóstwo takich zestawów. Gdzie masz samo arduino (klon) oraz płytkę stykową, diody, rezystory, czujniki itp.Taki zestaw to koszt od 100 do 200 zł. Język w którym programuje się Arduino swoją składnią przypomina język C. Jeśli to ci się spodoba i będziesz chciał dalej brnąć w to to nic nie stoi na przeszkodzie by płytkę arduino programować za pomocą programatora na usb zewnętrznego. Swoje programy pisać czy to w asemblerze czy C. Jednak już w przypadku tego programatora zabawy, konfiguracji śrdowosiska jest więcej. Jest to bardziej skomplikowane niż zainstalowanaie Arduino i wpięcie przewodu usb łączącego arduino z komputerem. Naciśniecie jednego przycisku i już mamy nasz program w arduino.
1
komentarz 6 sierpnia 2020 przez tkz Nałogowiec (42,000 p.)

Bo tak to działa nawet przy pisaniu w czystym C... 

Programator w przypadku znaczącej ilości modeli Arduino jest już na płytce razem z mikrokontrolerem. 

Jest również dostępny za darmo kurs elektronik https://forbot.pl/blog/kurs-elektroniki-dla-poczatkujacych-id5151, nie widzę sensu przepłacać. 

Przykładowy kod:

#define F_CPU 16000000UL

#define TRIGPOINT 128

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
    /* set pin 5 of PORTB for output*/
    DDRB |= _BV(DDB5);

    // Configure PORT C bit 0 to an input
    DDRC = 0b00000000;

    // Configure ADC to be left justified, use AVCC as reference, and select ADC0 as ADC input
    ADMUX = 0b01100000;

    // Enable the ADC and set the prescaler to max value (128)
    ADCSRA = 0b10000111;

    // Main program loop
    while (1)
    {
        // Start an ADC conversion by setting ADSC bit (bit 6)
        ADCSRA = ADCSRA | (1 << ADSC);

        // Wait until the ADSC bit has been cleared
        while (ADCSRA & (1 << ADSC))
            ;

        if (ADCH < TRIGPOINT)
        {
            // Turn LED on
            PORTB |= _BV(PORTB5);
        }
        else
        {
            // Turn LED off
            PORTB &= ~_BV(PORTB5);
        }
    }
}

I od razu skrypt budujący 

import os
nameFile = "main"
portName = "COM3"
speedBand = "115200"
cmdSet = ["avr-gcc -Os -Wall -Wextra -std=c11 -DF_CPU=16000000UL -mmcu=atmega328p -c -o "+nameFile+".o "+nameFile+".c",
"avr-gcc -mmcu=atmega328p "+nameFile+".o "+"-o "+nameFile,
"avr-objcopy -O ihex -R .eeprom "+nameFile+" "+nameFile+".hex",
"avrdude -F -V -c arduino -p ATMEGA328P -P "+ portName+" -b "+speedBand+" "+"-U flash:w:"+nameFile+".hex"]
for command in cmdSet:
    os.system(command)

 

komentarz 6 sierpnia 2020 przez tonn204 Mądrala (7,440 p.)

@profesorek96, A podesłałbyś link do jakiegoś konkretnego zestawu, który byś wybrał na początek?

0 głosów
odpowiedź 6 sierpnia 2020 przez Clip180 Obywatel (1,460 p.)
Polecam Micro Bit, moja corka sie tym bawi w C/C++ i Python fajna zabawka jak na poczatek.

Podobne pytania

0 głosów
4 odpowiedzi 1,807 wizyt
0 głosów
2 odpowiedzi 759 wizyt
–1 głos
11 odpowiedzi 1,190 wizyt

92,579 zapytań

141,432 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...