You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

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

#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
	}
}
  • No labels
You must log in to comment.