Go Down

Topic: leOS - un semplice OS per schedulare piccoli task (Read 42 times) previous topic - next topic

leo72


pablos

no comment

leo72


pablos

#428
Jan 10, 2013, 10:52 pm Last Edit: Jan 10, 2013, 10:54 pm by pablos Reason: 1
Eccomi, non è che mi ricordo molto di quello che avevo fatto...

Allora ricapitoliamo, ho preso l'ultimo zip e sostituito i 2 file nella cartella Leos2-2.2.0.

le linee originali leOS2.h
Code: [Select]
#define RESET_MCU SREG |= (1<<SREG_I);\
 wdt_disable();\
 DDRA = 0; DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0;\
 DDRG = 0; DDRH = 0; DDRJ = 0; DDRK = 0; DDRL = 0; PORTA = 0;\
 PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0;\
 PORTG = 0; PORTH = 0; PORTJ = 0; PORTK = 0; PORTL = 0;\
 EIND = 0;\
 __asm__ __volatile__ ("jmp 0x0000");
#else


deve diventare così.. giusto?
Code: [Select]
#define RESET_MCU SREG |= (1<<SREG_I);\
 wdt_disable();\
 DDRA = 0; DDRB = 0; DDRC = 0; DDRD = 0; DDRE = 0; DDRF = 0;\
 DDRG = 0; DDRH = 0; DDRJ = 0; DDRK = 0; DDRL = 0; PORTA = 0;\
 PORTB = 0; PORTC = 0; PORTD = 0; PORTE = 0; PORTF = 0;\
 PORTG = 0; PORTH = 0; PORTJ = 0; PORTK = 0; PORTL = 0;\
 EIND = 0;\
         
 ((void (*)())0x000000)();  
                                 //__asm__ __volatile__ ("jmp 0x0000");
#else


così si inchioda ancora  =(

no comment

leo72

A parte che sto notando ora una cosa che non mi torna.
Questo è sbagliato:
Code: [Select]

SREG |= (1<<SREG_I)


Dovrebbe essere
Code: [Select]
SREG &= ~(1<<SREG_I)
Perché devo disattivare gli interrupt, non attivarli.
A parte ciò, pare quindi che neanche così si aggiri il bootloader della MEGA.

Go Up