Pages: 1 ... 98 99 [100] 101 102 103   Go Down
Author Topic: [OT] PIC, 8051, MCU e CPU varie  (Read 83930 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Sr. Member
****
Karma: 3
Posts: 460
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma non è possibile/meglio includere dei cicli a vuoto realizzati in assembler in modo che il compilatore non possa ottimizzarli?
Logged

0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10474
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

la NOP() nasce apposta per non essere ottimizzata, ma se la metti in cicli noon so cosa può succedere.

e zoomx il fulcro della discussione è che no, non puoi mettere istruzioni ASM dato che nessuno assicura che non vengano ottimizzate.
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22817
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma esiste una tabella da poter consultare per sapere cosa il compilatore ottimizza e cosa no ? In base ai rispettivi livelli di ottimizzazione.
Forse consultando la documentazione del compilatore.

Quote
Perché dovrebbe ottimizzare NOP ? È talmente chiara, l utente la mette per perdere tempo, non per perdere tempo  :DD
Non viene ottimizzata la singola istruzione ma i blocchi di codice, come ti ha detto Lesto. Il problema non è "nop" in sé: se la metti nel sorgente, il compilatore la infila anche nel binario senza problemi. Se però spingi l'ottimizzazione, può essere che un compilatore troppo "intelligente", vedendo un ciclo vuoto (immagina un while con dentro una sola nop), inutile, chi ti garantisce che non venga segato via?

Quote
Io ho provato sia su arduino che su altri ide e la NOP perde il giusto tempo, l'ide arduinica usa un livello alto di ottimizzazione giusto ?
L'ottimizzazione di Arduino è per la dimensione, se attivi la compilazione verbosa, vedi che ad un certo punto compare "-Os", "s" sta per "size".
Sull'IDE 1.5.x mi pare che dal file platform.txt si possa cambiare l'ottimizzazione.
Logged


ivrea (to)
Offline Offline
Faraday Member
**
Karma: 87
Posts: 4964
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma la Teensy 3.1 con ARM32 Cortex-M4 come vi sembra?   https://www.pjrc.com/store/teensy31.html
Pinout: https://www.pjrc.com/teensy/pinout.html
Ha anche una aggiunta a IDE Arduino per programmarlo, molte librerie. Per iniziare su ARM mi pare interessante, non capisco se poi si può passare ad un IDE/compilatore diverso.
« Last Edit: June 22, 2014, 03:22:36 am by nid69ita » Logged

my name is IGOR, not AIGOR

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22817
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se volete fare una cosa buona e giusta, comprate quel che vi pare ma non usate l'IDE per programmare i micro dei vostri prodotti  smiley-wink
Usate sempre gli IDE ufficiali, e scrivete tutto il codice voi, almeno lo ottimizzate al massimo  smiley-wink
Logged


Lamezia Terme
Offline Offline
Shannon Member
****
Karma: 569
Posts: 12576
Le domande di chi vuol imparare rappresentano la sua sete di sapere
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se volete fare una cosa buona e giusta....
dal vangelo secondo matLeo smiley-grin
Logged

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

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 87
Posts: 4964
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La cosa interessante della Teensy a me pare il poter iniziare con un IDE semplice (Arduinico) come si fa con Arduino.
Poi fatta l'esperienza si potrebbe passare ad un compiler più sofisticato. Come spero per la Zero. Un IDE Arduinico per iniziare ma poi uno più esperto potrebbe passare a un IDE/Compilatore più sofisticato e/o magari ad un RTOS.
Logged

my name is IGOR, not AIGOR

0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10474
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il compiler è sempre lo stesso, alla fine dei giri, se stai sul free-open

invece quello che cambia è l'insieme di librerie. Io consiglio anche di studiarsi un rtos come ChibiOS, il fatto che il codice diventi compatibile arduino+cortex+altro val pure qualcosa!
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 87
Posts: 4964
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho comprato la ST Nucleo F401RE, visto che su ebay un tedesco la vende a prezzo (11,90) competitivo con Farnel e similari con solo 5,50 euro di spedizione.
http://www.ebay.it/itm/281374518227?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649

Domanda nuova: ho provato tre semplici sketch e va bene. Però quel che non capisco è come debuggare.
Mi spiego. Negli esempi forniti da Mbed ci sono delle printf() che se non ho capito male dovrebbero essere "dirottate" su seriale. Ora, avendo il cavetto usb collegato ma non un collegamento con connettore SWD, riesco a vedere in qualche modo questi printf() un pò come si fa su Arduino con Serial.print()  ?    Oppure è obbligatorio STLInk/V2 ?


In teoria la scheda ha già "On-board ST-LINK/V2-1 debugger/programmer with SWD connector"
Logged

my name is IGOR, not AIGOR

0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10474
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ci sono 2 vie: dire che la STDOUT è attraverto stlink, oppure usare le fprintf con descrtittore di file che punta al flusso stlink.

come fare ad inizializzare il tutto... guarda chibios, è un RTOS sviluppato tra l'altro da un italiano (molto disponibile sul forum), che permette di usare questo sistema.
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 87
Posts: 4964
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aggiornamento:
con MBED e Nucleo, bisogna solo creare un oggetto Serial, tipo questo esempio e stampare su lui.
Code:
#include "mbed.h"
//------------------------------------
// Hyperterminal configuration
// 9600 bauds, 8-bit data, no parity
//------------------------------------
 
Serial pc(SERIAL_TX, SERIAL_RX);
 
DigitalOut myled(LED1);
int main() {
  int i = 1;
  pc.printf("Hello World !\n");
  while(1) {
    wait_ms(1000);
    pc.printf("This program runs since %d seconds.\n", i++);
    myled = !myled;
  }
}

Si compila il programma online, si ottiene un file .bin che si può copiare sulla Nucleo attraverso un driver virtuale (tipo penna usb, bello, copia-incolla !!!) oppure con "STM32 ST-LINK Utility.exe"
Poi anche da Monitor Seriale Arduino sulla porta USB virtuale della Nucleo si vedono le print()

Lo strano è che, 1 alcuni esempi mbed per nucleo hanno una printf() a muzzo senza quel oggetto Serial, 2 ho aggiornato nel workspace online la libreria mbed, altrimenti col cappero che funzionava.
Logged

my name is IGOR, not AIGOR

0
Offline Offline
Faraday Member
**
Karma: 47
Posts: 5914
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Io finché non esce un compilatore offline non le considero proprio
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10474
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

quoto
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ivrea (to)
Offline Offline
Faraday Member
**
Karma: 87
Posts: 4964
miaaao ^-^
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Rettifico, per la Nucleo, ora con firmware aggiornato e librerie mbed aggiornate qualsiasi printf() va su Monitor Seriale.
Code:
include "mbed.h"

DigitalIn  myBut(USER_BUTTON);
DigitalOut myLed(LED1);  //PwmOut myLed(LED1);  
AnalogIn   myPot(A0);

int main()
{ while(1)
  { if (myBut == 0) break;  // Button is pressed exit while
    myLed = !myLed;                                                 // Toggle the LED state
    printf("Led value = %d", myLed.read());
    uint16_t valPot = myPot.read_u16();          // read pot at A0
    printf(" Pot value = %d\n", valPot);
    wait(0.2); // 200 ms
  }
  error("Loop unexpectedly terminated");
}
Logged

my name is IGOR, not AIGOR

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22817
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Io finché non esce un compilatore offline non le considero proprio
+1
Logged


Pages: 1 ... 98 99 [100] 101 102 103   Go Up
Jump to: