Benvenuto Ospite,
per utilizzare il Forum ed avere accesso a tutte le sezioni e poter aprire un tuo Topic, rispondere nelle varie discussioni, mandare o ricevere Messaggi Privati devi seguire pochi passaggi:


Leggi il nostro Regolamento -> PREMI QUI <-
Segui il link su come Iscriversi -> PREMI QUI <-


Ricordati di aggiornare l'Avatar usando una immagine che ti distingua nel Forum

Guida al Minimus AVR / KADE

Guide, richieste e tutto ciò che c'è da sapere sui controlli del cab
Avatar utente
Cia91

Silver Medal Bronze Medal Donatore
Cab-dipendente
Cab-dipendente
Messaggi: 747
Iscritto il: 14/04/2013, 19:42
Medaglie: 3
Città: Pavia

Re: Guida al Minimus AVR / KADE

Messaggio da Cia91 »

Stamattina ho provato a compilare il firmare manualmente.

Segnalo che prima di lanciare il make va modificato il file main.c alla riga 99:

Codice: Seleziona tutto

//flash them leds
#include "../shared/disco.c"
modificato in:

Codice: Seleziona tutto

//flash them leds
//include "../shared/disco.c"
In questo modo il file disco.c non sarà piu necessario, se non fate cosi da errore perchè il file non c'è.
ImmagineImmagineImmagineImmagine
RaspberryGaming non è piu .tk ma è sul altervista ora...
Avatar utente
Cia91

Silver Medal Bronze Medal Donatore
Cab-dipendente
Cab-dipendente
Messaggi: 747
Iscritto il: 14/04/2013, 19:42
Medaglie: 3
Città: Pavia

Re: Guida al Minimus AVR / KADE

Messaggio da Cia91 »

Chiedo aiuto agli esperti di C... Vorrei fare in modo che premendo un tasto il minimus mandi una serie di tasti. Questo perchè ho un gioco dove mi farebbe comodo scrivere in chat una certa sequenza di lettere per lanciare dei comandi utili.

Nel file main.c ho modificato la riga:

Codice: Seleziona tutto

if(!(c & 0x20)) { keyboard_keys[keycount++] = KEY_B, KEY_A; } //PIN B9
Mettendo direttamente li il comando KEY_B bypasso il file mappings.c
In questo esempio io vglio che alla pressione di quel tasto lui stampi BA, e invece continua imperterrito a stampare solo B. Ho provato con KEY_B, KEY_A; , poi con KEY_B; KEY_A;, ma non funziona.

Ho provato a disattivare anche il debounce commentando la riga _delay_ms(2); ma niente.

Ho notato che il software inserisce il mio "tasto" nella variabile keyboard_keys ,e poi lancia la funzione usb_keyboard_send(); che riporto:

Codice: Seleziona tutto

// send the contents of keyboard_keys and keyboard_modifier_keys
int8_t usb_keyboard_send(void)
{
  uint8_t i, intr_state, timeout;

  if(!usb_configuration) return -1;
  intr_state = SREG;
  cli();
  UENUM = KEYBOARD_ENDPOINT;
  timeout = UDFNUML + 50;
  while(1) {
    // are we ready to transmit?
    if(UEINTX & (1<<RWAL)) break;
    SREG = intr_state;
    // has the USB gone offline?
    if(!usb_configuration) return -1;
    // have we waited too long?
    if(UDFNUML == timeout) return -1;
    // get ready to try checking again
    intr_state = SREG;
    cli();
    UENUM = KEYBOARD_ENDPOINT;
  }
  UEDATX = keyboard_modifier_keys;
  UEDATX = 0;
  for(i = 0; i < sizeof(keyboard_keys); i++) {
    UEDATX = keyboard_keys[i];
  }
  UEINTX = 0x3A;
  keyboard_idle_count = 0;
  SREG = intr_state;
  return 0;
}
Ecco questa funzione non riesco molto a capirla, perchè a questo punto penso potrei modificare direttamente questa per fargli mandare la sequenza che voglio, ma non mi raccapacito di quale sia il comando che effettivamente "invia" al pc la roba.
ImmagineImmagineImmagineImmagine
RaspberryGaming non è piu .tk ma è sul altervista ora...
Avatar utente
motoschifo

Gold Medal Donatore
Progetto Arcade Database
Progetto Arcade Database
Messaggi: 3308
Iscritto il: 12/07/2013, 20:29
Medaglie: 2
Città: Parma
Località: Parma
Grazie Inviati: 34 volte
Grazie Ricevuti: 40 volte
Contatta:

Re: Guida al Minimus AVR / KADE

Messaggio da motoschifo »

Cia91 ha scritto:Nel file main.c ho modificato la riga:

Codice: Seleziona tutto

if(!(c & 0x20)) { keyboard_keys[keycount++] = KEY_B, KEY_A; } //PIN B9
Cerco di aiutarti ma vado un po' di fretta quindi spero di non scrivere cavolate... poi in serata rileggo tutto il thread, eventualmente puoi inviarmi i file in mp se sei comodo e ci metti un minuto.

Se il tuo intento è aggiungere un tasto nella coda (array keyboard_keys), allora ti basta mettere le due istruzioni una dopo l'altra:

Codice: Seleziona tutto

if(!(c & 0x20)) { keyboard_keys[keycount++] = KEY_B; keyboard_keys[keycount++] = KEY_A; } //PIN B9
L'array contiene quindi due valori anzichè uno e quindi verrà processato successivamente dalla funzione usb_keyboard_send (sempre che la dimensione dell'array lo consenta, non so cosa c'è prima di quell'istruzione).
Non so se così funziona oppure bisogna mettere a corredo altri codici di controllo, dipende tutto da cosa combina poi con UEDATX.
Motoschifo
CAB ›MameOriz ›MameVert ›PCB ›NeoGeo ›TopDrive ›Tekken3 Wishlist ›PacMan ›Arkanoid
Flipper ›HighSpeed Wishlist ›MedievalMadness ›MonsterBash ›HighSpeed2 WebArcadeDatabase
Avatar utente
Cia91

Silver Medal Bronze Medal Donatore
Cab-dipendente
Cab-dipendente
Messaggi: 747
Iscritto il: 14/04/2013, 19:42
Medaglie: 3
Città: Pavia

Re: Guida al Minimus AVR / KADE

Messaggio da Cia91 »

Grande, funziona!! <-thumbup->
ImmagineImmagineImmagineImmagine
RaspberryGaming non è piu .tk ma è sul altervista ora...
Rispondi

Torna a “Controlli (joystick, pulsanti, trackball, spinner, volanti, ecc...)”