[RISOLTO] - Programmazione Atmega328

Progetti Arduino
Edoscardamaglia
Messaggi: 98
Iscritto il: sab 8 gen 2022, 16:01
Località: Roma

[RISOLTO] - Programmazione Atmega328

Messaggio da Edoscardamaglia »

Buongiorno, di recente ho acquistato il mini PC z80 che adesso vorrei rendere "stand-alone". Ho adocchiato l'interfaccia di Grant Searle, che si promette funzionante anche con le modifiche che Pier ha fatto sul suo progetto di mini PC. Però mi sono imbattuto nel problema di come programmare i uC, perché nella cartella con i file di programmazione che Grant ha pubblicato si dispone di un file HEX, uno ASM e alcuni INC. (foto e zip allegati).
Grazie in anticipo,
Edoardo
Allegati
Foto
Foto
Senza titolo.png (88.72 KiB) Visto 1835 volte
SourceAndHEX.zip
File
(77.96 KiB) Scaricato 117 volte
Ultima modifica di Edoscardamaglia il gio 15 feb 2024, 8:39, modificato 3 volte in totale.
Edoardo M. Scardamaglia
Avatar utente
pgv
Messaggi: 484
Iscritto il: gio 17 set 2020, 13:16
Località: Ginevra

Re: Programmazione Atmega328

Messaggio da pgv »

Giusto per essere sicuri, stiamo parlando dell'interfaccia per Monitor e Tastiera descritta qui http://searle.wales/ vero?
Se il problema e' soltanto trasferire l'HEX file (giusto) ai due processori, per esempio un ATMEGA328P (che guarda caso e' il processore dell'Arduino UNO) e un ATMEGA88, si puo' usare un altro Arduino UNO con l'aiuto di una breadboard (dato che non trovo i piedini necessari nello schema di Searle) come "ISP Programmer", per esempio come e' spiegato qui: https://docs.arduino.cc/built-in-exampl ... ArduinoISP

