lucaslealvale / aps1-embarcados Goto Github PK
View Code? Open in Web Editor NEWAPS1 - Embarcados
APS1 - Embarcados
Lines 148 to 180 in 472c51d
Apesar de não está errado.
Tem momentos no código que após um if ou else, não há espaços para as chaves { e e outros momentos há. Alguns pula linha, outros não. Algumas linha estão em branco dando espaco para outro if, tem hora que não.
O recomendado é seguir um padrão de estilo de codificação ("coding style"). Para C, a maioria é similar.
Segue alguns para sua curiosidade, adotado por grandes entidades:
Lines 306 to 324 in 472c51d
Não entendi porque redefine o valor da variavel ORDER para o mesmo valor para cada case do Switch.
Enfim poderiamos ter um vetor de ponteiros para as musicas:
music *musicas[] = {&music1, &music2, &music3};
Ai o switch poderia virar
if(order) {
gfx_mono_draw_string(" ", 10,10, &sysfont);
play_song(music[ORDER]);
}
Vantagens:
Line 308 in 472c51d
Sugestão: cria uma função oled_clear_screen.
Vantagens:
Lines 129 to 150 in 472c51d
No arquivo musicas.h existem diversos vetores com informações constantes (uma vez definido, nunca é alterado).
Uma grande recomendação de quando trabalhamos com sistemas embarcados, e também acaba sendo uma excelente prática de programação, sempre que tivermos dados constantes que não alteram (imutáveis), declarar eles com a propriedade const.
Exemplo:
const int music[] = ...
Quais as vantagens para um sistema embarcado?
Bom, o nosso SAME70, é uma CPU com 2048KB de ROM e 384KB de RAM (fonte) Quando você não utiliza a propriedade const, o compilador assume, que o vetor pode ser alterado a qualquer instante, por este motivo, ele é armazenado na RAM do processador. Agora, com o const, estes dados serão armazenados na ROM! Já que eles não se alteram! Dando uma enorme economia de memória RAM.
Lembre-se que geralmente em sistemas embarcados, um dos maiores gargalos é a quantidade de memória RAM disponível (RAM = custo = aumenta preço).
Lines 210 to 211 in 472c51d
Ao usar a função pio_set_input e passar os flags PIO_PULLUP e PIO_DEBOUCE, acredito que vocês gostariam de utilizar os dois certos?
Esses são flags binários, se você usa o operador &, você está fazendo uma lógica E (And) com os dois flags, desligando ambos (são bits diferentes, logo o And irá dar um zero), ou seja, vocês não ligaram nenhum dos dois dessa forma...
O jeito correto é o usar o operador | (ou bit a bit).
Ficando portanto
pio_set_input(BUT_PIO, BUT_PIO_IDX_MASK, PIO_PULLUP | PIO_DEBOUNCE);
Por fim, como você ligou o pull-up atráves das flags, vocês não precisariam utilizar a função pio_pull_up.
Lines 226 to 248 in 472c51d
Exemplo
// (Colocar este define junto com os outros do botão)
#define BUT2_PRIORITY 6
NVIC_SetPriority(BUT2_PIO_ID, BUT2_PRIORITY);
Vantagens:
O objetivo da mesma é familizar o estudante com o Kit de desenvolvimento - ATSAME70-XPLD.
Na verdade, o objetivo deste projeto é que vocês adquiram conhecimento de programação em eletrônica embarcada, o Atmel SAME70 é apenas um kit específico de um fornecedor, gostariamos que vocês pegassem conceitos para que pudessem abstrair para outros modelos e fabricantes, já que todos eles possuem características muito similares (hardware ARM, programação em linguagem C, memória RAM limitada, ausência de sistema operacional convencional, periféricos dedicados, pinos programáveis e afins).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.