Go Down

Topic: Baco nell'attiny core???! (Read 729 times) previous topic - next topic

nikone

Jan 07, 2012, 11:25 am Last Edit: Jan 07, 2012, 11:29 am by nikone Reason: 1
Ciao ragazzi , anche oggi durante lo sviluppo del software per il mio attiny 45 arriva l'orrdia scoperta : le sotto funzioni void non funzionano , in parole povere non riesco a creare delle routine secondarie . Sto utilizzando il core tiny http://code.google.com/p/arduino-tiny/ e purtroppo non posso utilizzare un altro core perché questo é l'unico che supporta il PWM sul pin4 , ora io avrei bisogno di rendere possibile il funzionamento delle sotto routine ( perché riesco a crearle) o di modificare un'altro core per rendere possibile il PWM sul pin 4 qualcuno mi potrebbe aiutare ? :~
Grazie Niko
Non possiamo pretendere che le cose cambino, se continuiamo a fare le stesse cose(albert Einstein )

leo72


le sotto funzioni void non funzionano , in parole povere non riesco a creare delle routine secondarie

Spiegati. Non ho capito il passaggio.
Se intendi funzioni richiamate all'interno del ciclo loop(), devo contraddirti perché a me funzionano. Potresti pubblicare il codice che ti da problemi?

nikone

Allora intendo che dal loop non riesco a richiamare delle altre funzioni esterne al loop ,
Esempio
Code: [Select]

Void loop ()
{
prog;
}

Void prog ()
{
//fai qualcosa
}


(scusa la sintassi ma sto usando il cellulare)

Questo prog viene caricato perfettamente ma poi non và
Non possiamo pretendere che le cose cambino, se continuiamo a fare le stesse cose(albert Einstein )

leo72

Prova mettendo le parentesi quando chiami prog:

Code: [Select]
void loop() {
  prog();
}

void prog() {
  ...
}


Ora non te li posto, sei sul cell, ma ho diversi codici con sub-routine chiamate da loop tutti funzionanti.

nikone

Può essere veramente cosí semplice :smiley-eek: credo che ho sbagliato io comunque dopo provo
Grazie Niko
Non possiamo pretendere che le cose cambino, se continuiamo a fare le stesse cose(albert Einstein )

ratto93

Anche perchè quelle cosine li non credo vengano controllate dal core, è sintassi C e basta...  :smiley-sweat:
Se corri veloce come un fulmine, ti schianterai come un tuono.

Michele Menniti

Mi viene in mente una cosa: quando ho scritto il firmware per la barriera infrarossi in effetti, e NON HO CAPITO perché, le subroutine (io le chiamo così le void()) le ho dovute mettere tutte PRIMA della "setup", altrimenti non mi funzionavano, in pratica ho seguito queste sequenza:

variabili e costanti
subroutine varie
setup
loop

e così mi ha funzionato tutto; onestamente non ho approfondito ma anch'io metto la { al rigo sotto il void, non vorrei che sia davvero una fesseria del genere.
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

ratto93


Mi viene in mente una cosa: quando ho scritto il firmware per la barriera infrarossi in effetti, e NON HO CAPITO perché, le subroutine (io le chiamo così le void()) le ho dovute mettere tutte PRIMA della "setup", altrimenti non mi funzionavano, in pratica ho seguito queste sequenza:

variabili e costanti
subroutine varie
setup
loop

e così mi ha funzionato tutto; onestamente non ho approfondito ma anch'io metto la { al rigo sotto il void, non vorrei che sia davvero una fesseria del genere.


Ma un attimo, hai dichiarato i prototipi delle funzioni prima del main -> o  loop che di si voglia ?
perchè sennò il sistema non le vede, a meno che non le scrivi prima del main
Se corri veloce come un fulmine, ti schianterai come un tuono.

leo72

Io ce l'ho prima o dopo la routine loop() ma le vede lo stesso.

ratto93

Con o senza prototipi ?
io lo faccio così il programma:

Code: [Select]

int xy();
void richiama_z();

void setup(){
...
}

void loop(){
richiama_z();
...
xy();
}


facevo così anche usando il c programmando il computer e non mi ha mai dato problemi poi .. boh  :smiley-mr-green:
Se corri veloce come un fulmine, ti schianterai come un tuono.

leo72

Senza prototipi. Io scrivo normalmente tutte le sub sempre dopo la funzione loop(), perché tendo ad aggiungere sempre in fondo le cose che mi vengono a mente. Solo la gestione di cose molto delicate (interrupt, timer) la metto prima del setup() o tra seutp() e loop(), per evitare di toccare questo codice.

ratto93


Senza prototipi. Io scrivo normalmente tutte le sub sempre dopo la funzione loop(), perché tendo ad aggiungere sempre in fondo le cose che mi vengono a mente. Solo la gestione di cose molto delicate (interrupt, timer) la metto prima del setup() o tra seutp() e loop(), per evitare di toccare questo codice.

fortunatamente ognuno ha il suo stile :)
Se corri veloce come un fulmine, ti schianterai come un tuono.

Michele Menniti



Senza prototipi. Io scrivo normalmente tutte le sub sempre dopo la funzione loop(), perché tendo ad aggiungere sempre in fondo le cose che mi vengono a mente. Solo la gestione di cose molto delicate (interrupt, timer) la metto prima del setup() o tra seutp() e loop(), per evitare di toccare questo codice.

fortunatamente ognuno ha il suo stile :)

Mai usati i prototipi, quindi l'unica resta la posizione delle {, ma mi pare davvero una cosa mortale :smiley-eek-blue:
Guida alla programmazione ISP e seriale dei micro ATMEL (Caricare bootloader e sketch):
http://www.michelemenniti.it/Arduino_burn_bootloader.php
Guida alla Programmazione ATmega328 noP:
http://www.michelemenniti.it/atmega328nop.html
Articoli su Elettronica In:
http://www.michelemenniti.it/elettronica_in.html

Go Up