Se sembra complicato possiamo esaminare il procedimento passo passo. Io mi sono comprato uno "shield" per Arduino UNO tipo questo:
https://www.ebay.it/itm/401619850733?ss ... 1438.l2649
(ma non sto suggerendo di acquistare esattamente questo oggetto, e' solo per far vedere di che si tratta), che montato su un Arduino UNO opportunamente programmato permette di inserire nello zoccolone blu il processore "destinazione" e poi, o usando la IDE di Arduino o (meglio secondo me) usando avrdudess https://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/ di scaricarci file HEX a piacimento.
Edoscardamaglia
Messaggi: 98
Iscritto il: sab 8 gen 2022, 16:01
Località: Roma

Re: Programmazione Atmega328

Messaggio da Edoscardamaglia »

Sì, esatto, sto parlando di quel progetto (http://searle.x10host.com/MonitorKeyboard/index.html). Grazie, sei stato abbastanza chiaro. Ma non ho capito se devo caricare sull' uC solo il file HEX...
Aspetto risposta,
Edoardo M. Scardamaglia
Avatar utente
pgv
Messaggi: 484
Iscritto il: gio 17 set 2020, 13:16
Località: Ginevra

Re: Programmazione Atmega328

Messaggio da pgv »

Da quanto capisco, di uC ce ne vogliono due, uno per il monitor e uno per la tastiera. E difatti nell'archizio ci sono due directory piu' una "obsoleta". In poiu', ma lo fanno AVRDUDE/AVRDUDESS, occorre programmare i "fusibili". Cito:
Suitable fuse settings for the two controllers are as follows (please refer to datasheets for info)...

For the 328P interface chip:
Low: 0xFF
High: 0xD9
Extended: 0xFF

The 328P display chip must be set to rail-to-rail crystal operation, so the fuse bytes for that would be:
Low: 0xF7 (ie. CKSEL3 = 0)
High: 0xD9
Extended: 0xFF
In AVRDUDESS, a circa meta' altezza sulla destra, ci sono le finestrelle per i "fusibili": "fuses & lock bits" e poi L, H e E (LB e' il "lock").
Edoscardamaglia
Messaggi: 98
Iscritto il: sab 8 gen 2022, 16:01
Località: Roma

Re: Programmazione Atmega328

Messaggio da Edoscardamaglia »

Grazie per la risposta.
Sì, di uC ce ne vogliono due. Adesso supponiamo di voler programmare quello per la generazione del video, nel mio caso un 328p, che file devo usare per programmarlo? L'HEX? Gli ASM? Gli INC? Non ci capisco quasi niente di questo settore dell'elettronica...
Ti ringrazio per l'attenzione,
Edoardo M. Scardamaglia
Avatar utente
pgv
Messaggi: 484
Iscritto il: gio 17 set 2020, 13:16
Località: Ginevra

Re: Programmazione Atmega328

Messaggio da pgv »

Il file HEX, nel formato detto "Intel Hex", contiene il codice binario compilato del programma, ed e' quello che AVRDUDE deve leggere per programmare il microcontrollore. Per una spiegazione del formato:
https://en.wikipedia.org/wiki/Intel_HEX

In pratica, usando AVRDUDESS che e' una interfaccia grafica a AVRDUDE PER IL MICROCONTROLLORE DELLO SCHERMO:

- nel menu "Programmer (-c)" devi selezionare il programmatore di cui disponi, e subito sotto il porto a cui e' collegato;
- nel menu sotto "MCU (-p)" devi selezionare "ATMEGA328P";
- cliccando sul bottone [...] accanto alla linea sotto "Flash" devi selezionare il file SBCVideo.hex, "Write", e come "Format" il valore "Intel Hex";
- Nella sezione "Fuses & lock bits", devi scrivere accanto a "L" il valore "0xF7", accanto a "H" il valore "0xD9" e accanto a "E" il valore "0xFF";

A questo punto il bottone "Program" dovrebbe fare il mestiere, se il tuo programmatore e' collegato dove credi.

Per quanto riguarda i Flag, puoi leggere a che cosa servono cliccando sulla scritta "fuse settings" e selezionarli uno a uno cliccando sul bottone "Bit selector" - i lock bits dovrebbero essere tutti non settati e va bene cosi', nella riga di "LFUSE" devi deselezionare (mettere a zero) CKSEL3 come spiega l'autore (e cosi' arriva il valore "0xF7"), HFUSE mantiene il valore di 0xD9 ed EFUSE quello di 0xFF.

Per il microcontrollore della tastiera, il file HEX e' SBCInterface_328.hex se usi un ATMEGA328P (altrimenti c'e' la versione per ATMEGA88 e per ATMEGA168) e i "Fuses & lock bits" devono assumere i valori Low: 0xFF, High: 0xD9, Extended: 0xFF.

Da notare che il codice sorgente NON E' per la IDE di Arduino ma per Atmel Studio (versione 7 credo).
Edoscardamaglia
Messaggi: 98
Iscritto il: sab 8 gen 2022, 16:01
Località: Roma

Re: Programmazione Atmega328

Messaggio da Edoscardamaglia »

Ok! Molto bene. Perché hai specificato che i file sorgente non sono compatibili con la IDE di Arduino? Questo creerà un "problema"?
Grazie davvero.
Edoardo M. Scardamaglia
Avatar utente
pgv
Messaggi: 484
Iscritto il: gio 17 set 2020, 13:16
Località: Ginevra

Re: Programmazione Atmega328

Messaggio da pgv »

L'autore parla di Atmel Studio 7 come sistema di sviluppo. E' disponibile gratuitamente sul sito della Microchip (ovviamente conviene a chi vende microcontrollori che i potenziali clienti non scappino di fronte al costo dei sistemi di sviluppo...). E' quasi un gigabyte.

https://www.microchip.com/en-us/tools-r ... #Downloads

Confesso di non conoscerlo bene.

Nell'archivio .ZIP non trovo il codice sorgente per il micro che gestisce il video. Il file sorgente per la tastiera, se caricato nella IDE di Arduino, effettivamente compila per Arduino Nano e mi ha prodotto due file .hex su richiesta, ma il contenuto e' diverso da quello del file .hex per ATMEGA328P. Non escludo che funzioni, anzi e' probabile, ma se non funziona il debug mi sembra da incubo...

P.S.: per il Video, esiste il codice in Assembly.
Edoscardamaglia
Messaggi: 98
Iscritto il: sab 8 gen 2022, 16:01
Località: Roma

Re: Programmazione Atmega328

Messaggio da Edoscardamaglia »

Ok, bene. Giuro che sono le ultime domande.😂
Il settore EEPROM non li devo "mettere" niente, no?
Con questo assembly che hai citato che devo fare?
Perché ci sono dei file INC (video)?
Grazie davvero,
Edoardo M. Scardamaglia
Avatar utente
pgv
Messaggi: 484
Iscritto il: gio 17 set 2020, 13:16
Località: Ginevra

Re: Programmazione Atmega328

Messaggio da pgv »

I files .asm e .inc servono ad "assemblare" il programma per il micro che gestisce il video. In SBCVideo.asm c'e' una linea con la direttiva (e il commento)

Codice: Seleziona tutto

; include program specific definitions and macros
.include  "defs.inc"
che dice all'Assemblatore di includere nel codice il file Defs.inc che contiene tutte le definizioni di registri eccetera usate nel programma. Nel seguito ci sono le direttive

Codice: Seleziona tutto

.include "vidgen.inc"		; file that holds the video generation code
...
.include "ProcChr.inc"
...
.include "CGANormalFont.inc"	
.include "CGANormalFontWide.inc"
.include "CGABoldfont.inc"
.include "CGABoldFontWide.inc"
.include "BlockFont.inc"
che a prima vista sembrerebbero contenere le bitmap per i vari font.

Il file .HEX e' il risultato della compilazione (assemblaggio?) tradotto in un formato ASCII perche' un tempo (ahime', ero giovane) i file si trasferivano tramite modem telefonici rumorosi e (a parte le varie checksum alla fine di ogni riga) qualche volta si riusciva a riparare un "danno" per telefono, "Pronto? La riga 101 non e' passata, me la leggi un carattere alla volta?". Adesso siamo abituati a scaricare a velocita' paurose ma io da qualche parte il mio modem a 300 BIT per secondo ce l'ho ancora...
Rispondi