Die UART sollte man erstmal unabhängig vom Rest prüfen. Wenn die Fuses noch unverändert sind, läuft der µC mit ca, 1 MHz internem Takt, auch wenn ein Quarz dran hängt.
Beim Festlegen der Baudrate sollte man das nicht per Case machen, denn das wird ggf. erst zur Laufzeit ausgeführt. GCC ist zwar gut mit der Optimierung, aber hier würde er wohl wenigstens ein static Inline als Hilfe brauchen um die case Anweisung weg zu optimieren. Besser geht das per #ifdef, oder halt direkt mit Ausrechenen der Teilerwerte.
Beim Schaltplan sind mir 2 Dinge aufgefallen: Die LED parallel zum Motor wird nicht unbedingt lange halten, 12 V sind zu viel als Sperrspannung. Da sollte man 2 LEDs antiparallel haben, oder eine Diode dazu. Die 1N400x sind als Freilaufdioden zu langsam - die lieber weglassen und die MOSFET internen Dioden nutzen. Die Steuerung der MOSFETs ist für PWM außerdem reichlich langsam.
Lesezeichen