AVR and Raspberry
AVR/ATmega
8-bitars-processorer från Microchip (tidigare Atmel)
- ATmega16 (används i datorteknik)
- ATmega1284P (används i robotkurserna)
- ATmega328P (används i Arduino)
- ATmega8
- ATmega168
- Atmel Studio ver 7
AVR-relativ information / utrustning
- AVR Beginners
- JTAG ICE 3 för AVR
- På sidan Handledningar länkas till en video om hur man kopplar upp jtag.
- Tips/inställningar för Microchip Studio
Observera: ATmegorna har interna klockgeneratorer, så att de kan köra
utan extern klocka. Den interna är dock inte så stabila, och kan variera
stort i frekvens. Vid t.ex. UART-kommunikation, så är detta ett problem.
Se därför till att koppla in en EXO3 :a
(se Kringutrustning ), och sätta
lämpliga säkringar.
OBS. De nya virkorten från 2023 har redan en EXO3 ansluten.
Anslut reset på AVR-processorn
De AVR-processorer vi använder har en extern reset-ingång. Det är viktigt att inte lämna denna reset-ingång oansluten, utan koppla in den till något som ger en väldefinierad reset-signal, t ex en tryckknapp som ger hög eller låg signal. Reset-ingången på processorn är nämligen inblandad under själva programmeringen av processorn. Om reset-ingången är oansluten kan vissa delar av processorn felaktigt programmeras med något som sedan inte går att återställa. Alltså, anslut alltid reset-ingången.
C-programmering för AVR
C-kompilatorn för AVR är inbyggd i Atmel Studio. C-kompilatorn baseras på GCC, men någon egentlig officiell dokumentation över C för just AVR finns inte. Däremot finns ganska mycket information på internet om t ex AVR Libc, exempelprojekt med C-programmering och diverse tutorials med just C för AVR. Se länkar nedan.
- AVR Libc
- Avbrottshantering
- AVR-GCC Datatyper, registeranvändning, anropsstruktur m m
- C-trix för AVR
- GNU development environment for AVR
- AVR-GCC Tutorial (auf Deutsch!)
- Effektiv C-kod för AVR , handledning från Atmel
Assemblerprogrammering för AVR
Några nyttiga länkar för den som programmerar i assembler.
Den som vill skriva effektiv C-kod kan också ha nytta av att veta vilka
instruktioner kompilatorn har till sitt förfogande. T.ex.
PORTB |= (1<<PINB3);
blir till sbi PORTB, PINB3
som går på en
klockcykel, medan PORTB |= (1<<x);
kommer generera en loop för att
räkna ut 1<<x
.
- ATmega instruktionsuppsättning . Alla OP-koder (html)
- AVR Assembler Tutorial
- AVR Asembler User Guide
- AVR Conditional Assembly and Portability Macros
- Strukturerad Assembler - personlig reflektion om hur man överlever större assemblerprojekt
Raspberry Pi
- Kom igång med Raspberry Pi
- Konfigurera trådat nätverk via switch
- Konfigurera Eduroam-nätverk
- Raspberry Pi 3 som access-punkt
- Enable SSH
- Raspberry Pi, SPI and I2C Tutorial
- Clock-stretching vid I2C
- I2C Broadcom bug workaround
- Raspberry Pi Pinout
3.3V vs 5V logik
Raspberry Pi använder 3.3V logik på GPIO-porten. AVR:erna använder 5V TTL-nivå. Kopplar man ihop dessa utan nivåskiftare är det stor risk att något går sönder. På sidan Kommunikation finns info om hur Raspberry Pi och AVR:er kan kommunicera.