Hej hej !
Jag har börjat att kolla in I2C på min Atmega, det verkar väldigt enkelt och
trevligt för att snacka med externa moduler (tex. en accmätare).
Jag hittade dock ett par andra protokoll som är integrerade i Atmegan (Atmega32 / 128)
och jag skulle gärna vilja veta vad dom stora skillnaderna är mellan då
I2C, USART och SPI när det gäller att koda (få dom att fungera) och om
vissa är vanligare än dom andra särskilt då för en hobby-robot byggare.
Tackar så mycket på förhand.
/Ludvig
USART, SPI eller I2C ?
Personligen så tycker jag att du ska börja med att kika lite på USART. Inte minst för att du med den modulen, ganska lätt, kan få till kommunikation med en PC. Den är även som Sodjan skriver ganska lätt att ha att göra med. Har man väl ställt in inställningarna för modulen rätt så är det sedan väldigt enkelt att skicka /ta emot info från en PC.
För mig gick det i alla fall ganska smärtfritt att få igång USARTen medan jag fick bråka ganska mycket med SPI. Kanske för att det jag använde den (SPI) till var att skicka data till/från ett litet minne. Det var alltså svårt att veta om något hade gått fram eftersom man var tvungen att skicka och sedan läsa och sedan försöka verifiera läsningen på något vis för att ens veta om något gått rätt =). Lättare är det om du skickar till ett terminalprogram på en PC. Om det du skickar med µC kommer upp på skärmen så är din kod rätt, annars fel.
I2C har jag inte provat ännu men enligt det man läst i databladen så verkar det helt klart vara den mest komplicerade av de tre.
MVH
/Tottish
För mig gick det i alla fall ganska smärtfritt att få igång USARTen medan jag fick bråka ganska mycket med SPI. Kanske för att det jag använde den (SPI) till var att skicka data till/från ett litet minne. Det var alltså svårt att veta om något hade gått fram eftersom man var tvungen att skicka och sedan läsa och sedan försöka verifiera läsningen på något vis för att ens veta om något gått rätt =). Lättare är det om du skickar till ett terminalprogram på en PC. Om det du skickar med µC kommer upp på skärmen så är din kod rätt, annars fel.
I2C har jag inte provat ännu men enligt det man läst i databladen så verkar det helt klart vara den mest komplicerade av de tre.
MVH
/Tottish
Nu ska jag märka ord igen.
USART är namnet på en hårdvarumodul, det står för "Universal Synchronous and Asynchronous serial Receiver and Transmitter".
Det som benämns USART hittills i tråden ska snarare heta RS-232 med TTL-nivåer. Helt vanlig asynkron seriell överföring alltså. En modul som hanterar detta kallas UART, S:et behövs alltså inte eftersom det inte är synkront.
En USART klarar ofta av att (hjälpligt) hantera SPI, TWI och evetuellt andra synkrona seriella gränssnitt.
Det kanske låter krångligt med synkront hit och seriellt dit för nybörjare, men ta en liten djupare titta på vad det betyder, det förklarar en hel del om hur protokollen fungerar!
USART är namnet på en hårdvarumodul, det står för "Universal Synchronous and Asynchronous serial Receiver and Transmitter".
Det som benämns USART hittills i tråden ska snarare heta RS-232 med TTL-nivåer. Helt vanlig asynkron seriell överföring alltså. En modul som hanterar detta kallas UART, S:et behövs alltså inte eftersom det inte är synkront.
En USART klarar ofta av att (hjälpligt) hantera SPI, TWI och evetuellt andra synkrona seriella gränssnitt.
Det kanske låter krångligt med synkront hit och seriellt dit för nybörjare, men ta en liten djupare titta på vad det betyder, det förklarar en hel del om hur protokollen fungerar!