Newsgroup: it.comp.lang.c
Titolo: parallela o seriale e clock

1)qualcuno sa come si comanda la parallela o seriale in c e/o quale libreria
usare?
2)volevo fare un onda quadra a una certa frequenza (un clock a una certa
frequenza da me variabile) come si fa?
3)sulla parallela/seriale  mi interessa lavore con i bit, alto basso, come
vanno
definite le variabili, cioč il tipo?

 definite le variabili, cioè il tipo?
solitamente sulla parallela ci scrivi 8 bit per cui unsigned char potresti
utilizzare se lavori sotto dos... Salutoni Dave.

 il kbhit non è ansi e lo trovi nel compilatore c++ della borland
Bene, hai scritto un obbrobrio di codice non portatile. Almeno il main,
dichiaralo int...
-- 
Andrea Bergia - studente              Linux Registred User #281550
"The one thing we're all waiting for, is peace on Earth and an end to war,
it's a miracle we need, the miracle, the miracle, 
Peace on earth and end to war today,
That time will come one day you'll see when we can all be friends"

 dichiaralo int...
Quando ho scritto il precedente obbrobrio NON ME NE FREGAVA ASSOLUTAMENTE
NIETE che non fosse portatile, era esclusivamente un esempio di come poter
utilizzare il compilatore della borland con gli strumenti che ti mette esso a
disposizione e nel modo che mi pareva più semplice da capire per qualcuno che
di parallela ne capisse poco, tu piuttosto perchè anzichè di perdere tempo a
postare critiche nei confronti degli altri non ti impegni magari a postare
qualcosa di utile ? Scusa  dimenticavo, tu sei quello che asseriva che la
dimensione di una variabile, int se ben ricordo, è determinata dal sistema
operativo e NON dal compilatore ;-) !!!
Un pochino di umiltà in più non ti farebbe male, ricordati che al momdo trovi
sempre qualcuno che la sà più lunga di te... Cordialmente Dave.

NIETE che non fosse portatile, 
Invece te ne deve fregare.
Qui dentro c'e` anche gente che sta imparando e farebbe bene a
imparare cose corrette, come il fatto che la dichiarazione della
funzione main() di un programma C **DEVE** avere come tipo di ritorno
un intero.  Il tuo codice, d'altronde, e` molto poco utile su sistemi
come quelli odierni, in cui non ci puo` essere accesso diretto alle
periferiche, dati i "layer" di astrazione che i sistemi operativi
installano.  La cosa piu` probabile, usando il tuo codice, se si e`
fortunati, e` che si abbia un bell'access violation.

 dichiaralo int...
Perchè allora di perdere tempo a farmi notare la schifezza che ho scritto non
ti impegni a postare qualcosa di più sensato ? Al momento non me ne fregava
assolutamente niente della portabilità ho postato qualcosa di semplicissimo
che potesse generare un clock e che fosse concettualmente semplice da capire,
perchè allora non te la prendi anche quelli della BORLAND che scrivono degli
esempi assolutamente non portabili nell' help del loro compilatore :-)
Cordialmente Dave.

 un intero.
Cavolo non ho fatto in tempo ad annullare il messaggio postato che subito lo
hai letto, avevo scambiato Andrea per un altra persona, si hai ragione è stata
una svista quella del main, ma ti assicuro che negli istituti professionali
della mia città, almeno sino all'anno scorso usavano ancora il c++ 3 della
borland, e su quel compilatore e in piattaforma dos posso garantirne il
funzionamento !
Cosi siamo tutti più contenti, anche se di cose se ne potrebbero aggiungere
molte altre e speriamo che l' outportb, per qualche strana violazione, non mi
metta in enable il pin di scrittura della falsh bios sovrascrivendovi qualche
settore se no dovrete uccicdermi :-))))
Cordialmente Dave.
 #include <dos.h>
#include <conio.h>
int main(void)
{
   while (!kbhit())   // sinche non premo un tasto
     {
        outportb(0x378,1);  // bit 1 parallela a 1
        delay(1000);  // aspetto 1 secondo
        outportb(0x378,0);  // bit 1 parallela a 0
        delay(1000);      // aspetto 1 secondo
     }
   return 0;
}

