Positions-Display för svarv (AVR)

Berätta om dina pågående projekt.
syltkaka
Inlägg: 188
Blev medlem: 9 december 2006, 18:55:09
Ort: Göteborg

Inlägg av syltkaka »

Ja det kan den. 1 startbit, 8 databitar, 1 paritetsbit, 1 stopbit är ett sätt att konfigurera den. Sedan låter man ju tangentbordet generera klockan.


Viss konfiguration syns inte som tex att DDRD för klockpinnen är 0 som deafult, dvs ingång som den ska vara eftersom tangentbordet genererar klockan. I interruptet så finns mottaget data i UDR0, färdigt att placeras i bufferten.

Kod: Markera allt

void usart_init()
{
	//Pull-up RXD and XCK
	PORTD |= _BV(PD0) | _BV(PD4);

	//Recieve complete interrupt and recive enable
	UCSR0B |= _BV(RXCIE0) | _BV(RXEN0);
	//Synchronous USART, odd parity, 8-bit
	UCSR0C |= _BV(UMSEL00) | _BV(UPM01) | _BV(UPM00) |
			  _BV(UCSZ01) | _BV(UCSZ00);

	//Init buffer
	head = tail = buffer;

	sei();
}


//Interruptrutinen
ISR(USART_RX_vect)
{
	//Recieved data in UDR0
	if(bytes < 8) {
		*head = UDR0;
		if(head == buffer + 7)
			head = buffer;
		else
			head++;
		bytes++;
	}
}

Urklipp ur listfilen. Visste inte om jag skulle ta med den eller inte. Endast usart_init.

Kod: Markera allt

void usart_init()
{
 22a:	8b b1       	in	r24, 0x0b	; 11
 22c:	81 61       	ori	r24, 0x11	; 17
 22e:	8b b9       	out	0x0b, r24	; 11
	PORTD |= _BV(PD0) | _BV(PD4);

	UCSR0B |= _BV(RXCIE0) | _BV(RXEN0);
 230:	e1 ec       	ldi	r30, 0xC1	; 193
 232:	f0 e0       	ldi	r31, 0x00	; 0
 234:	80 81       	ld	r24, Z
 236:	80 69       	ori	r24, 0x90	; 144
 238:	80 83       	st	Z, r24
	UCSR0C |= _BV(UMSEL00) | _BV(UPM01) | _BV(UPM00) |
 23a:	e2 ec       	ldi	r30, 0xC2	; 194
 23c:	f0 e0       	ldi	r31, 0x00	; 0
 23e:	80 81       	ld	r24, Z
 240:	86 67       	ori	r24, 0x76	; 118
 242:	80 83       	st	Z, r24
			  _BV(UCSZ01) | _BV(UCSZ00);

	head = tail = buffer;
 244:	85 e1       	ldi	r24, 0x15	; 21
 246:	91 e0       	ldi	r25, 0x01	; 1
 248:	90 93 20 01 	sts	0x0120, r25
 24c:	80 93 1f 01 	sts	0x011F, r24
 250:	90 93 1e 01 	sts	0x011E, r25
 254:	80 93 1d 01 	sts	0x011D, r24

	sei();
 258:	78 94       	sei
 25a:	08 95       	ret
Användarvisningsbild
Chribbe76
EF Sponsor
Inlägg: 1167
Blev medlem: 17 januari 2004, 22:43:17
Ort: Stockholm

Inlägg av Chribbe76 »

Fästet är "klart" så nu väntar jag bara på att svarven blir lagad.

[img]http://ake.myftp.org/forum/Svarvdisp-Mo ... fäste1.jpg[/img]
[img]http://ake.myftp.org/forum/Svarvdisp-Mo ... fäste2.jpg[/img]
Användarvisningsbild
Chribbe76
EF Sponsor
Inlägg: 1167
Blev medlem: 17 januari 2004, 22:43:17
Ort: Stockholm

Inlägg av Chribbe76 »

Jag har gjort en film som visar hur man kan ställa in X för ett verktyg.
Det är nästan lite magiskt. 8)

Lite skakig film men jag skyller på att det är ganska svårt att svarva och filma samtidigt.
Varning! Filen är 21MB.
Om ni tipsar om ett bra gratis program för att konvertera till DivX eller liknande så kan jag förminska filen.
http://ake.myftp.org/forum/Svarvdisp-Ca ... Offset.avi


Bild
Joe
Inlägg: 1804
Blev medlem: 3 mars 2006, 17:00:50
Ort: Södermanland

Inlägg av Joe »

Nu blev jag impad! Tänk om man hade sånadäringa funktioner i snik Heidenhain displayen (kanske finns om man orkar RTFM)

Kommer den ihåg minsta värdet i X?

Hur funkar refpunkten? Vevar man förbi den och sen så sätter den nollan? (eller referens värdet, svårt att få ref punkt nollan precis i chuckcentrum..)
Den måste ju veta vart den är om den funktion skall fungera direkt efter spänningstillslag..
Användarvisningsbild
Chribbe76
EF Sponsor
Inlägg: 1167
Blev medlem: 17 januari 2004, 22:43:17
Ort: Stockholm

Inlägg av Chribbe76 »

Skalorna till den här svarven har ingen refpunkt så i nuläget finns ingen refpunkt-funktion.
Ambitionen från början var att jag ändå skulle göra en refpunkt-funktion genom att ha ett verktyg som trycks mot chucken i X och Z men just nu är jag nöjd ändå.

Inställning av X fungerar så att positionen för X lagras när matningen i Z är inom ett visst intervall under 1 sekund, det fungerar även för invändiga verktyg.
Om jag forsätter med projektet kommer jag utveckla funktionen lite så det även fungerar för spår-verktyg.

"Den måste ju veta vart den är om den funktion skall fungera direkt efter spänningstillslag.."
Jag förstår inte riktigt hur du menar.
Joe
Inlägg: 1804
Blev medlem: 3 mars 2006, 17:00:50
Ort: Södermanland

Inlägg av Joe »

Blev en tanke vurpa, naturligtvis när du mäter diametern så räknas offset ut av det lagrade X värdet och då behövs det ingen referenspunkt :!:

Tänkte att man måste veta nollan för att räkna ut offset på verktyget, men det behövs inte i detta fall..

Nevertheless en riktigt praktisk funktion!
Skriv svar