Ho aggiornato il core aggiuntivo per supportare i microcontrollori ATmega644P e ATmega1284P per l’IDE 1.5.4.
Scaricate il pacchetto allegato (cliccate su “Leggi il resto”), decomprimetelo e copiate la cartella /megax4 nella cartella /hardware dell’IDE 1.5.4 e poi riavviate il software. Maggiori dettagli nel file README.txt allegato.
Salve, sono ancora qui a disturbarti 🙂
dopo aver giocato con l’attiny e fatto casino coi pin, ho completato il progettino e va una meraviglia 🙂 grazie anche a te 🙂 ora sono passato alle cose “serie” e sto usando come core un 1284p_AU diciamo che sono ancora “in fase progettuale hw e sw.. e su questo ho bisogno se possibile una dritta…
vorrei usare una libreria che sfrutta i2c e/o SPI per controllare tramite un mcp32s17 un LCD grafico 128×64. e qui viene il problema….. ovvero .. la libreria funziona alla perfezione con atmega328, o il mega2056 ma se provo a compilarla con il 1284 del core inizia a mandarmi errori sulla compilazione, legati alla libreria wire e alla SPI
Arduino:1.5.5 (Windows 7), Scheda:"ATmega 644/1284, Atmega1284P @ 16MHz w/Arduino as ISP"
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp: In function 'uint8_t i2c_read()':
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp:140: error: 'Wire' was not declared in this scope
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp: In function 'void i2c_write(int)':
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp:149: error: 'Wire' was not declared in this scope
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp: In member function 'void I2C_KS0108C_GLCD::startSend()':
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp:162: error: 'SPI' was not declared in this scope
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp:165: error: 'Wire' was not declared in this scope
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp: In member function 'void I2C_KS0108C_GLCD::doSend(byte)':
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp:173: error: 'SPI' was not declared in this scope
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp: In member function 'void I2C_KS0108C_GLCD::endSend()':
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp:184: error: 'Wire' was not declared in this scope
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp: In member function 'void I2C_KS0108C_GLCD::begin(byte, byte, byte)':
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp:202: error: 'SPI' was not declared in this scope
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp:204: error: 'Wire' was not declared in this scope
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp: In member function 'byte I2C_KS0108C_GLCD::readData()':
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp:339: error: 'SPI' was not declared in this scope
C:\Users\Marco\Google Drive\arduino_sketch\libraries\i2Cspi_glcd\I2C_KS0108C_GLCD.cpp:347: error: 'Wire' was not declared in this scope
sapresti darmi qualche dritta su dove intervenire magari per usare la sua “libreria” std per SPI e I2C? ho trovato una libreria wire deticata a sanguino e + o meno riesco a farla funzionare (nel senso che spariscono gli errori in compilazione, poi che funzioni è un’altra cosa..), a patto che “correggo” tutta la libreria dell’LCD cambiando tutti i read e write con Send e Receive e … il problemone è l’ISP… non trovo nulla… a riguardo….
per intanto ti ringrazio per la pazienza.. grazie 🙂
ciao.
Marco
Non so quale libreria stai utilizzando ma molto probabilmente non è compatibile con l’Atmega1284. Il problema delle MCU non ufficialmente supportate dal core di Arduino è principalmente questo: non tutti gli autori si prendono la briga di supportare chip che non sono presenti sulle schede Arduino.
Andrebbe guardato il sorgente della lib e vedere come poter intervenire per provare ad inserire il supporto manuale. Non dovrebbe essere difficile visto che comunque sia l’SPI che l’I2C sono presenti in hardware nel 1284
ciao Leonardo, stavo provando a usare le librerie std di Arduino , la “wire.h” e “spi.h”, ma non gli piacevano…allora ho provato a trovare qualcosa sul web dedicato al 1284/644 ma non sono riuscito a trovare niente per la spi.. solo una versione della “wire”… quindi mi son dovuto arrangiare…. (nemmeno cercando library per le sanguino.. stano.. :O!)
al che ho provato arrangiandomi , e ho fatto un po il giochino del “trova le differenze” (lo so non molto tecnica la cosa <3 🙂 )……e credo di averla risolta, forse molto "ignorantemente"… o forse nel modo "corretto" non so 🙂
ho guardato fondamentalmente le "differenze" delle cartelle, ho notato che tra la cartella megax4 e quelle base dei vari arduino, c'era una differenza, la cartella "library" in cui sono le lib per le EEPROM, SPI, E I2c erano "mancanti" nella cartella megax4, per cui ho detto… prova al massimo non funziona…quindi ho copiato la cartella da :" Arduino\hardware\arduino\avr "dove risiedono per i vari "arduino" all'interno della cartella " Arduino\hardware\megax4\avr ".. provato a compilare…e errori spariti.. 🙂
ora , non posso ancora provare l'effettivo "funzionamento con l' hw" in quanto non ho ancora pronto un PCB su cui testarlo (purtroppo x me ho solo le vers SMD) ma a livello di compilazione sembrano essere ok.
ti terro' aggiornato non appena riesco a provare…con l'hw
Ti ringrazio del feedback, mi sarà utile per sistemare il pacchetto 🙂
Salve.
Ho seguito le istruzioni ma al momento di scrivere il bootloader su un ATMega 1284p PU con cristallo16MHz utilizzando un Arduino Uno as ISP, appare il seguente messaggio di errore:
Arduino: 1.5.4 (Windows NT (unknown)), Board: “ATmega 644/1284, Atmega1284P @ 16MHz w/Optiboot”
***failed;
avrdude: verification error, first mismatch at byte 0x0000
0xff != 0x3f
avrdude: verification error; content mismatch
Ho provato anche ad utilizzare anche l’IDE 1.5.6 ma ottengo lo stesso errore.
Ho anche provato a cambiare le righe
atmegax4.menu.cpu.1284_16b.bootloader.unlock_bits=0xFF
atmegax4.menu.cpu.1284_16b.bootloader.lock_bits=0xFF
con
atmegax4.menu.cpu.1284_16b.bootloader.unlock_bits=0x3F
atmegax4.menu.cpu.1284_16b.bootloader.lock_bits=0x3F
In tal caso la scrittura del bootloader viene portata a termine con successo, ma se cerco di caricare lo sketch Blink usando un convertitore usb to ttl, ottengo un nuovo messaggio di errore al termine della compilazione:
Error while uploading: missing ‘upload.params.quiet’ configuration parameter
Ho fatto la prova con l’IDE 1.5.6 e ottengo lo stesso messaggio, ma in italiano.
Come descritto nel file readme allegato al pacchetto, ho messo il filtro RC sul pin RX utilizzando un resistore 10K in serie alla linea RX ed un condensatore 100nF al gnd come da schema ma senza risolvere il problema.
Che cosa sto sbagliando?
Grazie.
Antonio
@atasanna:
ho aggiornato il package per l’IDE 1.5.6R2 correggendo anche il bug che impediva di fare l’upload via bootloader. Trovi il pacchetto aggiornato qui.