mal ne allgemeinfrage zu serin/serout. ich denke es handelt sich um software-usart an einem beliebigen i/o-pin. bzw an 2en. wo ist der nachteil gegenüber dem festen hardware-usart? weil der blockiert mir nämlich am atmega8 den port d.....
Druckbare Version
mal ne allgemeinfrage zu serin/serout. ich denke es handelt sich um software-usart an einem beliebigen i/o-pin. bzw an 2en. wo ist der nachteil gegenüber dem festen hardware-usart? weil der blockiert mir nämlich am atmega8 den port d.....
software-usart kann man an einem pin betreiben, und das an einem beliebigen.
und sonst, weiß noch nicht.... muß ich erst rausfinden. drum mach ich es selber.
Hallo Goblin,
Software UART benötigt einen grösseren Programmieraufwand. Beim Empfang wird evtl. das ganze System langsamer.
HardwareUART:
Wenn alle angaben in den Registern der USART gemacht sind, muss man beim Senden nur noch das Byte in den Ausgabepuffer schreiben, und warten bis es draussen ist.
Beim Empfang braucht man nur ein bestimmtes Bit eines Registers abfragen, ob ein neues Byte empfangen wurde, oder den IRQ verwenden.
Software:
Vorteil:
man kann jedes Pin nehmen,
Nachteil:
man muss das timing selber bauen,
keine Interrupts wenn ein Byte fertig übertragen ist.
Beim versenden ist das noch etwas einfacher, einen Timer anwerfen der der gewünschten BPS entspricht, dann kann man die Bits incl. start/stop und evtl. Paritybit über das gewünschte Pin rausschieben.
Beim Empfang muss man aktiv am Pin lauschen, damit man kein Bit übersieht. (Beim früher im PC verwendeten 16450 wurde das mit dem 16fachen Takt der Übertragung gescannt.)
Man könnte da aber auch einen externen IRQ verwenden, dann meldet dieser, wenn Daten ankommen.
Also meine Meinung, wenn viel zu Empfangen ist, sollte besser die Hardware benutzt werden,
Versenden ist nicht so schlimm, blockiert evtl. einen Timer.