• 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 ?

0 głosów
673 wizyt
pytanie zadane 5 sierpnia 2020 w C i C++ przez tonn204 Mądrala (7,470 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 (9,100 p.)

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

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

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

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

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

komentarz 6 sierpnia 2020 przez tonn204 Mądrala (7,470 p.)
A jak znasz jakieś tutoriale do programowania Arduino  w C?
komentarz 6 sierpnia 2020 przez tkz Nałogowiec (42,040 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,420 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,400 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,040 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,470 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 2,820 wizyt
0 głosów
2 odpowiedzi 937 wizyt
–1 głos
11 odpowiedzi 2,496 wizyt

93,754 zapytań

142,714 odpowiedzi

323,359 komentarzy

63,348 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...