Programmare ArduinoMega con Atmel Studio 7.0

Salve a tutti, da qualche settimana sto tentando di far comunicare dei sensori di spettro (OPT3002,TCS3471 ed altri..) con arduino attraverso il bus i2c.
Per motivi professionali sto però programmando, o almeno cercando di programmare, ArduinoMega non con l'IDE di Arduino ma con quello della Atmel (precisamente il 7.0).
Per fare ciò ho trovato diversi tutorial che spiegano tutti come creare un boothloader nonche un external tool in Atmel Studio attraverso il quale è possibile caricare il programma direttamente da Atmel Studio.
Dopo vari tentativi però non sono riuscito a far funzionare il tutto.
Questo è ciò che ho inserito nella sezione Command:

C:\Users\Giovanni\Desktop\ARDUINO\hardware\tools\avr/bin/avrdude.exe

E questo nella sezione Arguments:

-C"C:\Users\Giovanni\Desktop\ARDUINO\hardware\tools\avr/etc/avrdude.conf" -v -patmega2560 -cwiring -PCOM4 -b115200 -D -Uflash:w:"$(ProjectDir)Debug$(TargetName).hex":i

E il debugger sembra anche funzionare :

avrdude.exe: Version 6.3-20171130
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch

System wide configuration file is "C:\Users\Giovanni\Desktop\ARDUINO\hardware\tools\avr/etc/avrdude.conf"

Using Port : COM4
Using Programmer : wiring
Overriding Baud Rate : 115200
AVR Part : ATmega2560
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PA0
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack


eeprom 65 10 8 0 no 4096 8 0 9000 9000 0x00 0x00
flash 65 10 256 0 yes 262144 256 1024 4500 4500 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

Programmer Type : Wiring
Description : Wiring
Programmer Model: AVRISP
Hardware Version: 15
Firmware Version Master : 2.10
Vtarget : 0.0 V
SCK period : 0.1 us

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude.exe: Device signature = 0x1e9801 (probably m2560)
avrdude.exe: safemode: lfuse reads as FF
avrdude.exe: safemode: hfuse reads as D8
avrdude.exe: safemode: efuse reads as FF
avrdude.exe: reading input file "C:\Users\Giovanni\Desktop\Programmi Atmel\TUTORIAL\Debug\TUTORIAL.hex"
avrdude.exe: writing flash (286 bytes):

Writing | ################################################## | 100% 0.08s

avrdude.exe: 286 bytes of flash written
avrdude.exe: verifying flash memory against C:\Users\Giovanni\Desktop\Programmi Atmel\TUTORIAL\Debug\TUTORIAL.hex:
avrdude.exe: load data flash data from input file C:\Users\Giovanni\Desktop\Programmi Atmel\TUTORIAL\Debug\TUTORIAL.hex:
avrdude.exe: input file C:\Users\Giovanni\Desktop\Programmi Atmel\TUTORIAL\Debug\TUTORIAL.hex contains 286 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 0.06s

avrdude.exe: verifying ...
avrdude.exe: 286 bytes of flash verified

avrdude.exe: safemode: lfuse reads as FF
avrdude.exe: safemode: hfuse reads as D8
avrdude.exe: safemode: efuse reads as FF
avrdude.exe: safemode: Fuses OK (E:FF, H:D8, L:FF)

avrdude.exe done. Thank you.

Ma alla fine non carica il programma...
Se qualcuno ha in mente qualche soluzione lo ringrazio tanto!!!

Intanto, relativamnete ad Atmel Studio ... ti consiglio di leggere QUESTO mio thread (... non inerente il tuo problema) ...

Guglielmo

Arduino_MEGA:
Ma alla fine non carica il programma...

... ti sbagli, poche righe sopra ha scritto che HA caricato e verificato il programma, qundi ... il problema NON è in Atmel Studio o nel programmatore, ma nel tuo programma (che in effetti mi sembra un po' piccolo ... 286 bytes ... ::slight_smile:).

Guglielmo

//PROGRAMMA PRINCIPALE

#include "common.h"
#include <stdio.h>


/*********************************************
  FUNZIONE   : mcu_setup
  DESCRIZIONE: Inizializzazione periferiche MCU.
  PARAMETRI  : nessuno
  RETURN CODE: nessuno
*********************************************/
void mcu_setup(void)
{
// Configurazione porte
DDRA  = 0b00000000; 
PORTA = 0b11111111;
DDRB  = 0b00000000;  
PORTB = 0b11111111;
DDRC  = 0b10000000;
PORTC = 0b01111111;
DDRD  = 0b00000000;  
PORTD = 0b11111111;
DDRE  = 0b00000000; 
PORTE = 0b11111111;
DDRF  = 0b00000000;  
PORTF = 0b11111111;
DDRG  = 0b00000000;
PORTG = 0b11111111;
DDRH  = 0b00000000;  
PORTH = 0b11111111;
DDRJ  = 0b00000000; 
PORTJ = 0b11111111;
DDRK  = 0b00000000;  
PORTK = 0b11111111;
DDRL  = 0b00000000;
PORTL = 0b11111111;

// Configurazione periferiche utilizzate

//Uart
   

// watchdog
wdt_reset();                   
wdt_disable();        //disabilita wdt

// interrupt
SEI();                //abilita interruzioni
}


/*********************************************
  FUNZIONE   : main
  DESCRIZIONE: Main loop
  PARAMETRI  : nessuno
  RETURN CODE: ignorato
*********************************************/

int main(void)
{
mcu_setup();
while(1) 
{
TGL(PORTC,7);
delayMs(100);
}
}




//LIBRERIA:

#include <avr/io.h>
#include <avr/wdt.h>
#include <avr/interrupt.h>

// Valori booleani
#define TRUE 1
#define FALSE 0

// Macro manipolazione bit
#define BIT(x) (1 << (x))
#define TST(x,y) (x & (1 << (y)))
#define SET(x,y) (x |= (1 << (y)))
#define CLR(x,y) (x &= ~(1 << (y)))
#define TGL(x,y) (x ^= (1 << (y)))

// Istruzioni assembly
#define WDR() asm volatile ("wdr")
#define NOP() asm volatile ("nop")
#define SEI() asm volatile ("sei")
#define CLI() asm volatile ("cli")

// Tipi generici
typedef unsigned char       U8 ;
typedef unsigned short      U16;
typedef unsigned long       U32;
typedef signed char         S8 ;
typedef signed short        S16;
typedef long                S32;

// Prototipi funzioni
void delayUs(U16 us);
void delayMs(U16 ms);

Se aveste bisogno dei datasheet della scheda Arduino Mega ,e del microcontrollore Atmega2560 al suo intero, chiedete pure.
Grazie mille in anticipo.