funzione rand() su scheda STK500 (ATMEL)
Salve a tutti, sono fresco fresco d' iscrizione.
Ho un dubbio da porvi:
sto programmando, con un Programmatore ATMEL (l' STK500), un micro (ATMEGA8515L, quello base che si trova nel kit) con l'intendo di avere dei "delay", cioè dei momenti in cui il micro non esegue operazioni, di tempo randomico.
Uso come Compilatore l' "AVR-Studio 4" che, scritto il codice con relative librerie ".h" inserite per il "delay_ms" e il "rand", non da problemi di Debug (0 errori, 0 warning).
Una volta flashata la memoria del micro (con la EEPROM è uguale), è come se questo non riuscisse ad eseguire l'operazione ed in un ciclo "while(1)" che racchiude tutto il codice, tutte le operazioni dopo l'istruzione "int a=rand();" per esempio, non vengono eseguite.
ESEMPIO DEL CODICE:
********************************************************************************************
#include <avr/io.h>
#define F_CPU 1000000UL // 1 MHz
#include <util/delay.h> //libreria per il "delay"
#include <util/delay_basic.h>
#include <stdlib.h> //libreria per il "rand"
#define DirectionPortLED DDRC
#define LED_ON PORTC
#define msec 100
void InitializeLED()
{
DirectionPortLED = 0xFF;
LED_ON = 0xFF;
}
int main(void)
{
int tot;
double tot_1;
InitializeLED();
while(1){
PORTC = 0b11111111; //spengo tutti i LED
_delay_ms(msec);
PORTC = 0b11111110; //accendo il primo LED
_delay_ms (msec);
tot=rand()%100; //così prendo num tra 0 e 99.
tot_1=(double)tot; //delay vuole in ingresso un double
PORTC = 0b11111101; //accendo il secondo LED
_delay_ms (tot_1);
}
}
********************************************************************************************
Quindi le operazioni dopo il rand() non vengono eseguite, MA iterativamente, le prime (spegnere tutti i led ed accendere il primo) si.
NON CAPISCO--> AIUTO!
Ho un dubbio da porvi:
sto programmando, con un Programmatore ATMEL (l' STK500), un micro (ATMEGA8515L, quello base che si trova nel kit) con l'intendo di avere dei "delay", cioè dei momenti in cui il micro non esegue operazioni, di tempo randomico.
Uso come Compilatore l' "AVR-Studio 4" che, scritto il codice con relative librerie ".h" inserite per il "delay_ms" e il "rand", non da problemi di Debug (0 errori, 0 warning).
Una volta flashata la memoria del micro (con la EEPROM è uguale), è come se questo non riuscisse ad eseguire l'operazione ed in un ciclo "while(1)" che racchiude tutto il codice, tutte le operazioni dopo l'istruzione "int a=rand();" per esempio, non vengono eseguite.
ESEMPIO DEL CODICE:
********************************************************************************************
#include <avr/io.h>
#define F_CPU 1000000UL // 1 MHz
#include <util/delay.h> //libreria per il "delay"
#include <util/delay_basic.h>
#include <stdlib.h> //libreria per il "rand"
#define DirectionPortLED DDRC
#define LED_ON PORTC
#define msec 100
void InitializeLED()
{
DirectionPortLED = 0xFF;
LED_ON = 0xFF;
}
int main(void)
{
int tot;
double tot_1;
InitializeLED();
while(1){
PORTC = 0b11111111; //spengo tutti i LED
_delay_ms(msec);
PORTC = 0b11111110; //accendo il primo LED
_delay_ms (msec);
tot=rand()%100; //così prendo num tra 0 e 99.
tot_1=(double)tot; //delay vuole in ingresso un double
PORTC = 0b11111101; //accendo il secondo LED
_delay_ms (tot_1);
}
}
********************************************************************************************
Quindi le operazioni dopo il rand() non vengono eseguite, MA iterativamente, le prime (spegnere tutti i led ed accendere il primo) si.
NON CAPISCO--> AIUTO!

