LA CAMPANA

C’è chi ha letto questa notizia prima di te.
Iscriviti per ricevere nuovi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam

12

Resistori collegabili (sia interni che esterni) richiesti solo per i pin INPUT MCU? Al contrario, un pin MCU configurato come OUTPUT "sa a quale livello si trova" perché controlla: un pin OUTPUT MCU "flottante" collegato a qualche ingresso di un altro circuito non ha significato poiché lo stato del pin MCU può essere solo alto o basso. .. ho ragione? Ora, quando un MCU si avvia o si blocca, potrebbe essere utile avere la linea "uscita MCU su ingresso IC" mappata su quel canale per garantire che l'ingresso di qualsiasi IC non sia mai mobile.

Forse ho appena risposto alla mia domanda qui... i resistori pull-up/down possono essere utilizzati sia sui pin di ingresso che su quelli di uscita, a seconda dell'applicazione?

  • 5 risposte
  • Ordinamento:

    Attività

16

Pull e pop vengono generalmente utilizzati per garantire che una linea abbia un determinato stato anziché essere attiva. Vengono utilizzati sugli ingressi per evitare linee fluttuanti, passare rapidamente dalla regione alta a quella bassa e media "non definita". Gli output solitamente non sono necessari.

Ma la maggior parte dei pin MCU sono GPIO e talvolta sono definiti come input anziché come output all'avvio. Come hai detto tu, a volte non vuoi segnale di ingresso Il pin IC fluttuava all'avvio, soprattutto come il pin di ripristino che normalmente utilizzeresti con il GPIO del tuo microcontrollore.

Questo è quando usi Debole Tirare o spegnere la linea. Dato che sono deboli e si seleziona lo stato predefinito, non interferiscono con il circuito (se si suppone che il segnale di ingresso sia sempre basso e poi viene alzato, si seleziona debole e viceversa), ma disegnano un po' attuale. Ecco perché scegli un resistore abbastanza debole (più alto, più debole) per il lavoro.

Altri impostazioni normali l'output che utilizza pull-up (o push-up, meno comunemente) è Aprire lo scarico O collettore aperto connessioni. Risultano solo in una connessione bassa o rilasciano la linea, lasciandola fluttuante. I pull-up vengono utilizzati per portare la linea in uno stato logico alto.

0

Hai menzionato le connessioni Open Drain e Open Collector, non si applicano ai microcontrollori, vero? I Mosset vengono semplicemente utilizzati per impostare il livello logico? Volevo chiarire se il microcontrollore può pilotare una linea con elevata resistenza alla spinta. - genericpurpleturtle 16 ottobre 17 2017-10-16 12:00:41

7

Hai questo diritto; Di solito non sono necessari i pull-up alle uscite, ma possono essere utili per la sicurezza durante il carico, ecc.

Un altro motivo per utilizzare il pull-up dell'output: se ciascuna connessione ha più uscite collegate a più MPU di un'altra, tu Veramente non voglio che uno guidi VCC e un altro guidi 0 V sullo stesso filo! Quindi componi l'uscita su 0 V o disabiliti l'uscita (magari configurandola come ingresso). Quando tutte le uscite sono disabilitate, il filo viene tirato su "1" (Vcc). Questo è chiamato segnale "filo AND". (Puoi fare lo stesso guidando "1" o spegnendo, con la R abbassata, quindi si chiama OR cablato).

Questo modello ha diversi usi, incluso consentire a qualsiasi MPU di segnalare un errore o accendere un LED, o consentire loro di scambiarsi messaggi a turno su un singolo filo.

2

Risposta: Dipende dalla famiglia del microcontrollore e dalla posizione predefinita di ripristino all'accensione. Se un microcontrollore può essere configurato solo per essere "uscita" o "ingresso" su un pin, ciò di solito significa che per l'uscita viene utilizzato un driver totem-pole, il che significa che si tratta essenzialmente di un'uscita con gate CMOS, nel qual caso il la produzione è sempre spinta verso il basso, quindi non c’è motivo di influenzarla passivamente. L'unico caso in cui ha senso utilizzare pull-up/pull-down sull'output è quando è configurato come topologia Open Collector/Open Drain. Molto più comuni sono i parametri pull-up/pull-down interni, che sono applicabili solo quando il pin è configurato come input. Se puoi garantire che l'input del tuo sistema sia sempre guidato da qualcosa, ciò richiede un po' di potenza.

3

Come hai affermato, l'utilizzo di resistori pullup/pulldown sui pin che dovrebbero essere emessi può essere lì per garantire lo stato di ingresso.

Questo serve a ridurre il flash/guasto dell'MCU, ma funzionerà solo per proteggere da condizioni di alta impedenza (sostanzialmente il pin è configurato come ingresso per sbaglio).

Amministratore di sistema(è attivo Inglese amministratore di sistema, amministratore di sistema) - un nome abbreviato di una professione, il cui nome completo suona in russo amministratore di sistema. Questa professione Recentemente è diventato molto popolare tra la maggior parte dei giovani e dei meno giovani, lo insegnano, ci lavorano e guadagnano bene. Ciò è dovuto al rapido sviluppo di vari tecnologia informatica e la loro penetrazione in tutte le sfere della vita umana. La parola amministratore di sistema è spesso usata nel discorso colloquiale, nei posti vacanti e nei curriculum quando si cerca un lavoro, in una parola - ovunque. Di seguito parleremo di cos'è la professione amministratore di sistema.

IN realtà moderne, un amministratore di sistema può essere chiamato praticamente qualsiasi persona coinvolta nella manutenzione e nella manutenzione del funzionamento di un determinato rete informatica, compresi tutti i suoi componenti hardware e/o software, che possono includere:

  • Personal computer, sia workstation che server;
  • Apparecchiature di rete come switch, router, firewall e altro;
  • Server Web, server di posta, server di database e altri.

Inoltre, in alcuni casi, l'amministratore di sistema può essere responsabile di garantire un'adeguata sicurezza delle informazioni.

A seconda della sua specializzazione, un amministratore di sistema può svolgere le seguenti attività:

  • L'amministratore di workstation e server ripara molto spesso sia l'hardware (fallito schede madri, alimentatori bruciati) e software (Windows non si carica, le virgole non vengono stampate in Word”e...).
  • Amministratore rete aziendale basato su dominio attivo Direttorio. Un'attività molto apprezzata, vista la prevalenza delle sale operatorie Sistemi Windows, così come la necessità di controllarli in qualche modo a livello centrale. Uno specialista di questo tipo deve essere in grado di creare, distribuire in gruppi, modificare gli utenti, concedere loro i diritti appropriati nel dominio AD ed essere anche in grado di gestire politiche di gruppo per gli utenti, i loro computer e i gruppi a cui appartengono.
  • Amministrazione di reti e apparati di rete. Le sue responsabilità includono la conoscenza della topologia di rete, la capacità di lavorare sia con soluzioni non configurabili che personalizzabili apparecchiature di rete, pianificazione locale rete informatica, nonché la possibilità di combinare diversi luoghi di lavoro remoti in un'unica rete configurando NAT e VPN. Inoltre, non dovresti dimenticare di controllare l'accesso all'interno e all'esterno di questa rete, impostando un proxy.
  • Un amministratore del server Web, che deve essere almeno in grado di installare, configurare e mantenere uno dei seguenti server Web: Apache, IIS, Nginx e monitorare l'hosting (che può essere posizionato sia all'interno della rete dell'organizzazione che all'esterno di essa). Inoltre, un buon amministratore dovrebbe essere in grado di configurare la normale distribuzione delle risorse in caso di carichi elevati, il clustering e molte altre cose specifiche.
  • Amministrazione server di postaÈ anche un compito comune per un amministratore di sistema; i suoi compiti includono lavorare con soluzioni popolari come Exim, Microsoft Exchange, Postfix, Sendmail o soluzioni di posta elettronica aziendale di Google o, ad esempio, Yandex. Oltre all'ovvio controllo sugli account (creazione, cancellazione, configurazione), è necessario anche poter predisporre un sistema antispam, ecc.
  • Amministratore del sito. Queste responsabilità possono includere semplicemente il riempimento del sito con alcuni contenuti, ma una volta stiamo parlando riguardo all'amministratore di sistema, in teoria dovrebbe essere in grado di impostare l'hosting (incluso un server web, come menzionato sopra), installare e configurare il sito Web desiderato, ad esempio una sorta di sistema di gestione dei contenuti (CMS).
  • Molto raramente, le responsabilità di un amministratore di sistema possono includere il compito di creare o mantenere un sistema di videosorveglianza. Le attività includono l'installazione e la configurazione delle telecamere, la risposta a vari eventi, il salvataggio e la riproduzione delle registrazioni. Si riferisce a amministrazione del sistema debolmente e spesso cade nei suoi doveri insieme ad altri doveri.

