Cours:ArduinoSansLoopSetup : Différence entre versions
Ligne 20 : | Ligne 20 : | ||
− | = | + | =Gestion du temps= |
− | + | <big>Remplacement</big> : | |
+ | *utiliser {{Rouge|_delay_ms}} à la place de delay | ||
+ | *utiliser {{Rouge|_delay_us}} à la place de delayMicroseconds | ||
+ | |||
+ | S'il est indispensable d'utiliser les fonctions arduino [https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/wiring.c delay/delayMicroseconds/millis/micros], il faut configurer le Timer1 de la façon suivante : | ||
+ | |||
+ | <source lang=cpp> | ||
+ | void initFonctionsTempsArduino() | ||
+ | { | ||
+ | sei(); | ||
+ | // marche pour 328p et 2560 et autres ... | ||
+ | // à adapter suivant le µc | ||
+ | // cf https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/wiring.c | ||
+ | TCCR0A=(1<<WGM01)|(1<<WGM00); | ||
+ | TCCR0B=(1<<CS01)|(1<<CS00); | ||
+ | TIMSK0=(1<<TOIE0); | ||
+ | } | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | initFonctionsTempsArduino(); | ||
+ | Serial.begin(115200); | ||
+ | while(1) | ||
+ | { | ||
+ | delay(100); | ||
+ | Serial.println(millis()); | ||
+ | } | ||
+ | } | ||
+ | </source> |
Version du 21 mai 2024 à 22:24
Il est tout à fait possible de se passer complètement des librairies Arduino, tout en utilisant le logiciel Arduino !
exemple :
#define F_CPU 16000000UL
#include <util/delay.h>
int main()
{
DDRB=0x0F;
for(;;)
{
PORTB^=0x0F;
_delay_ms(500);
}
}
Gestion du temps
Remplacement :
- utiliser _delay_ms à la place de delay
- utiliser _delay_us à la place de delayMicroseconds
S'il est indispensable d'utiliser les fonctions arduino delay/delayMicroseconds/millis/micros, il faut configurer le Timer1 de la façon suivante :
void initFonctionsTempsArduino()
{
sei();
// marche pour 328p et 2560 et autres ...
// à adapter suivant le µc
// cf https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/wiring.c
TCCR0A=(1<<WGM01)|(1<<WGM00);
TCCR0B=(1<<CS01)|(1<<CS00);
TIMSK0=(1<<TOIE0);
}
int main()
{
initFonctionsTempsArduino();
Serial.begin(115200);
while(1)
{
delay(100);
Serial.println(millis());
}
}