Sommario:
- Forniture
- Passaggio 1: installazione di Bascom e configurazione
- Passaggio 2: diamo un'occhiata più da vicino al chip
- Passaggio 3: il primo circuito
- Passaggio 4: scrivere il primo programma
- Passaggio 5: aggiungi un pulsante per utilizzare gli input
Video: Iniziare con Bascom AVR: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
Questo è l'inizio di una serie per insegnarti a programmare il tuo microcontrollore AVR con Bascom AVR.
Perché lo sto facendo.
La maggior parte degli esempi di programma di questa serie possono essere realizzati con Arduino.
Alcuni più facili e altri più difficili, ma alla fine entrambi verranno eseguiti sullo stesso controller.
Ma il modo di programmare è diverso in ogni ambiente di sviluppo. Arduino ha bisogno di una libreria per tutto tranne che per le funzioni di base. Bascom funziona anche con le librerie, ma raramente devo includerne una. Con Arduino, tutte le impostazioni specifiche dell'hardware vengono eseguite tramite le librerie. hai pochissima influenza sulla potenza effettiva del microcontrollore. A partire dai timer di cui dispone il controller. con arduino hai di nuovo bisogno di una libreria. se hai il timer finché non funziona, potrebbe essere un'altra libreria che si scontra con le tue impostazioni. Su bascom hai libero accesso all'hardware completo incluso il settore di avvio che è occupato da arduino. per esempio, alcune librerie di bascom ti chiedono quale timer vuoi usare. d'altra parte, poiché arduino rende molto facile creare una libreria da soli, lo rende naturalmente una piattaforma in cui il nuovo hardware e i sensori di solito hanno una libreria direttamente. ciò che è spesso associato a molte ricerche presso bascom e le funzioni che normalmente una libreria dovrebbe assumere devono essere poi accuratamente incorporate nel codice del programma. ma buone notizie anche la comunità bascom è molto grande ed è per questo che c'è una soluzione per ogni idea.
Quindi dipende in parte dal progetto cosa viene utilizzato per un ambiente di sviluppo e in parte dal know-how della persona di programmazione.
ma perché sto facendo questa serie. da un lato si risparmia molto. Non devo acquistare una scheda arduino per ogni progetto. Ad esempio: Un Arduino uno noname costa circa 12 € il controller che c'è sopra costa solo 2,5 € con la circuiteria minima necessaria per una funzione stabile, costa circa 4 €. d'altra parte hai a disposizione la selezione completa di chip avr supportati. atmegas da 8 a 256 e attiny da 8 a 2313 e molti tipi xmega di cui non ho esperienza. Se vuoi solo usare un servo e un sensore a ultrasuoni in grado di riconoscere una mano, ad esempio, e quindi aprire il coperchio di un bidone della spazzatura, puoi usare il chip più piccolo possibile. Quindi ci sono molte ragioni per imparare una seconda lingua.
Quindi iniziamo
Forniture
Questo è un elenco delle parti minime richieste per il funzionamento stabile del chip e la programmazione.
Tagliere per test
Atmega 8-16PU (meglio comprarne 2 o 3 se li uccidi per errore)
7805 Regolatore di tensione 5V
Resistenza da 10Kohm
Condensatore a film da 100nF
Condensatore elettrolitico da 10µF
Condensatore elettrolitico da 100µF
alcuni fili per breadboard
PC Windows 7/8/8.1/10
Programmatore ISP (userò qui l'USBasp che puoi acquistare su amazon per pochi soldi)
Bascom AVR (puoi scaricare qui una DEMO. Tutte le funzioni sono sbloccate, ma puoi scrivere codice solo fino a una dimensione di 4Kb che è sufficiente per molto codice).
Parti opzionali:
LED con resistori
interruttori a pressione
parti specifiche del progetto
Passaggio 1: installazione di Bascom e configurazione
Scarica il file e installa Bascom AVR. Installa tutte le sue parti inclusa l'ultima casella di controllo dopo l'installazione.
Dopodiché riavvia il PC, altrimenti bascom non si avvierà.
Dopo il riavvio avvia bascom.
Vai su Opzioni -> Programmatore e scegli USBasp dall'elenco, salva le impostazioni e chiudi Bascom.
Usa questo programma per installare usbasp. Successivamente, riavvia nuovamente il PC. Ora collega l'USBasp al tuo PC e avvia il gestore dei dispositivi. USBasp dovrebbe apparire sui dispositivi libusb.
Stat Bascom di nuovo e crea un nuovo file. Salvalo sul tuo PC e premi il tasto F7 sulla tastiera.
Il compilatore si avvia e compila il programma vuoto. Ora puoi testare la funzionalità del programmatore.
Premi il pulsante F4 sulla tastiera per avviare la finestra del programmatore. Ora vai su chip -> identifica per avviare un'interazione. I LED di USBasp dovrebbero ora lampeggiare brevemente. Dovresti ricevere un messaggio del tipo ID chip FFFFFF Impossibile leggere il dispositivo. Questo è un buon segno che il programmatore sta funzionando ma non ha trovato alcun chip.
Ora possiamo iniziare a costruire il primo circuito.
Passaggio 2: diamo un'occhiata più da vicino al chip
Se guardi il pinout del chip sembra che il chip non abbia alcuna somiglianza con la scheda arduino. Certo, usiamo un Atmega8 e su Arduino uno c'è un Atmega328. Ma il Pinout è quasi lo stesso, ma il chip della scheda Arduino Uno ha più funzioni. Qui i nomi dei pin. VCC e GND sono i pin per l'alimentazione.
AREF e AVCC sono pin per la tensione di riferimento e l'alimentazione per il convertitore analogico-digitale.
PB 0-7 PC 0-6 PD 0-7 sono pin di input output per uso generico con occupazione multipla.
reset pin è quello che dice il nome. Per riavviare il chip. La riga sopra il nome del reset significa negazione. Ciò significa che per ripristinare il chip devi abbassarlo a 0V.
Per i seguenti pin presto saranno disponibili istruzioni separate.
RXD TXD sono pin hardware per la comunicazione seriale UART.
INT0 INT1 sono pin di interruzione hardware
XCK /T0 UART Sorgente orologio / Timer/Contatore0 Sorgente orologio
I pin XTAL /TOSC sono per un cristallo esterno fino a 16 MHz (diversi modelli fino a 20 MHz) / I pin Crystal per un RTC interno
T1 è simile a T0
I pin AIN sono per il comparatore analogico
ICP1 è simile a T0/T1
OC1A è il pin di uscita hardware per il canale A del timer pwm1
Pin di selezione del chip SS/OC2 per SPI/come OC1B ma canale B
MOSI MISO SCK/OC2 sono i pin hardware SPI e i pin per la programmazione / timer di uscita PWM2
Da ADC0 a ADC5 sono gli ingressi analogici
SDA SCL sono i Pin per l'hardware I2C
Il normale chip può funzionare da 4, 5V a 5, 5V, l'Atmega 8L può funzionare con una tensione molto più bassa.
Vedete, anche questo chip può fare più di quanto un Arduino Uno sembra non poter fare. Ma anche Arduino può farlo, devi solo programmarlo.
Passaggio 3: il primo circuito
Ora è il momento di costruire il tuo primo circuito.
Qual è in genere il primo circuito? Destra! Facciamo lampeggiare un LED.
Il LED è collegato con PB0. Il resistore vicino al chip ha 10k Ohm.
La resistenza accanto al LED ha 470 Ohm.
Ora puoi collegare l'USBasp con l'Atmega come mostrato nell'immagine.
Ma prima di accendere, scriviamo il programma.
Passaggio 4: scrivere il primo programma
Crea un nuovo file in Bascom e digita il testo seguente.
$regfile "m8def.dat"
$crystal = 1000000 config portb.0 = output do portb.0 = 1 wait 1 portb.0 = 0 wait 1 loop
dopodiché compilalo premendo F7 sulla tastiera.
Ora possiamo programmare il chip premendo F4. Viene visualizzata la finestra del programmatore. Ora è il momento di accendere l'alimentazione dalla breadboard. Dovresti applicare qualcosa tra 6 e 12 Volt.
Ora vai su chip -> autoprogramma. Se la finestra del programmatore si chiude automaticamente la programmazione è andata a buon fine.
Il LED dovrebbe lampeggiare con una frequenza di un secondo.
Ora dai un'occhiata più da vicino al programma per capire la sintassi.
$regfile "m8def.dat"
$cristallo = 1000000
con $regfile diciamo al compilatore il tipo di chip utilizzato il nome del chip Arduino sarebbe "m328pdef.dat"
con $crystal gli diciamo la velocità della cpu di circa 1MHz.
config portb.0 = Uscita
ciò significa che PB0 dovrebbe fungere da output.
A proposito, l'abbreviazione PB0 significa porta B bit 0. Il chip è diviso in diverse porte. Ad ogni porta viene assegnata una lettera per una chiara identificazione. e ogni portpin un po' da 0 a 7. Ad esempio, posso scrivere un byte completo nel registro di uscita della porta, che verrà emesso tramite i singoli pin della porta.
fare
ciclo continuo
Questo è ciò che in Arduino significa l'istruzione void loop. Tutto tra quei due comandi si ripeterà per sempre. (con alcune eccezioni ma in seguito ne parleremo più avanti)
Porta.0 = 1
aspetta 1 portab.0 = 0 aspetta 1
Qui generiamo il lampeggio del led.
Portb.0 = 1 dice al chip di commutare l'uscita PB0 a 5V
il comando wait 1 fa aspettare il chip per un secondo. Se vuoi cambiare il led più velocemente devi sostituire il comando wait con waitms ora puoi inserire un po 'di tempo ora in millisecondi, ad es. waitms 500. (waitus significa attendere in nanosecondi)
Portb.0 = 0 dice al chip di commutare l'uscita PB0 a 0V.
Passaggio 5: aggiungi un pulsante per utilizzare gli input
Ora aggiungiamo un pulsante per accendere il led se il pulsante viene premuto.
Inserire il pulsante come mostrato nell'immagine.
ora digita il programma follow.
$regfile "m8def.dat"
$crystal = 1000000 config portb.0 = output config portd.7 = input Portd.7 = 1 do se pind.7 = 0 allora portb.0 = 1 altrimenti portb.0 = 0 loop
Se carichi quel programma sul chip, il led si accende solo quando viene premuto il pulsante. Ma perché?
il programma inizia in modo identico all'ultimo fino a
config portd.7 = input. Ciò significa che il pin PD7 collegato al pulsante funge da ingresso.
Portd.7 = 1 non commuta il pin in alto, ma attiva la resistenza di pull up interna dell'Atmega.
L'istruzione if sembra un po' strana se sei abituato ad arduino.
se usi l'istruzione if devi usare l'istruzione "then". In questo esempio l'istruzione if viene utilizzata per operazioni di comando singolo. Se vuoi usare più comandi devi scriverlo così.
se pind.7=0 allora
portb.0=1 un po' di codice un po' di codice un po' di codice altro portb.0 = 0 end if
per questo uso dell'istruzione if devi usare l'istruzione "end if" alla fine.
ciò che è ancora importante. Forse l'hai già visto. gli input non vengono interrogati con portx.x, ma con pinx.x. Puoi ricordarlo facilmente. Le uscite hanno la "o" (porta) nella parola e gli ingressi hanno la "i" (pin).
Ora è il tuo turno di giocare un po'.
La mia prossima istruzione arriverà presto (dichiarazioni standard come while, select case, for e variable).
Se ti piace il mio istruibile e vuoi di più dimmelo nei commenti.
Consigliato:
Iniziare con Ham Radio: 5 passaggi (con immagini)
Iniziare con la radioamatoriale: in qualità di licenziatario di radioamatore recentemente coniato, voglio illustrare il processo che ho seguito per entrare nel settore della radioamatoriale. Sono stato attratto dall'aspetto dell'autosufficienza dell'hobby, che offre alle persone un modo per comunicare quando altri metodi vengono interrotti. Ma è anche gratificante
Per iniziare con la fotocamera M5StickV AI + IOT: 6 passaggi (con immagini)
Per iniziare con la fotocamera M5StickV AI + IOT: breve panoramicaLa M5StickV è una minuscola fotocamera AI + IOT delle dimensioni di quasi 2 monete, il prezzo è di circa $ 27,00 che per alcuni potrebbe sembrare costoso per una fotocamera così piccola ma ne contiene alcune specifiche decenti. La fotocamera è alimentata da incredibl
Installazione di Raspbian Buster su Raspberry Pi 3 - Iniziare con Raspbian Buster con Raspberry Pi 3b / 3b+: 4 passaggi
Installazione di Raspbian Buster su Raspberry Pi 3 | Introduzione a Raspbian Buster Con Raspberry Pi 3b / 3b+: Ciao ragazzi, recentemente l'organizzazione Raspberry Pi ha lanciato il nuovo sistema operativo Raspbian chiamato Raspbian Buster. È una nuova versione di Raspbian per Raspberry pi. Quindi oggi in questo tutorial impareremo come installare il sistema operativo Raspbian Buster sul tuo Raspberry pi 3
Iniziare con Esp 8266 Esp-01 con Arduino IDE - Installazione di schede Esp in Arduino Ide e programmazione di Esp: 4 passaggi
Iniziare con Esp 8266 Esp-01 con Arduino IDE | Installazione di schede Esp in Arduino Ide e programmazione Esp: in questo tutorial impareremo come installare le schede esp8266 in Arduino IDE e come programmare esp-01 e caricare il codice in esso. Poiché le schede esp sono così popolari, ho pensato di raddrizzare un istruibile per questo e la maggior parte delle persone affrontano problemi
Iniziare con La COOL Board: 4 passaggi (con immagini)
Primi passi con La COOL Board: Introduzione"Quando ci è venuta l'idea per La COOL Board, ho immaginato un mix tra un Arduino con WiFi e una stazione meteorologica agronomica modulare. Doveva consumare pochissima energia per il funzionamento autonomo e volevo essere in grado di controllare