Tralasciate dalle attività dell'amministratore di sistema sopra descritte ci sono cose possibili come l'amministrazione del database ( MicrosoftSQL, MySQL e le sue molteplici filiali, Oracle, ecc.), amministrazione 1C (da non confondere con “programmatore 1C”), PBX e molto altro.

Basandosi sui post precedenti e alcuni dopo aver letto le specifiche, probabilmente è sorta la domanda: cos'è questo secondo misterioso processore MCU che funziona a 100 MHz? Perché è necessario? Come usarlo?
Nel frattempo, in alcuni casi, il ruolo dell’MCU è estremamente importante. Coloro che hanno provato a utilizzare Edison per lavorare con vari sensori potrebbero aver già notato che Intel Edison non fornisce una risposta in tempo reale alle loro letture quando si lavora da Linux. Ed è qui che l’MCU viene in soccorso. È tempo di parlare un po' di questo microcontrollore embedded, della sua architettura, delle sue applicazioni e considerare un esempio pratico.

A partire dalla versione 2.1, il software per Intel Edison ha aggiunto la possibilità di utilizzare un microcontrollore integrato.

Considera il sistema su un chip utilizzato nel modulo di elaborazione Intel Edison:

Il system-on-chip utilizzato nell'Intel Edison Compute Module include due processori:

  1. Processore Intel Atom dual-core funzionante a 500 MHz. Designato come CPU host.
  2. Microcontrollore con architettura Minute IA, operante a 100 MHz. Etichettato come MCU.
Diamo uno sguardo più da vicino al microcontrollore. Il core di calcolo Minute IA è un'architettura efficiente dal punto di vista energetico basata sul 486 con istruzioni aggiunte per la compatibilità Pentium. Oltre al core di calcolo, il microcontrollore contiene un sottosistema di input/output (GPIO, I2C, UART ad alta velocità, DMA) e SRAM. Il microcontrollore ha accesso a tutte le porte GPIO nell'Edison Compute Module. Il volume totale della SRAM per codice e dati è di 192 kB. In esecuzione sul microcontrollore sistema operativo sistema operativo Viper in tempo reale da WindRiver.

L'applicazione del microcontrollore viene eseguita sul core Viper e controlla le periferiche collegate all'MCU, indipendentemente dal processore Intel Atom. Ad esempio, può controllare le porte GPIO, interagire con i sensori tramite il protocollo I2C o UART e scambiare dati Processore Intel Atomo.

Perché è necessario un microcontrollore in Intel Edison?

Vorrei evidenziare due aree in cui è possibile utilizzare un microcontrollore incorporato:
  1. Lavorare con porte I/O e interfacce con risposta in tempo reale.
  2. Efficienza energetica.
Il processore Intel Atom e la distribuzione standard Yocto Linux non consentono di implementare applicazioni con risposta in tempo reale immediatamente. L'applicazione potrebbe essere bloccata dall'utilità di pianificazione, con conseguente latenza inaccettabile e imprevedibile. Il microcontrollore esegue una singola applicazione e un sistema operativo in tempo reale, quindi è possibile fornire una risposta in tempo reale. Ciò è necessario per molti sensori in cui il protocollo di comunicazione dipende dal rigoroso rispetto di brevi intervalli di tempo. Per collegarli senza microcontrollore integrato, dovresti utilizzare un microcontrollore separato su cui implementare tutte le funzionalità per lavorare con tali sensori. Un esempio di soluzione per Intel Edison con un microcontrollore esterno è la scheda di espansione SparkFun Block per Intel Edison - Arduino.

