Your understanding is already pretty good, in my opinion!
As far as meaning is concerned, “de manhã” and “pela manhã” overlap significantly. Both refer to the morning in general. But we tend to use “de manhã” more frequently, as the standard expression. On the other hand, even though we say “à tarde” and “à noite”, we don’t say “à manhã”. The only situation where I can think of using it (and still wouldn’t, because it sounds just like amanhã and would confuse everyone) is if I wanted to say something like:
O empregado é pago à manhã. (The employee is paid per morning) - Just like we may also say “Eu sou pago à hora” (I am paid per hour) or “Ele é pago ao dia” (He is paid per day)
I agree that “pela manhã” can sometimes imply that an action occurs throughout the morning, but in many situations, the intention is not to say that the action lasted all that time, but that it might have happened at any point within that period, even if it was short-lived. That’s what makes it so similar to “de manhã”. When we want to make it very clear that the action/event took all morning, we can say “pela manhã fora”, “toda a manhã”, etc.
Eu tenho muita energia de manhã. (I have a lot of energy in the morning)
Ela acordou de manhã. (She woke up in the morning)
Estava muito frio de manhã. (It was very cold in the morning)
Nós falámos pela manhã. (We spoke in the morning)
Eu trabalhei pela manhã fora. (I worked all morning)
Vocês dormem toda a manhã. (You sleep all morning)
“Da manhã” and “na manhã” are more specific, yes. “Da manhã” is like saying that something belongs to the morning or is contained in the morning. Like you said, whenever morning is used as an adjective in English, “da manhã” is usually the right choice in Portuguese.
Vou fazer a minha pausa da manhã. (I’m going to take my morning break)
A luz da manhã é linda. (The morning light is beautiful)
São seis da manhã! (It’s six in the morning!) - “Da manhã” is what you should use when telling time.
“Na manhã” refers to a specific morning, yes, but you only use it when you want to highlight the time period over the day of the week or any other identifying element in the sentence:
Houve um acidente na manhã de sábado. (There was an accident on the morning of Saturday.)
You could just as easily say “Houve um acidente no sábado de/pela manhã”. Now you’re putting more emphasis on the day itself, so you revert back to “de manhã” or “pela manhã” afterwards (we avoid repeated “no/na(s)” - i.e., “…no sábado na manhã”)
Eles vão casar na primeira manhã do ano. (They will get married on the first morning of the year)
O meu voo parte na manhã de domingo. (My flight departs on the morning of Sunday)
I’d like to point only one thing to what Joseph answered:
“Pela manhã” is frequently used in Portuguese of Brazil.
In Portugal we usually don’t use that expression (although it isn’t wrong) we prefer the expression “De manhã”.
For the others parts of the day:
De/à noite - it’s possible to use one or the other option without changing the meaning of the sentence.