|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jun 2009
Messaggi: 18
|
[C] problemi
sto passando dall'assembler al C. forse sono ancora troppo rivolta al basso livello ....
richiamo una procedura di controllo, faccio il controllo, poi al ritorno il test una scelta. sono stata attenta e mi pare che sia semplice....dovrebbe andare liscio, invece non funziona ç_ç Codice:
long controllo(long param1, long param2)
{ //passabanda!!!! --> 1<param1<25
timer = 200; // carico timer = 2 secondi
// se param1 > 25 -> overbanda + se param <1 -> underbanda
if ((param1 >25) && (param1<1))
{
scrivo_errore(); //scrivo "errore" a video
param2 = 21; //segnalo errore
}
else buzzer = 1; // sono in "banda" faccio un bip!
return(param2); //trasmetto param2 al main
}
[...main...]
case 5: //controllo
controllo(param);
if (tasto==x) stato =1; //torno indietro
if (param2!=21) stato++; //vado oltre
else break;
Ultima modifica di lefermops : 17-06-2009 alle 12:32. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Feb 2006
Messaggi: 134
|
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Jun 2009
Messaggi: 18
|
si, è un OR.... ho sbagliato a scrivere...
param1 lo setto nel main.... |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1232
|
ci sono un paio di problemi :
-la funzione controllo prende due parametri , ma tu nel main ne passi solo uno - cosa intendi con non funziona? non compila? o non esegue quello che vuoi ?
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni Ultima modifica di qwerty86 : 17-06-2009 alle 12:47. |
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Jun 2009
Messaggi: 18
|
a controllo passo i due parametri che nell'ordine in cui li ho dichiarati nella procedura.
il problema è che non riesco ad ottenere quello che voglio... se metto un valore alla mia variabile fuori dalla "banda di valenza" bippa lo stesso, e funziona come se fosse il valore "buono". Codice:
long controllo(long param1, long param2)
{ //passabanda!!!! --> 1<param1<25
timer = 200; // carico timer = 2 secondi
// se param1 > 25 -> overbanda + se param <1 -> underbanda
if ((param1 >25) || (param1<1))
{
scrivo_errore(); //scrivo "errore" a video
param2 = 21; //segnalo errore
}
else if ((param1<25)&&(param1>1)) buzzer = 1; // sono in "banda" faccio un bip!
return(param2); //trasmetto param2 al main
}
[...main...]
case 5: //controllo
controllo(param1, param2);
if (tasto==x) stato =1; //torno indietro
if (param2!=21) stato++; //vado oltre
else break;
Ultima modifica di lefermops : 17-06-2009 alle 12:55. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
fai restituire alla funzione un valore ma non lo assegni a niente, così lo perdi. non dovresti fare
param2 = controllo(param1, param2); ? EDIT anche l'else if è sbagliato: devi mettere un or. inoltre se fai uso di >=, <= ti basta un else senza if. Ultima modifica di ndakota : 17-06-2009 alle 13:02. |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Codice:
void controllo(long param1, long * param2) ... //nel main controllo(param1, ¶m2); Codice:
long controllo(long param1) ... //nel main param2 = controllo(param1); |
|
|
|
|
|
|
#8 |
|
Junior Member
Iscritto dal: Jun 2009
Messaggi: 18
|
Grazie!!!!!!
adesso funziona!!! ho assegnato il parametro al richiamo della procedura param2 = controllo(param1, param2); e tolto l'if all'else usando >=e<=. grazie mille per l'aiuto!!! |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
figurati
comunque come ti ha fatto vedere tomminno è ancora meglio, non hai bisogno di param2 nella funzione a questo punto. |
|
|
|
|
|
#10 |
|
Junior Member
Iscritto dal: Jun 2009
Messaggi: 18
|
provo il nuovo assetto con un solo parametro....
non pensavo che fosse così difficile il passaggio da basso ad alto livello!!! Ultima modifica di lefermops : 17-06-2009 alle 16:38. |
|
|
|
|
|
#11 |
|
Junior Member
Iscritto dal: Jun 2009
Messaggi: 18
|
anche con un solo parametro funziona
grazie milleeeeeeeee!! ma ho già un secondo problema.... (ettepareva!!) sto cercando di tarare un sensore (normalissimo ponte resistivo). ho fatto succedere le videate... 1° ----- (sto aspettando la risposta) 2° quando il converter risponde, visualizzo tranquilla la lettura e salvo il primo valore. fin qui tutto bene...... ma se cerco di fare la videata col secondo punto di taratura, le prime due videate non funzionano più...... Codice:
case 8: //aspetto che converter sia stabile
if(!conv) //se converter non attivo
{
trattini(); // visualizzo '----'
}
if (tasto==x) stato =1; //torno indietro
if (param2!=21) stato++; //vado oltre
else break;
case 9: //prendo primo punto calibrazione
vis_conv(); //visualizzo lettura converter su video
primo_valore = lettura_conv; //salvo lettura primo punto
if (tasto==x) stato =1; //torno indietro
//timer = 500; // ricarico timer a 5 SECONDI
stato++; // VADO OLTRE
BUZZER=1; // bippa
break;
case 10: //prendo secondo punto calibrazione
timer=5000; //carico 5 minuti
temp=100;
while (timer) scaldo(); //porto a temperatura nota
vis_conv(); //visualizzo lettura converter su video
secondo_valore = lettura_conv; //salvo lettura secondo punto
if (tasto==x) stato =1; //torno indietro
timer = 500; // ricarico timer a 5 SECONDI
stato++; // VADO OLTRE
BUZZER=1; // bippa
break;
Ultima modifica di lefermops : 17-06-2009 alle 16:38. |
|
|
|
|
|
#12 |
|
Junior Member
Iscritto dal: Jun 2009
Messaggi: 18
|
risolto.....^^
ho rifatto tutto da capo!! |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
|
Ma per curiosità per che cosa stai programmando?
__________________
|
|
|
|
|
|
#14 |
|
Junior Member
Iscritto dal: Jun 2009
Messaggi: 18
|
sto ri-scrivendo il firmware per una cpu che gestisce un sensore, una stampantina, una tastiera e un display....
il programma in origine è un fw di 32k in assembler intel.... solo che il processore che usavamo è stato obsoletato..... quindi ci è toccato sceglierne un altro. il mio capo ha scelto il 430 della texas.... che dopo due mesi di remate, comincia anche a piacermi (adesso che funziona!!^^) poi abbiamo pensato che, visto che avrei comunque dovuto imparare ad usare il nuovo assembler e il nuovo compilatore, era meglio passare al C, per avere una maggiore portabilità.... e non dover rifare sempre i sw ogni 10/15 anni quando il micro viene obsoletato!!!! (ma per me è il primo osbolamento..) ma finalmente sono contenta!!!! il mio bambino inizia a funzionareeeeeee!!!!
__________________
"Se un giorno le api dovessero scomparire, all'uomo resterebbero soltanto quattro anni di vita" (Einstein) Le api sono animali tranquilli, che pensano solo ai fatti loro e hanno tanti nemici (vespe, mantidi, formiche, agricoltori che buttano troppi insetticidi).Aiutiamo le api (secondo i nostri mezzi) piantando in giardini e balconi piante mellifere come lauroceraso, lavanda, tiglio, timo, salvia, rosmarino,...
Ultima modifica di lefermops : 20-06-2009 alle 15:47. Motivo: corretto errore di battitura....^^ |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
che figata. spero di trovare un lavoro come il tuo un giorno
|
|
|
|
|
|
#16 |
|
Junior Member
Iscritto dal: Jun 2009
Messaggi: 18
|
...... anch'io!!!
qui i soldi non girano.... e spesso siamo costretti a lavorare gratis.... ma nonostante tutto è bello, e prima o poi la crisi finirà,.... ma con 'sti cinesi che vendono a 1 euro ciò che qui in Italia costa 100, la vedo dura!!
__________________
"Se un giorno le api dovessero scomparire, all'uomo resterebbero soltanto quattro anni di vita" (Einstein) Le api sono animali tranquilli, che pensano solo ai fatti loro e hanno tanti nemici (vespe, mantidi, formiche, agricoltori che buttano troppi insetticidi).Aiutiamo le api (secondo i nostri mezzi) piantando in giardini e balconi piante mellifere come lauroceraso, lavanda, tiglio, timo, salvia, rosmarino,...
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:44.




