È possibile aumentare l'efficienza energetica utilizzando un microcontroller in applicazioni in cui il processore principale potrebbe trovarsi in uno stato di sospensione e il microcontroller attende un determinato evento (ad esempio, il superamento valori di soglia dal sensore).
Se necessario, il microcontrollore riattiva il processore principale. Un esempio di implementazione è fornito nell'articolo Utilizzo dell'SDK e dell'API MCU: esempi di codice.

Come esempio di lavoro con il microcontrollore Intel Edison, consideriamo il collegamento del sensore di distanza a ultrasuoni HC-SR04. Visualizzeremo la distanza misurata sullo schermo dei caratteri Grove LCD RGB Backlight.



Il sensore ha 4 uscite:
  • Vcc-5 V.
  • Trigono- Segnale di attivazione al sensore. Il microcontrollore fornisce un impulso di 10 microsecondi al sensore. Il sensore avvia il processo di misurazione.
  • Eco- Segnale eco dal sensore al microcontrollore. La durata dell'impulso è proporzionale alla distanza misurata.
  • Gnd- Terra.
Ecco come appare il processo di lavoro con il sensore sullo schermo dell'oscilloscopio:

  • 1 canale- Trigono
  • Canale 2- Eco
Il microcontrollore invia un impulso a Trigono. Successivamente il sensore risponde con un impulso Eco.
La durata dell'impulso è proporzionale alla distanza misurata.
La distanza misurata viene calcolata utilizzando la formula (presa dalle specifiche del sensore):
distanza (cm) = durata dell'impulso eco (microsecondi) / 58
Secondo le specifiche, il sensore può misurare distanze da 2 a 400 cm.
Misurare la durata dell'impulso con un errore previsto senza tempo reale sarà problematico.
Il processo di misurazione potrebbe, ad esempio, essere anticipato dallo scheduler e il risultato della misurazione sarà errato.

Collegamento di HC-SR04 al microcontrollore Intel Edison


Componenti utilizzati:

  • Modulo di calcolo Edison
  • Scheda Arduino Edison
  • Scudo base di Grove
  • Schermo dei caratteri Grove LCD retroilluminato RGB
  • Sensore di distanza ad ultrasuoni HC-SR04
  • Consiglio di sviluppo
Prima di tutto colleghiamo l'Edison Compute Module alla scheda Edison Arduino. Quindi colleghiamo la scheda di espansione Grove Basic Shield alla scheda Edison Arduino. La retroilluminazione RGB LCD Grove si collega all'intestazione I2C su Grove Basic Shield.

Il sensore di prossimità a ultrasuoni HC-SR04 si collega a Grove Basic Shield come segue:

  • Vcc a +5V.
  • Trigono al pin n. 3.
  • Eco al pin n. 4.
  • Gnd a Gnd.
I pin 3, 4 vengono selezionati casualmente, al loro posto possono essere utilizzati altri.

Aggiornamento del firmware Intel Edison

Il supporto del microcontroller è disponibile nella versione del software firmware della scheda Intel Edison® versione 2.1 e successive. Se il tuo firmware è più vecchio, deve essere aggiornato.

Puoi scoprire la versione attuale del firmware con il comando:
# configure_edison --version
Questo esempio è stato creato sulla versione firmware 146.

Il processo di aggiornamento del firmware è descritto in dettaglio nell'articolo Flashing Intel Edison. Personalmente, di solito utilizzo il metodo descritto nella sezione Metodo di lampeggiamento alternativo.
Leggere attentamente le istruzioni prima di installare il firmware.

Collegamento di Intel Edison tramite Ethernet su USB

