Mudanças entre as edições de "STE29008-2018-2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 185: Linha 185:
 
*[https://docs.google.com/spreadsheets/d/1WpCUJ6XuEYSVLajsiiWBBdc12yez7yigkzS5Sq9Hp0A/edit?usp=sharing Mapeamento de Pinos Arduino Mega]
 
*[https://docs.google.com/spreadsheets/d/1WpCUJ6XuEYSVLajsiiWBBdc12yez7yigkzS5Sq9Hp0A/edit?usp=sharing Mapeamento de Pinos Arduino Mega]
  
 +
 +
<syntaxhighlight lang=c>
 
#include <avr/interrupt.h>
 
#include <avr/interrupt.h>
 
#include <util/delay.h>
 
#include <util/delay.h>
 
#include "GPIO.h"
 
#include "GPIO.h"
  
GPIO led1(7, GPIO::OUTPUT);
+
GPIO led0(0, GPIO::OUTPUT);
 +
GPIO led1(1, GPIO::OUTPUT);
 +
GPIO led6(6, GPIO::OUTPUT);
 +
GPIO led13(13, GPIO::OUTPUT);
 +
 
 +
 
  
<syntaxhighlight lang=c>
 
 
int main(void){
 
int main(void){
  
 
while (1){
 
while (1){
 +
led0.toggle();
 
led1.toggle();
 
led1.toggle();
 +
led6.toggle();
 +
led13.toggle();
 
_delay_ms(1000);
 
_delay_ms(1000);
 
}
 
}

Edição das 09h34min de 19 de setembro de 2018

Sistemas Embarcados

  • Professor: Roberto de Matos
  • Encontros: segundas e quartas às 7:30h no Laboratório de Programação.


Aula 1 (30/07/2018) – Apresentação


Aula 2 (01/08/2018) – Introdução

Aula 3 (06/08/2018) – GPIO

Aula 4 (08/08/2018) – UART


Aula 5 (13/08/2018) – ADC

  • Notas de Aula:


(15/08/2018) – ADC (cont.)

(20/08/2018) – PWM


  • Desafio:
    • Usando Round Robin sem interrupções implementar um sistema com um LED e um botão. O sistema deve piscar o LED a cada 2 segundos e ao botão ser pressionado envia uma mensagem pela serial.


(22/08/2018) – Interrupções

(27/08/2018) – Usando C++

Mudança de nível de abstração

Portas arduino MEGA.png


Fonte: https://www.arduino.cc/en/Hacking/PinMapping2560


ATmega2560: I/O Ports


  • Tabela verdade de configuração das portas:

Port Pin Configurations.png


  • Endereços registradores de I/O:

Io registers address 2560.png

GCC, avr-libc


Avr-gcc.png

Prática


Atividade

Re-implementar as seguintes atividades usando C++ e AVR-Libc:

Entregar:

  • Código fonte
  • Relatório apresentando principais registradores utilizados para cada atividade.


(29/08/2018) – Auxílio Atividade (Teste GPIO)

(03/10/2018) – Auxílio Atividade (Serial)

  • Análise dos registradores de controle
  • Funcionamento bloqueante da Serial

(05/10/2018) – Auxílio Atividade (Interrupção)

(09/10/2018) – Aula cancelada

  • Aula cancelada devido a troca pelo horário de sexta-feira

(12/10/2018) – Debug


  • Código C:
#include <avr/io.h>
#include <util/delay.h>

int main(){

	DDRB  = 0xFF;
	DDRE  = 0xFF;
	while(1){
		PORTB = 0x00;
		PORTE = 0x00;
		_delay_ms(1000);
		PORTB = 0xFF;
		PORTE = 0xFF;
		_delay_ms(1000);

	}

	return 1;
}
  • Código Arduino:
#define led1 1


void setup() {
  // put your setup code here, to run once:
  pinMode(led1, OUTPUT);
  
}

void loop() {
  // put your main code here, to run repeatedly:
 
  digitalWrite(led1, HIGH);
  delay(1000);
  digitalWrite(led1, LOW);
  delay(1000);
  
}


  • avr-objdump -h -S <PROJECT_NAME>.elf > <PROJECT_NAME>.lst


(17/10/2018) – Classe GPIO


#include <avr/interrupt.h>
#include <util/delay.h>
#include "GPIO.h"

GPIO led0(0, GPIO::OUTPUT);
GPIO led1(1, GPIO::OUTPUT);
GPIO led6(6, GPIO::OUTPUT);
GPIO led13(13, GPIO::OUTPUT);



int main(void){

	while (1){
		led0.toggle();
		led1.toggle();
		led6.toggle();
		led13.toggle();
		_delay_ms(1000);
	}

}

Megapdf.jpg

(19/10/2018) – Classe GPIO (cont.)