Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Chi esegue lo shift?

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Chi esegue lo shift?

Messaggioda Foto Utentedaniele1996 » 3 apr 2022, 18:52

Codice: Seleziona tutto
#define F_CPU 16000000UL
#define BAUDRATE 9600
#define UBRR(UART_BAUD) ((F_CPU/16/UART_BAUD)-1)

int main(){
   /* Set baud rate */
   UBRR0H = (unsigned char)(UBRR(BAUDRATE)>>8);
   UBRR0L = (unsigned char)UBRR(BAUDRATE);


Mi domando, lo shift lo esegue il compilatore o il programma compilato?
Avatar utente
Foto Utentedaniele1996
608 2 8 11
Sostenitore
Sostenitore
 
Messaggi: 1439
Iscritto il: 29 ago 2011, 11:29

0
voti

[2] Re: Chi esegue lo shift?

Messaggioda Foto Utenteboiler » 3 apr 2022, 19:30

Se usi gcc, lo fa lui. Non solo lo shift ma anche le divisioni.
Ma altri compiler potrebbero comportarsi diversamente.

Boiler
Avatar utente
Foto Utenteboiler
20,2k 5 7 13
G.Master EY
G.Master EY
 
Messaggi: 3974
Iscritto il: 9 nov 2011, 12:27

0
voti

[3] Re: Chi esegue lo shift?

Messaggioda Foto Utentedadduni » 3 apr 2022, 22:20

Gcc sicuramente lo fa lui, se conoscete compilatori che non lo fanno e lo fanno fare ogni volta alla CPU fatemi sapere che sono curioso
Avatar utente
Foto Utentedadduni
1.784 2 7 12
Expert EY
Expert EY
 
Messaggi: 1223
Iscritto il: 23 mag 2014, 16:26

0
voti

[4] Re: Chi esegue lo shift?

Messaggioda Foto UtenteEcoTan » 4 apr 2022, 7:53

Io non ho capito dove venga definito UBRR(BAUDRATE)
Avatar utente
Foto UtenteEcoTan
6.478 4 11 13
Expert EY
Expert EY
 
Messaggi: 4390
Iscritto il: 29 gen 2014, 8:54

0
voti

[5] Re: Chi esegue lo shift?

Messaggioda Foto Utentemicdisav » 4 apr 2022, 8:44

Ciao,
in che senso chi esegue lo shift?
Anche il compilatore è un programma, lo shift è un'operatore che agisce/necessita di 2 operandi, che a loro volta possono essere variabili.
Michele.
Avatar utente
Foto Utentemicdisav
121 5
New entry
New entry
 
Messaggi: 93
Iscritto il: 17 giu 2020, 16:40

0
voti

[6] Re: Chi esegue lo shift?

Messaggioda Foto Utentespeedyant » 4 apr 2022, 9:15

Io invece faccio una "domanda indiscreta", perché si vuole sapere chi fa lo shift?
La risposta vera sarebbe "il linguaggio del micro", ma per dare una risposta coerente sarebbe interessante il motivo della domanda.
Forse non "succede" quello che si attendeva?
Son quello delle domande strane!
Avatar utente
Foto Utentespeedyant
4.663 3 6 8
Master
Master
 
Messaggi: 3369
Iscritto il: 9 lug 2013, 18:29
Località: Torino

0
voti

[7] Re: Chi esegue lo shift?

Messaggioda Foto UtenteGabrieleb » 4 apr 2022, 14:38

La domanda mi incuriosisce .
Essendo lo shift all' interno del loop main() mi aspetterei che venga eseguito ad ogni ciclo dalla cpu, ma dalle risposte sembra di no.
Quindi nel nostro caso equivarrebbe a scrivere UBRR0H = 0x25 ;
È corretto ?
Avatar utente
Foto UtenteGabrieleb
160 1 5
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 22 ott 2009, 19:27

0
voti

[8] Re: Chi esegue lo shift?

Messaggioda Foto Utenteboiler » 4 apr 2022, 15:06

Gabrieleb ha scritto:Essendo lo shift all' interno del loop main()

main() non è necessariamente un loop. Qui non lo è, o perlomeno la parte dove viene fatto questo calcolo non lo è.

Quindi nel nostro caso equivarrebbe a scrivere UBRR0H = 0x25 ;
È corretto ?


No, da dove ricavi quel 0x25?
UBRR0H = 0

Boiler
Avatar utente
Foto Utenteboiler
20,2k 5 7 13
G.Master EY
G.Master EY
 
Messaggi: 3974
Iscritto il: 9 nov 2011, 12:27

0
voti

[9] Re: Chi esegue lo shift?

Messaggioda Foto Utenteboiler » 4 apr 2022, 15:08

boiler ha scritto:No, da dove ricavi quel 0x25?

Ah, vedo... hai dimenticato di applicare la macro UBRR.
Avatar utente
Foto Utenteboiler
20,2k 5 7 13
G.Master EY
G.Master EY
 
Messaggi: 3974
Iscritto il: 9 nov 2011, 12:27

0
voti

[10] Re: Chi esegue lo shift?

Messaggioda Foto Utentespeedyant » 4 apr 2022, 15:09

dadduni ha scritto:Gcc sicuramente lo fa lui, se conoscete compilatori che non lo fanno e lo fanno fare ogni volta alla CPU fatemi sapere che sono curioso

Una volta che si genera il file oggetto e questo viene "flashato", credo che venga fatto dal micro.

Ripeto, secondo me la domanda non era questa... ;)
Son quello delle domande strane!
Avatar utente
Foto Utentespeedyant
4.663 3 6 8
Master
Master
 
Messaggi: 3369
Iscritto il: 9 lug 2013, 18:29
Località: Torino

Prossimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti