Pages: 1 ... 97 98 [99] 100 101 ... 103   Go Down
Author Topic: [OT] PIC, 8051, MCU e CPU varie  (Read 67415 times)
0 Members and 3 Guests are viewing this topic.
0
Offline Offline
Shannon Member
****
Karma: 129
Posts: 10437
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non è GCC, è il programma per usare l'STlink, diciamo il jtag della ST, cosa che non è indolore neanche per la tua Keil professional! "By default Keil is naturally setup for ULink rather than ST-Link so that has to be changed" e "ST-Link debugger driver of Keil IDE does not install on Win8" smiley-grin smiley-grin

fonti:
http://oddwires.blogspot.it/2013/05/getting-started-with-stm32f4-discovery.html
http://www.keil.com/forum/22550/
Logged

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

Offline Offline
Edison Member
*
Karma: 40
Posts: 1954
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sono un felice possessore di un J-LINK, che per gli STM32 ho configurato in... 1 minuto? No, forse 2!

Se poi ti dico con cosa debuggo e flassho, mi mandi a quel paese! smiley-grin

Anzi, te lo dico: uso una metà di piastrina di una Board Infineon con una sorta di J-LINK lite che nemmeno va in JTAG ma in SWD, a due fili...

Questa è la Board,  ho spezzato la metà di sinistra, dove c'è il programmatore (simulato con un XMC4200) ed uso 4 fili di quello: VCC, GND, SPD, SWCLOCK!  smiley-lol



Ah! Configurata nel Keil in mezzo minuto, no... forse 50 sec! smiley-grin
Logged

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

attento, la tua jlink è una scheda esterna, la stlink è on-board e ti colleghi direttamente via USB, non so se è bypassabile.

un pò come per la DUE, hai una miniUSB per programmare e una USER.

Non ho mai usato programmatori esterni, quindi non ti saprei dire sul loro supporto.
Logged

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

Offline Offline
Edison Member
*
Karma: 40
Posts: 1954
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sono la stessa cosa:

Esterno: montato dentro una scatola

Interno: saldato sulla DemoBoard

Non cambia na sega, alla MCU arrivano sempre gli stessi fili sugli stessi piedini (JTAG o SWD che siano)

A volte voi softwaristici vi sorprendete della babbeaggine di noi Hardweristi, e noi  Hardweristi talvolta ci stupiamo della Babbeaggine di voi Softwaristi! smiley-lol

La mia J-LINK (quella seria) è questa:



Che puoi programmare da riga di comando con J-LINK Commander:



O ambiente grafico  J-Flash:

Logged

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

forse ho fatto casino io, si tratta di stlink Versione 2, poi non so se la stlink versione 1 sia compatibile al 100% come protocollo con la j-link..
anzi a quento vedo ogni scatolina parla (lato PC) a modo suo, è lato micro che seguino lo standard
Logged

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

Offline Offline
Edison Member
*
Karma: 40
Posts: 1954
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si, lato MCU è uno standard, ma anche versus PC si tratta di driver USB che dialogano con un software in maniera abbastanza simile, anzi, spesso il driver è un semplice emulatore di COMx.
Logged

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

Domandina PIC:
Questo codice su poverissimo PIC16F505 con cristallo esterno da 4Mhz:
Code:
/* Main Program */
#ifndef _XTAL_FREQ
#define _XTAL_FREQ 4000000 //4Mhz FRC internal osc
#define __delay_us(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000000.0)))
#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))
#endif

void main(void)
{ ConfigureOscillator();
  InitApp();
  TRISB=0b111111;   // all input
  TRISC=0b111000;   // 0,1,2 as output 3,4,5 as input
  while(1)
  { if(PORTBbits.RB2==0)
    { PORTCbits.RC0=0;
      PORTCbits.RC1=0;
      PORTCbits.RC2=0;
    }
    else
    {
        PORTCbits.RC0=1;    // verde
        PORTCbits.RC1=0;    
        PORTCbits.RC2=0;
        __delay_ms(1000);
        PORTCbits.RC0=0;
        PORTCbits.RC1=1;    // rosso
        PORTCbits.RC2=0;
        __delay_ms(1000);
        PORTCbits.RC0=0;
        PORTCbits.RC1=0;
        PORTCbits.RC2=1;    // blu
        __delay_ms(1000);
    }
  }      
}
Se ho un interruttore acceso, ogni secondo dovrebbe accendere un led tra 3 led.
Però, acceso il terzo, passa al 1° a occhio in meno di un secondo.
Ho scritto qualche ca...volata ?   smiley-grin
« Last Edit: June 04, 2014, 02:41:02 pm by nid69ita » Logged

my name is IGOR, not AIGOR

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

sembra ok, mi sa che bisgna analizzare l'assembly :/
Logged

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

0
Offline Offline
Faraday Member
**
Karma: 45
Posts: 5783
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il codice è semplicissimo, non è che le altre funzioni che non hai postato mettono mano ai registri ?
Altra idea che mi viene, vedo che usi le funzioni delay standard della LibC, hai tenuto conto dei limiti ? Se ti leggi i sorgenti sono specificati nei commenti, sia per la ms che per la us

Logged

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

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

@Testato, no, proverò a controllare.
Le due funzioni ConfigureOscillator() e InitApp() sono quelle standard che mette MPLABX.
O pensato però che se la _delay() ha dei limiti dovrebbe averli in tutti e tre i punti in cui li ho inseriti !?!
Cioè se anche non è preciso 1 sec ma 0,8 sec dovrebbe esserlo in tutti e tre i punti.

P.S. ma le sigle dei PIC hanno qualche regola?   Ad esmpio ci sono PIC16  con poche features tipo questo 16F505 (baseline) mentre un 16F877 (midrange) ha molte cose in più. Non ho capito le numerazioni. (O sono a caxxo ?  smiley-mr-green  )
« Last Edit: June 05, 2014, 02:53:58 am by nid69ita » Logged

my name is IGOR, not AIGOR

0
Offline Offline
Faraday Member
**
Karma: 45
Posts: 5783
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

come dice lesto anche per me il programma e' scritto bene, ma visto che non funziona facevo ipotesi.
Non mi riferisco a limiti di precisione (che pure ci sono) ma anche ad eventuali overflow che hanno le due funzioni standard ms-us, a memoria mi sembra siano bassi (sui 600 ms ?). Resta il fatto che cmq gli overflow eventuali si presenterebbero anche sui pimi due led.
Ripeto sono solo primi approcci approfonditivi
Sulla sigla non so aiutarti perche' non uso PIC, solo mamma Atmel  smiley
Logged

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

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

I PIC sono divisi in famiglie, come gli Atmel. I PIC12 sono diversi dai PIC16 che differiscono dai PIC18 ecc.. Sul sito Microchip vedi le caratteristiche comuni. Comunque la famiglia PIC16 mi disse tempo fa AStrobeed che era obsoleta, quindi se puoi sostituiscila con i modelli PIC18.

Detto questo, ocio con l'oscillatore interno dei PIC, ha un casino di cose a cui prestare attenzione per il setup, anch'io ci sbattei la testa all'inizio. Perché poi c'è da considerare il prescaler che usi a seconda della fonte di clock usata.
Per quanto riguarda il delay, non usare quella integrata di funzione, che mi pare sia una semplice funzione basata sull'esecuzione di una istruzione predefinita. Io mi sono rifatto la millis in stile Arduino, per evitare problemi. Nel thread ci dovrebbero essere tra le prime pagine dei codici che misi.
Logged


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

prova a copilare con -00 o con -O1, magari il compilatore erroneamente ottimizza via il delay
Logged

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

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

Meglio non usare proprio la _delay integrata nel compilatore. Non è affidabile.
Logged


0
Offline Offline
Faraday Member
**
Karma: 45
Posts: 5783
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma parlate della _delay_ms e della _delay_us ?
funzioni cosi' importanti universalmente usate in tutti i programmi C hanno problemi ?
Non mi sono mai messo a vedere con un oscilloscopio se sono precise, ma le uso normalmente, si deve solo gestire correttamente la F_CPU perche' su quella si basa, ed essendoci una F_CPU di default nella LibC che puo' essere diversa dalla frequenza del quarzo usato, si possono sbagliare i tempi.

La millis e' altro discorso come ben sai, non e' bloccante, quindi a che pro metterla in campo se di delay bloccante si sta parlando ?
Logged

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

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