Sida 1 av 2

USART ATMega32 and Linux

Postat: 4 november 2005, 14:07:06
av simon78
Är det någon som har lyckats få en Atmega skicka data till en linuxdator via USART? Hur gick ni tillväga? Jag är speciellt intresserad av att veta hur man (helst via terminalen) läser av serieporten tecken för tecken.

Postat: 4 november 2005, 14:46:16
av karlstedt
Jag har gjort det. Det var en Red hat dist. Men jag använde mig att ett program som heter slsnif och körde i terminalen.

slsnif

Testa med slsnif, och fråga mer specifikt om du inte får till det.

Postat: 4 november 2005, 16:18:30
av speakman
Kan du utveckla din fråga lite?
Att "läsa av" serieporten i Linux är inga problem. I consolen: cat /dev/ttyS0 för första serieporten.
I ett program är det bara att läsa av /dev/ttyS0 som vilken fil som helst.
Men jag antar att jag inte förstått frågan riktigt?

Mvh
speakman

Postat: 4 november 2005, 16:25:41
av simon78
Jag fick för mig att cat inte "blockade" utan bara läste av en gång. Jag vill att det ska ticka upp i terminalen allt eftersom data skickas. har inte gjort något serverside program till detta än, men det blir väl något tillslut.

Postat: 4 november 2005, 16:33:54
av speakman
cat is "the shit"... ;)

Mvh
speakman

Postat: 4 november 2005, 16:37:46
av simon78
Brukar annars tycka att tail -f is the shit. Hur kommer det sig att inte cat bara läser färdigt i ttys0 och sen slutar som det gör med en vanlig fil?

Postat: 4 november 2005, 17:32:29
av frejo
jag har använt minicom för att snacka med en avr i linux, fast det går väl med vilket terminalprogram som helst eller cat som nämndes tidigare.

Postat: 4 november 2005, 18:39:17
av vfr
simon78 skrev:Hur kommer det sig att inte cat bara läser färdigt i ttys0 och sen slutar som det gör med en vanlig fil?
Ett device är inte riktigt som en vanlig fil även om dom anropas som sådana. Ett tty-device har en massa extra konfigureringsparametrar som inte finns för vanliga filer. T.ex hur lång timeout som skall finnas vid läsning. Om inte t.ex "cat" gör någon särskild inställning för just ett tty-device, så blir det defaultinställningen som gäller. Denna kan ju mycket väl vara uppsatt till oändlig timeout (blocking mode).

Postat: 6 november 2005, 21:02:48
av simon78
Jag får inte ordning på det. Någon som har någon beskrivning eller tutorial, om hur man kopplar?

Postat: 6 november 2005, 21:55:11
av speakman
Vad får du ingen ordning på? Är det UART:en i AVR:en, eller på Linux-sidan?

Mvh
speakman

Postat: 6 november 2005, 22:12:21
av simon78
Jag lyckas lyssna på serieporten och har kollat att den tar emot data mha en seriell mus. Det är hur jag ska hooka upp avr:en och max232:an som jag inte är säker på. Datordelen funkar.

Postat: 6 november 2005, 22:37:33
av cykze
Här har du en ritning på hur man kan koppla:
http://chaokhun.kmitl.ac.th/~kswichit/MAX232/MAX232.htm

edit: kul att du fick det att fungera ändå. :)

Postat: 6 november 2005, 22:37:47
av simon78
Det funkar! Det Funkar! Det funkar! Det Funkar! Det funkar! Det Funkar! Det funkar! Det Funkar! Det funkar! Det Funkar! Det funkar! Det Funkar! Det funkar! Det Funkar! Det funkar! Det Funkar! Det funkar! Det Funkar! Det funkar! Det Funkar!

Tror det var att jag förväxlat RX/DX

Postat: 7 november 2005, 11:34:19
av simon78
Jo... men rätt klantigt fel ändå :)

Hur gör man om man vill skicka data till porten då? Jag försökte med

Kod: Markera allt

 echo "test" >> /dev/ttyS0
i ett annat terminalfönster, utan resultat.
Är det "dd" som gäller då?

Postat: 7 november 2005, 12:35:06
av vfr
Kolla så att handskakningspinnarna på serieporten ligger i rätt läge annars kan det blockera sändningen.

CTS, DSR, DCD skall vara aktiva, d.v.s +12V (eller iallafall minst +3V).

Ofta fungerar det med en enkel nollmodemskoppling om bara sändaren sätter utgående handskak korrekt.

Nollmodem (9-pin DSUB):

7-8 byglas -> RTS styr CTS
1-4-6 byglas -> DTR styr DSR & DCD

RI (pin 9) brukar inte spela ngn roll.