- Messaggi: 1010
- Ringraziamenti ricevuti 107
linguaggio c
7 Anni 10 Mesi fa #6
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
Risposta da Pinna al topic linguaggio c
Ciao Paolo,
per quanto ho capito atmel studio 7 ottimizza il codice in modo diverso dall'ide di microchip..... ne ho parlato privatamente con Mauro perchè la stessa istruzione la puoi scrivere in modi diversi..... però, quando si tratta di ottimizzare il codice, ovvero occupare pochi cicli di clock, qui si fa la differenza.... un esempio potrebbe essere PORTB |= (1<<PORTB7), che occupa un solo ciclo di clock.... ma se scrivi DDRB = 0b1000000 e controlli l'assembler vedrai la differenza.... per me è più facile scrivere la seconda istruzione perchè impiego meno tempo a scriverla ed è più leggibile ai miei occhi ma per il microcontrollore saranno "guai" tradotti in termini di tempo di esecuzione..... devi verificare l'assembler derivante dalle due diverse istruzioni e sopratutto scegliere quella che occupa meno cicli di clock.... gli atmel non sono male anzi..... per pilotare un servomotore uso un solo timer (timer 1) mentre con un pic ne devo usare due.... d'altro canto, per avere una vasta gamma di pwm, è meglio usare il pic....
per quanto ho capito atmel studio 7 ottimizza il codice in modo diverso dall'ide di microchip..... ne ho parlato privatamente con Mauro perchè la stessa istruzione la puoi scrivere in modi diversi..... però, quando si tratta di ottimizzare il codice, ovvero occupare pochi cicli di clock, qui si fa la differenza.... un esempio potrebbe essere PORTB |= (1<<PORTB7), che occupa un solo ciclo di clock.... ma se scrivi DDRB = 0b1000000 e controlli l'assembler vedrai la differenza.... per me è più facile scrivere la seconda istruzione perchè impiego meno tempo a scriverla ed è più leggibile ai miei occhi ma per il microcontrollore saranno "guai" tradotti in termini di tempo di esecuzione..... devi verificare l'assembler derivante dalle due diverse istruzioni e sopratutto scegliere quella che occupa meno cicli di clock.... gli atmel non sono male anzi..... per pilotare un servomotore uso un solo timer (timer 1) mentre con un pic ne devo usare due.... d'altro canto, per avere una vasta gamma di pwm, è meglio usare il pic....
Chi vola vale, chi vale vola, chi non vola è un vile
Si prega Accedi o Crea un account a partecipare alla conversazione.
- Pinna
- Moderator
Riduci
Di più
7 Anni 10 Mesi fa #7
da elpablito
Risposta da elpablito al topic linguaggio c
Ciao alla banda
Al Pinna; adesso ai beccato lo scrupolo di coscienza scriverò due istruzioni poi andrò a vedere sull'esadecimale. E' il problema dell'arduinese, facile a dirsi, ma difficile a farsi. Se però avanza tanto spazio, non è così difficile, va bene tutto, poi dipende sempre dal giocattolo che stai facendo.
Paolo
Al Pinna; adesso ai beccato lo scrupolo di coscienza scriverò due istruzioni poi andrò a vedere sull'esadecimale. E' il problema dell'arduinese, facile a dirsi, ma difficile a farsi. Se però avanza tanto spazio, non è così difficile, va bene tutto, poi dipende sempre dal giocattolo che stai facendo.
Paolo
Si prega Accedi o Crea un account a partecipare alla conversazione.
- elpablito
- Autore della discussione
- Platinum Member
Riduci
Di più
- Messaggi: 353
- Ringraziamenti ricevuti 8
7 Anni 10 Mesi fa #8
da elpablito
Risposta da elpablito al topic linguaggio c
Mi ero perso Cosimix
Sfondi una porta aperta, se però la porta va a 1 anche pippo dovrebbe andare a 1, personalmente preferisco il define e leggere la porta.
Paolo
Sfondi una porta aperta, se però la porta va a 1 anche pippo dovrebbe andare a 1, personalmente preferisco il define e leggere la porta.
Paolo
Si prega Accedi o Crea un account a partecipare alla conversazione.
- elpablito
- Autore della discussione
- Platinum Member
Riduci
Di più
- Messaggi: 353
- Ringraziamenti ricevuti 8
7 Anni 10 Mesi fa #9
da alfa75
Risposta da alfa75 al topic linguaggio c
Ciao Paolo
come ti ha gia spiegato Cosmix se porti la variabile pippo a 1 il pin RBx non andrà a 1 anche lui.
Stai confondendo la matematica con il linguaggio c.
Nel linguaggio c l'operatore "=" non significa "uguale a qualcosa" come in matematica , ma si chiama operatore di assegnamento.
Cioè assegna un valore ad una variabile.
riprendendo il solito esempio...
int pippo = PORTBbits.RB0; // pippo assume il valore di RB0 ma non viceversa!
pippo = 5; // pippo va 5 , ma solo pippo non RB0
Ciao
Andrea
come ti ha gia spiegato Cosmix se porti la variabile pippo a 1 il pin RBx non andrà a 1 anche lui.
Stai confondendo la matematica con il linguaggio c.
Nel linguaggio c l'operatore "=" non significa "uguale a qualcosa" come in matematica , ma si chiama operatore di assegnamento.
Cioè assegna un valore ad una variabile.
riprendendo il solito esempio...
int pippo = PORTBbits.RB0; // pippo assume il valore di RB0 ma non viceversa!
pippo = 5; // pippo va 5 , ma solo pippo non RB0
Ciao
Andrea
Si prega Accedi o Crea un account a partecipare alla conversazione.
- alfa75
- Platinum Member
Riduci
Di più
- Messaggi: 527
- Ringraziamenti ricevuti 86
7 Anni 10 Mesi fa #10
da elpablito
Risposta da elpablito al topic linguaggio c
ALFA 75
Non ho mai fatto un'affermazione di tal fatta, io ho detto se la porta va a 1, in ingresso, la variabile assume automaticamente il valore della portà. Se così non è non capisco l'utilità di fare un'assegnazione con una variabile che non mi serve che mi costa memoria e forse anche cicli macchina.
Paolo
Non ho mai fatto un'affermazione di tal fatta, io ho detto se la porta va a 1, in ingresso, la variabile assume automaticamente il valore della portà. Se così non è non capisco l'utilità di fare un'assegnazione con una variabile che non mi serve che mi costa memoria e forse anche cicli macchina.
Paolo
Si prega Accedi o Crea un account a partecipare alla conversazione.
- elpablito
- Autore della discussione
- Platinum Member
Riduci
Di più
- Messaggi: 353
- Ringraziamenti ricevuti 8
Moderatori: Mauro Laurenti, StefA
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.