Hallo!
Sorry für die späte Antwort zur Funktionsweise meiner Funktion. Wie mein
Vorposter schon richtig erkannt hat, die Funktion kümmert sich um alles
RS232 relevante (also kein: if ((UCSR0A &(1<<RXC0)) notwendig!).
Damit die Funktion uart_getline() ein Resultat liefert, muss sie das
Zeichen 0x0D empfangen (Carriage Return). Das heißt, im Terminal musst
du auf jeden Fall die Enter-Taste drücken, sonst passiert gar nichts.
Außerdem hast du nicht erwähnt, ob du am PC überhaupt schon etwas
empfangen kannst vom uC? Mach nach der UART initialisierung mal ein
"uart_putline("Es funktioniert!!");" und check ob das klappt. Wenn
nicht, dann liegt das Problem in der UART Initialisierung.
Hast dir die Kommentare durchgelesen am Anfang des rs322.h Files?
(1) Vor dem Compilieren, Optimization auf -Os stellen!
(2) Unbedingt den PROZESSORTAKT definieren (im Hauptprogramm)
(3) Die BAUDRATE wird gleich unterhalb hier festgelegt
(4) Bevor die serielle Schnittstelle verwendet werden kann, muss die
Funktion "setup_uart()" aufgerufen werden. Es wird in diesem Fall eine
Verbindung mit den Parametern 8-N-1 erstellt. Außerdem wird KEIN
Interrupt, weder für RX oder TX eingerichtet.
Lass uns wissen ob es klappt.