Znaleziono 2 wyniki

autor: tuxcnc
07 sty 2024, 00:33
Forum: Arduino, Raspberry pi i inne systemy mikroprocesorowe
Temat: Garść najcenniejszej wiedzy dla początkującego programisty
Odpowiedzi: 25
Odsłony: 2862

Re: Garść najcenniejszej wiedzy dla początkującego programisty

Rafalgl pisze:
06 sty 2024, 21:00
żeby nie upalić portu analogowego w koleinym Nano
Czy ja dobrze rozumiem, że używasz wewnętrznego ADC ATmegi?
A wiesz, że on jest dziesięciobitowy, ale w praktyce to osiem MSB jest wiarygodnych?
Rozumiesz jak to się ma do trzech miejsc po przecinku na wyświetlaczu?
Już Ci to kiedyś pisałem, że bez znajomości wewnętrznej budowy mikrokontrolera nie napiszesz żadnego poważniejszego programu...
autor: tuxcnc
21 lis 2023, 20:58
Forum: Arduino, Raspberry pi i inne systemy mikroprocesorowe
Temat: Garść najcenniejszej wiedzy dla początkującego programisty
Odpowiedzi: 25
Odsłony: 2862

Re: Garść najcenniejszej wiedzy dla początkującego programisty

Rafalgl pisze:
19 lis 2023, 19:46
chciałbym np. umieć zbudować menu, w którym będę mógł powiedzmy jednym enkoderem i 2-3 microswitchami uruchamiać poszczególne funkcje/moduły w swoich projektach, zamiast musieć wiercić 10 otworów pod isostat, kolejne 10 pod ledy sygnalizacyjne a w środku plątanina kabli.
Tylko że w taki sposób niczego się nie nauczysz.
No co najwyżej jak metodą prób i błędów przerobić cudzy program, albo coś sklecić z gównianych bibliotek do Arduino...
Jak było wspomniane powyżej, najpierw musisz wybrać język i procesor.
Ja polecam język C (może być Arduino IDE, ale korzystać tylko z podstawowych funkcji), a jako procesor ATtiny13.
ATtiny13 to najprostszy z procesorów AVR, ma obudowę z ośmioma nogami, kilobajt pamięci flash i wewnętrzny rezonator RC.
Znaczy to, że da się uruchomić układ na samym procesorze baz żadnych elementów zewnętrznych, wystarczy przylutować kabelki do nóżek.
Oczywiście bardziej skomplikowanych urządzeń na tym procesorze nie zbudujesz, ale będziesz musiał nauczyć się korzystać bezpośrednio z rejestrów, co przyda ci się po przesiadce na większe układy.

Tutaj masz przykład prostego programu na ATtiny13

Kod: Zaznacz cały

#define F_CPU 9600000         // clock 9.6 MHz, internal oscillator
volatile int count=0;
#define HOME PB2              // PB2 as HOME output
                              // PB1 as STEP input
                              // PB0 as DIR input
int main(void) {

GIMSK |= _BV (INT0);           // Enable external interrupts INT0
MCUCR |= _BV (ISC01);          // PCINT0 is triggered on rising
MCUCR |= _BV (ISC00);          // PCINT0 is triggered on rising
sei();                         // Global enable interrupts
DDRB |= (1 << HOME);           // Set direction register output
PORTB |= B00000100;            // set HOME to high

for (;;) {                     // loop (endless)
    if (count > 1000){
    PORTB &= B11111011;        // set HOME to low
    }
  }
}

ISR (INT0_vect)                 // INT0 interrupt vector
{
  if  (PINB & B00000001){
    count = 0;
    PORTB |= B00000100;         // set HOME to high
    }
  else{
    count ++;
    }
}


To bardzo pożyteczne urządzenie udające wyłącznik krańcowy, którego używałem do testowania GRBL, ale do Mach3 czy Linuxcnc też by się nadał.
Jak to działa?
Jeśli w zadanym kierunku zostanie zliczone 1000 impulsów step, to zostanie wystawiony sygnał udający zadziałanie krańcówki, natomiast jeśli zmieni się kierunek (sygnał DIR) to licznik zostanie wyzerowany a sygnał krańcówki ustawiony w stan nieaktywny.
Oczywiście nic z tego nie rozumiesz i nie ma szans żebyś zrozumiał bez poznania wewnętrznej budowy mikroprocesora, ale dopóki nie zrozumiesz i się nie dowiesz, to sobie odpuść.
Oczywiście do jakichś trywialnych programików opartych na gotowych bibliotekach duża wiedza potrzebna nie jest, nawet dzieci sobie z tym radzą, ale trudno to nazwać programowaniem...

Dodane 4 minuty 56 sekundy:
atom1477 pisze:
21 lis 2023, 20:32
Ludzie piszą programy, a o najprostszych rzeczach hardwareowych nie mają pojęcia.
Widziałem jakiś temat gdzie komuś się jakiś moduł zawieszał, i mu tłumaczyli żeby dodał kondensatory (dał zdjęcie i było widać że ich nie ma). 3 strony tłukli temat, a on w końcu pyta co to jest ten kondensator (nie wiem co robił przez te 3 strony tematu zanim zapytał). Tematów o resetach przy załączaniu przekaźnika nawet nie policzysz. Mimo że ludzie dostają schematy (gasika) to nie potrafią nic z tym zrobić. Nie rozumieją co oznacza schemat, albo nie umieją tego przylutować.
Formalnie masz rację, ale co próbujesz w ten sposób udowodnić?
Że można być nieukiem i ignorantem, a coś czasem zadziała?

Wróć do „Garść najcenniejszej wiedzy dla początkującego programisty”