funzionamento !
Lo so (purtroppo).  Il problema e` che ormai c'e` uno standard ben
affermato per il linguaggio e il codice postato nel ng deve essere il
piu` portabile possibile, in quanto non sai qual e` il sistema su cui
il tuo interlocutore andra` a compilare.  Inoltre, non e` detto che il
tuo codice funzioni, in quanto, sotto un sistema come Windows, per
esempio (e piu` in generale nei sistemi che gestiscono la memoria in
modo protetto) l'accesso alle porte del PC e` riservato a codice che
gira ad un "livello" particolare (essenzialmente, lo stesso livello
dei driver).

    while (!kbhit())   // sinche non premo un tasto
Va bene che della portabilità non te ne frega un tubo, ma dell'italiano...



domande:
-non ho ben capito la disquisizione sul int del main(meno necessaria tra
tutto ora ma cmq importante)
-outportb è un funzione che va un po come un puntatore, lasciate passare
questo paragone, ma il punto è quale uscita della parallela comanda? dalla
parallela io dovrei poi selezionare le uscite quello che voglio sapere è:
  1)outportb mi scrive su tutte le uscite della parallela 1 o 0
  2)riguardandolo più attentamente il "bit 1"  (outportb(0x378,  ) indica il
primo della serie degli 8 bit che invio?
     -come conto i bit 2 3  4  ecc e quindi forse i pin 1 2 3 ,cioè a che
valori sono associati?
  3)fino a che punto è affidabile il delay, cioè vorrei sapere a grandi
linee i limiti, non che vorrei arrivarci ma che almeno so che è inutile
andare oltre....

(c'č un altro mex ma penso di non aver capito prima proprio nulla di
outportb...)
ho programmato un po il tutto,ovviamente versione beta, tutto limitato ecc
ma non ho capito come funziona
outportb(port,valore);
port č la porta e 0x378 rappresenta la parallela
valore č un unsigned char che butta 8 bit sulla porta parallela, se io
volessi avere un filo che porta il clock e un altro che varia a piacere
dovrei trovare il carattereche rappresenta la mia sequenza o piů
semplicemente scrivere i bit nella variabile char.
Se tutte le mie supposizioni sono esatte dovrei imporre i valori bit per
bit, come?
come sono numerate le uscite sulla parallela?

 tutto ora ma cmq importante)
main() restituisce sempre int.
void main( foobar ) è undefined behaviour.
Ciao,
-- 
oOO()             |Nicholas Wieland|
/ _/              |nicholas_wieland|
|/ [ Step on the ]|    @
yahoo.it
   |
\_)[  right foot ]|________________|

 Va bene che della portabilità non te ne frega un tubo, ma dell'italiano...
Questa è sicuramente la risposta ad un post più utile ed IT che abbia mai
letto complimenti !!!

 andare oltre....
Utilizzando il Turbo c il delay(valore_dell_attesa_in_millisecondi) è piuttosto
preciso e non succede come per il pascal che l'attesa della funzione
corrispondente sia influenzata dalla velocità del processore...  Cordialmente
Dave.

 andare oltre....
Utilizzando il Turbo c il delay(valore_dell_attesa_in_millisecondi) è piuttosto


 come sono numerate le uscite sulla parallela?
Scusa la mia curiosità, ma stai forse forse lavorando con qualche dispositivo
con protocollo di comunicazione I2c ? Per quanto riguarda i vari bit ti
consiglio di dare una guardata ai vari operatori che il c ti mette a
disposizione ti l' &, ^ ecc... Cordialmente Dave.


non so cosa sia un i2c ma mio padre è arrivato con nuova elettronica e ha
deciso di fare il comando dei motori passo passo poi ha letto che si
potevano comandare tutto tramite porta parallela e ha "sbolognato" il
problema  a me...
Quello che so facendo è per "divertimento",insomma qualcosa di nuovo, un
esperimento....

 deciso di fare il comando dei motori passo passo ...
Ho capito ;-), anche io diversi anni passati realizzai una cosa di quel tipo,
con un motore passo passo di un vecchio drive,  con i primi quattro bit della
porta parallela e una manciata di transistor comandavo il motore avanti e
indietro, una cosa piuttosto interessante se devi costruire qualche
apparecchio meccanico con elevati livelli di precisione... Buon Lavoro Dave.

grazie mille per il buon lavoro e per l'aiuto.
 a buon natale e buon anno