Trovato il problema... la mia funzione che scriveva i comandi non metteva a LOW il segnale RS, per cui veniva sempre interpretato come dato.
Ora funziona, rimane comunque il fatto che non capisco come mai siano state fate quelle scelte, io reputo la mia routine la più corretta, o almeno la più corretta se consideriamo il datasheet.