Sida 2 av 2

Re: Atmega at90usb

Postat: 30 november 2011, 10:30:15
av sodjan
> När jag kollade på skåpet...

Någon speciell anledning till att du inte har gjort det innan ?

> Vad jag förstår från manual,

Och vi har ju inte tillgång till manualen, bara din tolkning av den.
Det är bättre att länka till manualen så får vi göra våran egen tolkning.

Re: Atmega at90usb

Postat: 30 november 2011, 10:40:16
av snigelen
snigelen skrev:Du vill väl mäta hur länge pulsen är låg? Vänta i så fall tills den blir låg, börja därefter tidtagningen och mät tiden tills pinnen blir hög igen.
Det missuppfattade jag visst, jag ser nu i figuren i din länk att det är tiden från triggpuls tills svarspulsen kommer som skall mätas.

Re: Atmega at90usb

Postat: 30 november 2011, 10:42:47
av gripner
Min första post innehåller länk till websida där jag köpt enheten. En kort beskrivning hur den fungerar, länk till likvärdig produkt.

Om någon vill ta på sig jobbet kan jag tillägga att det kommer ingå läsning av ADC, USB CDC och denna funktionalitet.
Koden för ADC samt USB CDC finns, behöver bara snyggas till och läggas ihopp med detta.

Re: Atmega at90usb

Postat: 13 december 2011, 22:48:40
av gripner
verkligen ingen som vill tjäna lite kosing?

Re: Atmega at90usb

Postat: 13 december 2011, 23:46:02
av swesysmgr
Tre ultraljudssensorer skall pollas och resultatet skickas ut på USB vad mer? Är det tvunget att använda de dyra AT90USB eller är det ok med någon billigare USB-kapabel AVR?

"Koden för ADC samt USB CDC finns, behöver bara snyggas till" är den från något väl beprövat, fungerande USB ramverk eller hittat på nätet? Skall det programmeras något på usb-hosten för att presentera mätdata?

Re: Atmega at90usb

Postat: 14 december 2011, 08:19:26
av gripner
USB CRC standard för att atmegan sätts up som en usb-serieport är skapat av atmel, fungerar jättebra. Typ behöver 2-3 rader kod varav 1 är #include "usb_serial.h".

Kod: Markera allt


usb_init();
while (!usb_configured()) /* wait */ ;
_delay_ms(1000);

while(1) {
      if(usb_serial_available()>0) {
	ser_input = usb_serial_getchar();

	usb_serial_write((unsigned char *)"inkommande char var", 19);
              usb_serial_write((unsigned char *)ser_input, 1);
      }
}

Den delen är simpel

Mitt program behöver dock göra lite mer.

Kod: Markera allt


usb_init();
while (!usb_configured()) /* wait */ ;
_delay_ms(1000);

initiera adc

initiera 1 port som ingång (ej den där adc finns)
initiera 1 port som utgång (ej den där adc finns)

while(1) {
      if(usb_serial_available()>0) {
	ser_input = usb_serial_getchar();


funktion läs adc spara värdet i variabel (felkorrigering behövs så man får ett stabilt värde)
funktion läs ultraljuds mätarna, den funktionen mäter 2 tider kontrolerar och konverterar enligt känd formel. sparar i variabel
                 måste kontroleras och förslagsvis tas tiden med hjälp av inbyggd klocka för det.

	usb_serial_write((unsigned char *)"datan från tidigare mätningar", 19);
      }
}