SE4Binome2024-7

De projets-se.plil.fr
Aller à la navigation Aller à la recherche

Ordonnanceur

#include <avr/io.h>

#include <avr/interrupt.h>

#define CTC1            WGM12           // Meilleur nom pour le bit


#define PERIODE         1000

void init_minuteur(int diviseur,long periode){

TCCR1A=0;               // Le mode choisi n'utilise pas ce registre

TCCR1B=(1<<CTC1);       // Réinitialisation du minuteur sur expiration

switch(diviseur){

  case    8: TCCR1B |= (1<<CS11); break;

  case   64: TCCR1B |= (1<<CS11 | 11<<CS10); break;

  case  256: TCCR1B |= (1<<CS12); break;

  case 1024: TCCR1B |= (1<<CS12 | 1<<CS10); break;

  }

OCR1A=F_CPU/1000*periode/diviseur;

TCNT1=0;

TIMSK1=(1<<OCIE1A);

}

ISR(TIMER1_COMPA_vect){

}

int main(void){

DDRC &= 0b000000001;              // Chenillard sur 4 LED

PORTB ^= ~0b00000001;            // LED éteintes

init_minuteur(256,PERIODE);

sei();

while(1);

}

Makefile

export CC = avr-gcc

export MCU = atmega328p
export TARGET_ARCH = -mmcu=$(MCU)

export CFLAGS =  -Wall -I. -DF_CPU=16000000 -Os #-g
export LDFLAGS = -g $(TARGET_ARCH) -lm -Wl,--gc-sections #	-Os


TARGET = ordonnanceur1
#TERM = /dev/ttyUSB0
TERM = /dev/ttyACM0
CPPFLAGS = -mmcu=$(MCU)
PGMER = -c arduino -b 115200 -P $(TERM)
PGMERISP = -c arduino -b 115200 -P $(TERM)
ARVDUDECONF= -C /usr/local/arduino/arduino-0021/hardware/tools/avrdude.conf
export DUDE = /usr/bin/avrdude -F -v -p $(MCU) $(AVRDUDECONF)

C_SRC = $(wildcard *.c)
OBJS = $(C_SRC:.c=.o)


all: $(TARGET).hex

ass:$(C_SRC)
	$(CC) -S $(CPPFLAGS) $(CFLAGS) $< -o $@

clean:
	rm -f *.o

%.o:%.c
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@


$(TARGET).elf: $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $(OBJS)

$(TARGET).hex: $(TARGET).elf
	avr-objcopy -j .text -j .data -O ihex $(TARGET).elf $(TARGET).hex
	avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 -O ihex $(TARGET).elf eeprom.hex

upload: $(TARGET).hex
	stty -F $(TERM) hupcl # reset
	$(DUDE) $(PGMER) -U flash:w:$(TARGET).hex
#	$(DUDE) $(PGMERISP) -U flash:w:$(TARGET).hex

size: $(TARGET).elf
	avr-size --format=avr --mcu=$(MCU) $(TARGET).elf

Ressources & Sources

Lien Git : https://gitea.plil.fr/rboursau/S8-Pico