I'd like to emphasise Raymott's comment in post #2:
'There's usually no difference in meaning.'
I'd go further and say 'There's no difference in meaning'.
Husband is about to go back to work after lunch. Wife says "I'm not feeling well. I don't think I'll eat dinner tonight. Maybe you could pick up something for yourself on the way home."
Husband does that, comes home late, and says, "Did you eat dinner?" ie. "Did you decide to eat dinner after all?" not "Have you eaten dinner [already]?"
One could quibble over whether this is a difference in meaning, or of connotation, or of emphasis, or something else. I'm calling it a difference in meaning.