Sida 1 av 1

Förstå sig på seriell kommunikation

Postat: 21 november 2014, 19:41:16
av roband915
Jag försöker koppla in ett ekolod till en Arduino men inser att det inte är "bara" koppla in. Jag förstår mjukvara men inte hårdvara i stora ord. Jag har googlat o läst om UART TTL o TTL o allmänt seriel kommunikation men jag förstår fortfarande tyvärr inte vad som skiljer pin 0 i pin 1 som är Arduinons "riktiga" seriella kontakter mot t.ex om man använder sig av pin 8 o 9 o sen biblioteket SoftwareSerial som finns tillgängligt.
Är det så att intelligensen här inte räcker till eller går det förklara med lekmanna-termer vad som skiljer dessa pins åt?

Re: Förstå sig på seriell kommunikation

Postat: 21 november 2014, 19:49:30
av sodjan
En AVR (som är "hjärnan" i en Arduino) har en inbyggd UART/USART enhet i hårdvaran.
Denna har normalt vissa dedikerade I/O pinnar för TX och RX linjerna.

Sen kan man så klart skriva programvara som gör samma jobb som en USART
gör i hårdvara, och programvaran kan så klart köra mot valfria pinnar.

Välj det du vill och du får så klart köra rätt biblioteksrutiner därefter.
Det är mycket mer jobb för processorn att köra SoftwareSerial, om
det är ett problem eller inte i just ditt fall är omöjligt att säga.

Men vad var frågan egentligen?
När eller varför man ska använda det ena eller det andra?

Re: Förstå sig på seriell kommunikation

Postat: 21 november 2014, 19:50:32
av j.po
pin 0 och 1 går till den hårdvaru UART som finns i ArduinoUno, denna används ofta till att skicka data till din PC. Skall du ansluta någon annan enhet upptill, alltså kommunicera med 2 saker samtidigt behöver du en UART till. Den andra kan man fixa i mjukvaran.
Har du en ArduinoMega tror jag att den har 3st hårdvaru UART och då behöver man inte någon mjukvaru UART.
Hoppas det var svar på frågan.

Re: Förstå sig på seriell kommunikation

Postat: 21 november 2014, 20:35:00
av roband915
Tack för två bra svar! Bilden börjar klarna helt klart :)
sodjan: Du svarade väldigt pedagogiskt på min fråga och du ställde min följdfråga själv :) När eller varför ska man använda det ena eller andra?

Skiljer sig inte en hårdvaru-uart mot en mjukvaru-uart på något sätt? Klarar de båda lika mycket spänning t.ex?

Re: Förstå sig på seriell kommunikation

Postat: 21 november 2014, 20:47:06
av Icecap
Spänningarna de "tål" är vad µC'n tål, inget annat.

Men när man börjar bygga mer seriösa program kan en UART (hårdvara alltså) sköta om att sända och ta emot och bara ge en interrupt när den ska fyllas på eller tömmas. Detta betyder att den sköter timing, sekvens och det mesta.

En mjukvaru-UART använder µC'n hela kapacitet medan den tar emot eller sänder, du kan inte ta emot något utan att den tar all kapacitet och den kan inte ta emot något som kommer "oförutsett" - om inte man löser hela µC'n.

Så mjuvaru-UART är alltid en dålig idé och bör undvikas så långt som möjligt.

Re: Förstå sig på seriell kommunikation

Postat: 21 november 2014, 21:33:53
av j.po
UARTen har inte med spänningen på signalerna att göra, även om det är en hårdvaru UART. Vill du t.ex. använda RS-232 behöver du en krets som omvandlar +-12V till +5V/0V (TTL nivå) som CPU'n använder.