Per lavorare con Edison dall'ambiente MCU SDK, è necessario creare una connessione di rete.
Per fare questo è necessario, ad esempio, connettersi Cavo USB alla porta micro-USB centrale (l'interruttore deve essere impostato verso le porte micro-USB).
Su Linux la rete si configura con il comando:
# ifconfig usb0 192.168.2.2
Indirizzo IP Intel Edison: 192.168.2.15
Il processo di connessione è descritto più dettagliatamente nell'articolo Connessione alla scheda madre Intel® Edison tramite Ethernet tramite USB.

SDK dell'MCU

Per creare applicazioni che verranno eseguite su un microcontrollore incorporato, è stato rilasciato un ambiente di sviluppo multipiattaforma, MCU SDK, basato su Eclipse. Il processo di installazione è discusso in dettaglio nell'articolo Installazione dell'SDK MCU.
L'SDK MCU consente di creare, compilare, scaricare ed eseguire il debug di applicazioni del microcontrollore.

Interazione con l'MCU

Per interagire con il microcontrollore da Linux sono disponibili diverse interfacce:
/dev/ttymcu0 - Canale per lo scambio di dati. Da Linux puoi lavorare utilizzando operazioni sui file standard. Dal programma sul microcontrollore, lo scambio viene effettuato utilizzando le funzioni host_send e host_receive.
/dev/ttymcu1 - Il canale attraverso il quale il microcontrollore invia messaggi di debug con la funzione debug_print.
/sys/devices/platform/intel_mcu/log_level - Consente di impostare il livello dei messaggi di debug (fatal, error, warning, info, debug).

Programma per Linux

Un piccolo script Python che riceverà i dati dal microcontrollore integrato e li visualizzerà su un display a caratteri. Per lavorare con la visualizzazione dei caratteri, utilizzeremo il modulo Jhd1313m1 della libreria UPM.

script show_distance.py:

import time import pyupm_i2clcd RET_ERROR = -1 if __name__ == "__main__": lcd = pyupm_i2clcd.Jhd1313m1(6, 0x3E, 0x62) with open("/dev/ttymcu0", "w+t") as f: while True: f.write("get_distance\n") # Invia comando all'MCU f.flush() line = f.readline() # Leggi la risposta dall'MCU, -1 = valore ERRORE = int(line.strip("\n\r \t ")) lcd.clear() if valore == RET_ERRORE: lcd.setColor(255, 0, 0) # ROSSO lcd.write("ERRORE") else: lcd.setColor(0, 255, 0) # VERDE lcd.write("%d cm" % (valore,)) time.sleep(1)

Programma per microcontrollore

Il programma sul microcontrollore deve, dopo aver ricevuto il comando get_distance dall'host, misurare la distanza e inviare il risultato all'host (distanza in centimetri, o -1 in caso di errore).
Configurazione delle porte sulla scheda Edison Arduino:
./init_DIG.sh -o 3 -d uscita ./init_DIG.sh -o 4 -d ingresso
Lascia che ti ricordi che il microcontrollore funziona con le porte GPIO sull'Edison Compute Module, che differiscono dalla numerazione sulla scheda Edison Arduino. La tabella delle corrispondenze è riportata, ad esempio, alla fine dell'articolo Lampeggiamento di un LED utilizzando l'MCU.

Programma per microcontrollore nell'SDK MCU:

#include "mcu_api.h" #include "mcu_errno.h" // PIN estensione Arduino = 3 #define TRIG 12 // PIN estensione Arduino = 4 #define ECHO 129 // Dalla scheda tecnica HC-SR04 #define MIN_DISTANCE 2 #define MAX_DISTANCE 400 #define MAX_WAIT 10000 #define RET_ERROR -1 int get_distance() ( // Invia il segnale Trig a HC-SR04 gpio_write(TRIG, 1); mcu_delay(10); gpio_write(TRIG, 0); // Leggi il segnale Echo da HC -SR04 int i; i = 0; mentre ((gpio_read(ECHO) == 0) && (i< MAX_WAIT)) { mcu_delay(1); i++; } unsigned long t0 = time_us(); if (gpio_read(ECHO) == 0 || i == MAX_WAIT) { return RET_ERROR; } i = 0; while ((gpio_read(ECHO) == 1) && (i < MAX_WAIT)) { mcu_delay(1); i++; } unsigned long t1 = time_us(); if (gpio_read(ECHO) == 1 || i == MAX_WAIT) { return RET_ERROR; } unsigned long distance = (t1 - t0) / 58; if (MIN_DISTANCE < distance && distance < MAX_DISTANCE) { return distance; } else { return RET_ERROR; } } #define MAX_BUF 255 unsigned char buf; void mcu_main() { // Setup Trig as OUTPUT gpio_setup(TRIG, 1); // Initially set Trig to LOW gpio_write(TRIG, 0); // Setup Echo as INPUT gpio_setup(ECHO, 0); while (1) { unsigned int len; len = host_receive(buf, MAX_BUF); if ((len >= 12) && (strncmp(buf, "get_distance", 12) == 0)) ( unsigned int distance; distance = get_distance(); len = mcu_snprintf(buf, MAX_BUF, "%d\n", distance); host_send (buff, len);

In una delle prime lezioni abbiamo imparato che utilizzando il PWM è possibile modificare il ciclo di lavoro di un segnale. Ciò ha regolato la luminosità del LED. Tuttavia, esiste un modo più interessante, utilizzando la modulazione dell'ampiezza dell'impulso.

Quindi... Se si fa passare il segnale generato attraverso un filtro basse frequenze, quindi ottieni una tensione costante.

Poiché il ciclo di lavoro varia da 0 a 0xFF(255), ciò significa che avremo 255 livelli Tensione CC. In poche parole, esiste un intervallo di tensione, ad esempio da 0 a 5 V, questo intervallo è diviso in 255 valori. Con incrementi di 5/255=0,0196 V è possibile impostare qualsiasi tensione.

Usando questi valori in un certo ordine, puoi ottenere quasi qualsiasi forma di segnale. Ad esempio, aumentando il riempimento da 0 a 255, e poi diminuendo da 255 a 0, otteniamo un segnale a dente di sega.

Passiamo ora ad un obiettivo specifico: ottenere un'onda sinusoidale con frequenza di 50Hz utilizzando il microcontrollore Atmega8. Il compito globale è impostare la tensione sull'uscita PWM a determinati intervalli, secondo una legge sinusoidale.

Affrontiamo la prima parte del problema. Per ottenere determinati periodi di tempo, utilizzeremo un timer. Supponiamo che il timer sia impostato su una frequenza di 8 MHz, ad es. ticchetta 8.000.000 di volte al secondo. La sinusoide oscilla 50 volte al secondo, il che significa che un periodo può avere un massimo di 8.000.000/50 = 160.000 tick. Poiché abbiamo 256 livelli di tensione, la risoluzione massima dell'onda sinusoidale sarà 256.

Cos'è la risoluzione sinusoidale? In questo caso si tratta del numero di punti nel periodo a partire dal quale viene costruita la sinusoide. Ad esempio, ho tracciato in Excel come apparirebbe una sinusoide per diverse risoluzioni.

Per seno con risoluzione 4:

Per un seno con una risoluzione di 8 punti:

Per un seno con una risoluzione di 16 punti:

Penso che l '"evoluzione" del seno sia chiaramente visibile: più punti (risoluzione), minore è l'angolarità e più è simile a una normale onda sinusoidale. Alla fine ho deciso di optare per una risoluzione sinusoidale di 128 punti.

Ora combiniamo tutto ciò che è stato detto prima, dividiamo 160.000 tick per la risoluzione di 128, otteniamo 1250: dopo così tanti tick dovrebbe attivarsi l'interruzione per impostare il livello di tensione successivo. Il valore 1250 deve essere inserito nel registro di confronto OCR1A

OCR1AH=0x04;
OCR1AL=0xE2;

La seconda parte del problema globale è come costruire un'onda sinusoidale. Ricordiamo la matematica: D... Il seno cambia da -1 a 1. Non sarà possibile generare una tensione negativa utilizzando PWM. Pertanto, è necessario spostare il grafico sopra l'asse X: sin(x)+1. Ora cambierà da 0 a 2, anche questa non è un'opzione, perché Abbiamo 256 valori di tensione, quindi moltiplichiamo per 127 in modo che il valore massimo sia 256. Di conseguenza, ho trovato la seguente formula:

128 - risoluzione seno, numero del punto x (da 0 a 128). L'ho calcolato in Excel e ho ottenuto un array sin di 128 valori, che vengono sostituiti uno per uno in OCR2.

L'ultima cosa che vale la pena menzionare è il filtro passa basso, potrebbe esserci un tutorial sui filtri in arrivo. IN al momento, non ha senso fornire formule per il suo calcolo, perché Esistono siti con opzioni di pagamento online; basta digitare "FNC" su Google.

File firmware e Proteus

LA CAMPANA

C’è chi ha letto questa notizia prima di te.
Iscriviti per ricevere nuovi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam