Однородные ряды и уровни связи
Запятая между однородными членами зависит от способа их соединения.
Без союзов, перед противопоставительными а, но, да в значении но и между членами с повторяющимися соединительными или разделительными союзами обычно ставятся запятые. Одиночный и, или, либо, да в значении и запятой между двумя членами не требует. При попарном соединении запятая разделяет пары, а не элементы внутри каждой пары. Не считай все союзы и повторением автоматически: они могут соединять сказуемые, дополнения и части сложного предложения на разных уровнях. Устойчивые сочетания вроде ни рыба ни мясо проверяют отдельно, а не разрушают запятыми по внешней схеме.
«Мы читали и обсуждали письма и дневники»: первое и связывает сказуемые, второе — дополнения. «Письма и дневники, карты и фотографии» — две пары однородных членов.