Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Eseguire programmi da MicroSD su ATmega

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[31] Re: Eseguire programmi da MicroSD su ATmega

Messaggioda Foto UtenteTardoFreak » 10 apr 2012, 0:04

giacky98 ha scritto:- Il programma si accorge che è arrivata un‘interrupt perché viene chiamata la funzione relativa all‘interrupt (es. SIG in C o una label nel mio linguaggio)

Sbagliato.
Il programma principale non si accorge per niente che è stata sollevata un' interrupt.
giacky98 ha scritto:- Non credo che si possa risalire a “quando“, si potrebbe controllare in che posizione è il program counter per capire a che istruzione è scattato l‘interrupt

Quasi giusto, tecnicamente fattibile ma non dal programma principale, bensì dalla routine di gestione dell' interrupt. Potrebbe saperlo (la ruotine) andando a sbirciare lo stack (in fondo questo è quello che fa lo scheduler di un sistema multitasking non cooperativo ma per ora è meglio non parlarne).

Ora le domande successive sono:
- visto che il programma (task) in esecuzione non si accorge che è stata sollevata l' interrupt e tanto meno sa quando e dove è stata sollevata perché dovresti preoccupartene tu nel progettare l' interprete?
- Che ti frega sapere se l' interrupt è arrivata mentre era in esecuzione il task A, B o C o un qualsiasi altro? Cosa cambia?

Sono altre DUE domande. Aspetto DUE risposte. :ok:
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,8k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[32] Re: Eseguire programmi da MicroSD su ATmega

Messaggioda Foto Utentegiacky98 » 10 apr 2012, 13:38

visto che il programma (task) in esecuzione non si accorge che è stata sollevata l' interrupt e tanto meno sa quando e dove è stata sollevata perché dovresti preoccupartene tu nel progettare l' interprete?

Quindi non devo preoccuparmene.

Che ti frega sapere se l' interrupt è arrivata mentre era in esecuzione il task A, B o C o un qualsiasi altro? Cosa cambia?

Non cambia saperlo, ma serve sapere in quale task si trova la routine di gestione
Avatar utente
Foto Utentegiacky98
10 1 4
New entry
New entry
 
Messaggi: 70
Iscritto il: 6 dic 2011, 14:57

0
voti

[33] Re: Eseguire programmi da MicroSD su ATmega

Messaggioda Foto UtenteTardoFreak » 10 apr 2012, 13:40

Ma mi prendi in giro?
In un programma scritto in C la ruotine di gestione di un' interrupt dove è? Dentro il main? ||O
Oppure è altrove?
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,8k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[34] Re: Eseguire programmi da MicroSD su ATmega

Messaggioda Foto Utentegiacky98 » 10 apr 2012, 13:49

Ok, forse ho confuso task con programma...
ma allora, se il file di un programma interpretato contiene un task, devo creare un programma apposito che viene eseguito come routine di gestione, giusto? :?
Avatar utente
Foto Utentegiacky98
10 1 4
New entry
New entry
 
Messaggi: 70
Iscritto il: 6 dic 2011, 14:57

0
voti

[35] Re: Eseguire programmi da MicroSD su ATmega

Messaggioda Foto UtenteTardoFreak » 10 apr 2012, 15:08

Certamente.
In un programma normale, anche realizzato con il tuo interprete, avrai:
- un main
- diverse subroutines che fanno quello che devono fare
- le subroutines per la gestione delle interrupt, una per ogni tipo di interrupt.

In un programma multitasking avrai
- un main che serve per far partire lo scheduler ed i vari task
- un certo numero di task che girano contemporaneamente
- diverse subroutines che fanno quello che devono fare
- le subroutines per la gestione delle interrupt, una per ogni tipo di interrupt.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,8k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[36] Re: Eseguire programmi da MicroSD su ATmega

Messaggioda Foto Utentegiacky98 » 10 apr 2012, 16:15

In un programma multitasking avrai
- un main che serve per far partire lo scheduler ed i vari task
- un certo numero di task che girano contemporaneamente
- diverse subroutines che fanno quello che devono fare
- le subroutines per la gestione delle interrupt, una per ogni tipo di interrupt.


Ok, allora chiariamo anche come implementare il multitasking...

Prima di tutto, volevo spiegare che l'interprete carica un file, con estensione .sbi, che contiene (principalmente) un byte identificativo del formato, un byte identificativo della versione, il numero di labels, gli indirizzi dei labels e il bytecode del programma.
Io avevo in mente, per creare il multitasking, di caricare più file .sbi e di eseguirli ognuno un'istruzione alla volta, come avevi detto te all'inizio.

E' questo il modo corretto?
O può anche essere un programma (uno solo, un solo file .sbi) che avvia più processi?
Avatar utente
Foto Utentegiacky98
10 1 4
New entry
New entry
 
Messaggi: 70
Iscritto il: 6 dic 2011, 14:57

0
voti

[37] Re: Eseguire programmi da MicroSD su ATmega

Messaggioda Foto UtenteTardoFreak » 10 apr 2012, 16:32

Non saprei, questo lo devi decidere tu.
Anzi, a dire il vero dovresti averlo già deciso nella fase di definizione del sistema.
Comunque, fossi in te, prima di pensare al multitasking mi concentrerei nel realizzare una versione definitiva, non multitasking, che permetta di gestire le varie interrupt delle perifichere e la gestione delle stesse.
E' già un bel lavoro, c'è da divertirsi.
Dopo penserei ad una soluzione per rendere più veloce tutto l' ambaradan.
Alla fine di tutto questo passerei ad analizzare a fondo il multitasking.

Questo perché, se è relativamente semplice far funzionare diversi programmi contemporaneamente, più difficile è implementare il modo con cui questi interagiscono fra di loro.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,8k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[38] Re: Eseguire programmi da MicroSD su ATmega

Messaggioda Foto Utentegiacky98 » 10 apr 2012, 16:39

Comunque, fossi in te, prima di pensare al multitasking mi concentrerei nel realizzare una versione definitiva, non multitasking, che permetta di gestire le varie interrupt delle perifichere e la gestione delle stesse.
E' già un bel lavoro, c'è da divertirsi.

Si in effetti hai ragione

Dopo penserei ad una soluzione per rendere più veloce tutto l' ambaradan.

Ci sto già lavorando, sto dando anche priorità a questo, prima di implementare gli interrupt
Avatar utente
Foto Utentegiacky98
10 1 4
New entry
New entry
 
Messaggi: 70
Iscritto il: 6 dic 2011, 14:57

0
voti

[39] Re: Eseguire programmi da MicroSD su ATmega

Messaggioda Foto Utentegiacky98 » 17 apr 2012, 18:14

Ok ho implementato gli interrupt, adesso prima di mettermi ad implementare altre funzioni volevo scrivere le guide meglio e in PDF (non in TXT) e sia in italiano e anche in inglese (adesso sono solo in inglese).
E poi volevo "velocizzare tutto l'ambaradan"... Ho già velocizzato un pochino, ma non so come portare l'interprete ad una velocità decente... hai qualche idea?
Avatar utente
Foto Utentegiacky98
10 1 4
New entry
New entry
 
Messaggi: 70
Iscritto il: 6 dic 2011, 14:57

0
voti

[40] Re: Eseguire programmi da MicroSD su ATmega

Messaggioda Foto UtenteTardoFreak » 17 apr 2012, 21:02

L' idea te l' ho scritta nel post [8].
Userei una memorietta, una RAM esterna su cui caricare l' intero programma.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,8k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti