Ryhmä
Jukka Tamminen
Tomi Koponen
Toni Niittyjoki
Joona Kujala
Tehtävää
1. Hall anturin luku spi liitännän kautta ja kirjoitus can väylään J.T.
- komponenttiluettelo
- tehdään omassa elektroniikkalabrassa Matti Korhonen ???
- Köykkä toimittaa kaasukahvan softan
2. CAN-ohjattu kontaktori
3. CAN-ohjattu shuntti
4. Pienoismalli purjeveneestä, langaton ohjaus TK toimittaa palikat langattomaan testaukseen
SCP-1000 anturi (harjoiteltu Hall anturia varten)
AVR-DVK90CAN1 kehitysalustalla testattu VTI:n SCP1000-paineanturin lukua SPI-väylän kautta. Anturin data (paine,lämpötila) siirretty CAN-viesteihin väylälle.
Testin pohjana on käytetty VTI:n ATMEGA16L prosessorille suunnattua vapaata esimerkki c-koodia. Koodista käytettiin lähinnä oisioita SCP1000 anturin initialisointiin ja asetuksiin. Anturin DRDY-pinniä (data valmista luettavaksi) ei ole fyysisesti kytketty, vaan sen tieto luetaan suoraa anturin rekisteristä. CAN-viestit muodostetaan ATMEL:n esimerkistä opitulla tavalla.
Kontaktori
Kontaktoria varten on kehitetty ohjelmaa, joka lukee can-väylää ja tottelee tietynlaisia can-viestejä. Viestit tunnistetaan tietyn datatavun sisällön ja viestin id:n perusteella. Can viestillä voidaan laittaa haluttu lähtö päälle vapaasta portista tai vaihtoehtoisesti sulkea se.
Tehtävää:
- Kontaktorin logiikan vaatimaa ajastinta tutkitaan parhaillaan.
- AVR:n umpeen kolvatut lähdöt?!
- Vahvistus kontaktoria varten
Sarjaliikenne
Sarjaliikennettä on testattu Atmelin kirjastojen avulla. Alla oleva esimerkkikoodi tulostaa sarjaväylään käynnistetyn ajastimen lukemaa
Code Block |
---|
#define XTAL 3686400L #define TICKSPERMS (XTAL / 1000 / 5 - 1) #include <avr/io.h> #include "led_drv.h" #include "timer8_drv.h" #include "uart_lib.h" #include "uart_drv.h" #include "timer16_drv.h" void wait_ms(uint16_t ms) { uint16_t a, b; for (a = ms; a > 0; a--) for (b = TICKSPERMS; b > 0; b--) asm("nop"); } int main(void) { TCCR1B |= (1 << CS10); //16bit Timerin setup U16 temp=0; Uart_select(UART_0); //Uart 0 valittu uart_init(CONF_8BIT_NOPAR_1STOP,115200); //Uartin initialisointi kirjaston valmiilla funktiolla (8bit data, ei parityä, 1stoppi bitti, 115200 nopeus) for(;;) { temp=TCNT1; //Rekisteri, josta loytyy kellon tikitys uart_mini_printf("\r%u\n",temp); //Tulostetaan vaylalle } } |