<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
	<link rel="self" type="application/atom+xml" href="https://forums.obdev.at/app.php/feed/topic/951" />

	<title>Objective Development Forums</title>
	
	<link href="https://forums.obdev.at/index.php" />
	<updated>2007-12-12T09:31:51+02:00</updated>

	<author><name><![CDATA[Objective Development Forums]]></name></author>
	<id>https://forums.obdev.at/app.php/feed/topic/951</id>

		<entry>
		<author><name><![CDATA[Anonymous]]></name></author>
		<updated>2007-12-12T09:31:51+02:00</updated>

		<published>2007-12-12T09:31:51+02:00</published>
		<id>https://forums.obdev.at/viewtopic.php?t=951&amp;p=3476#p3476</id>
		<link href="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3476#p3476"/>
		<title type="html"><![CDATA[USB-joystick Atmega 16]]></title>

		
		<content type="html" xml:base="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3476#p3476"><![CDATA[
That was it indeed. <br /><br />At first I figured the other 7 bytes would be discarded, because I figured if it was not filled, it would be 0 and thus NULL / nothing. <br /><br />But I guess a logical 0 != nothing if you're transmitting it. <br /><br />Thinking error of mine <img class="smilies" src="./../../../images/smilies/icon_wink.gif" alt=";)" title="Wink" /><p>Statistics: Posted by Guest — Wed Dec 12, 2007 9:31 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[christian]]></name></author>
		<updated>2007-12-11T18:10:57+02:00</updated>

		<published>2007-12-11T18:10:57+02:00</published>
		<id>https://forums.obdev.at/viewtopic.php?t=951&amp;p=3467#p3467</id>
		<link href="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3467#p3467"/>
		<title type="html"><![CDATA[USB-joystick Atmega 16]]></title>

		
		<content type="html" xml:base="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3467#p3467"><![CDATA[
So you confused the operating system with a report which did not match the Report Descriptor.<br /><br />In any case: I'm glad you found the cause!<p>Statistics: Posted by <a href="https://forums.obdev.at/memberlist.php?mode=viewprofile&amp;u=8">christian</a> — Tue Dec 11, 2007 6:10 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[WaaZaa]]></name></author>
		<updated>2007-12-11T16:23:21+02:00</updated>

		<published>2007-12-11T16:23:21+02:00</published>
		<id>https://forums.obdev.at/viewtopic.php?t=951&amp;p=3465#p3465</id>
		<link href="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3465#p3465"/>
		<title type="html"><![CDATA[USB-joystick Atmega 16]]></title>

		
		<content type="html" xml:base="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3465#p3465"><![CDATA[
Finally found out what it was..<br /><br />the usbReport[] was still sized at 8 elements, while I only wanted to receive 1 byte. I'm guessing this caused a stall at the host sized, because of bogus data beeing sent after the interrupt and the first byte beeing sent. <br /><br />At any rate, thanks for the help! Maybe I'll be back for some more problems later <img class="smilies" src="./../../../images/smilies/icon_wink.gif" alt=";)" title="Wink" /><p>Statistics: Posted by <a href="https://forums.obdev.at/memberlist.php?mode=viewprofile&amp;u=641">WaaZaa</a> — Tue Dec 11, 2007 4:23 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[christian]]></name></author>
		<updated>2007-12-10T18:33:13+02:00</updated>

		<published>2007-12-10T18:33:13+02:00</published>
		<id>https://forums.obdev.at/viewtopic.php?t=951&amp;p=3448#p3448</id>
		<link href="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3448#p3448"/>
		<title type="html"><![CDATA[USB-joystick Atmega 16]]></title>

		
		<content type="html" xml:base="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3448#p3448"><![CDATA[
If usbInterruptIsReady() is never true, then the host does not poll the interrupt endpoint. There are two possilbe causes for this:<br />(1) The endpoint is not declared correctly in the configuration descriptor, or<br />(2) the device did not respond when the host polled the interrupt endpoint and the host therefore stalled it.<br /><br />If you have other interrupts on the device which delay INT0 for more than a couple of cycles, (2) is very likely. If the host polls, but the USB driver's interrupt routine can't be called soon enough, the poll fails and the interrupt endpoint is stalled by the host. It effectively stops polling until you re-open the device.<p>Statistics: Posted by <a href="https://forums.obdev.at/memberlist.php?mode=viewprofile&amp;u=8">christian</a> — Mon Dec 10, 2007 6:33 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Anonymous]]></name></author>
		<updated>2007-12-10T18:03:18+02:00</updated>

		<published>2007-12-10T18:03:18+02:00</published>
		<id>https://forums.obdev.at/viewtopic.php?t=951&amp;p=3447#p3447</id>
		<link href="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3447#p3447"/>
		<title type="html"><![CDATA[USB-joystick Atmega 16]]></title>

		
		<content type="html" xml:base="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3447#p3447"><![CDATA[
These descriptors all seem right to me.. I used the most basic HID descriptor this time, but it still does not work. <br /><br />It recognises the new descriptor in windows, so I guess this is allright. <br /><br />All I can think of is that the interrupts are not triggered / handled correctly. While testing, the <div class="codebox"><p>Code: </p><pre><code>usbInterruptIsReady&#40;&#41;</code></pre></div> is always false.. This would indicate there is something wrong there right? Unless it is going to fast for me too see. <br /><br />The descriptor I'm using now is like I said, very basic:<br /><div class="codebox"><p>Code: </p><pre><code>char usbHidReportDescriptor&#91;USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH&#93; <br />  PROGMEM = &#123;<br />   0x05, 0x01,                    // USAGE_PAGE &#40;Generic Desktop&#41;<br />    0x09, 0x04,                    // USAGE &#40;Joystick&#41;<br />    0xa1, 0x01,                    // COLLECTION &#40;Application&#41;<br />    0x95, 0x01,                    //   REPORT_COUNT &#40;1&#41;<br />    0x75, 0x08,                    //     REPORT_SIZE &#40;8&#41;<br />    0x15, 0x00,                    //     LOGICAL_MINIMUM &#40;0&#41;<br />    0x26, 0xfe, 0x00,              //     LOGICAL_MAXIMUM &#40;254&#41;<br />    0x09, 0x30,                    //     USAGE &#40;X&#41;<br />    0x81, 0x02,                    //     INPUT &#40;Data,Var,Abs&#41;<br />    0xc0                           // END_COLLECTION               <br />&#125;;<br /></code></pre></div><br /><br />I'm currently building the report like this:<br /><br /><div class="codebox"><p>Code: </p><pre><code>if&#40;adcData&#91;0&#93; &gt; 125&#41; adcData&#91;0&#93; = 125;<br />   if&#40;adcData&#91;0&#93; &lt; 1&#41; adcData&#91;0&#93; = 1;<br />   usbReport&#91;0&#93; = adcData&#91;0&#93;;</code></pre></div><br />with adcData beeing the AD converter values. I figured with the extra checks I make sure it does not exceed the 8 bit. <br /><br />then usbReport[] is sent to the host via:<br /><div class="codebox"><p>Code: </p><pre><code>if&#40;usbInterruptIsReady&#40;&#41;&#41;<br />      &#123;            <br />            usbSetInterrupt&#40;usbReport, sizeof&#40;usbReport&#41;&#41;;<br />      &#125;</code></pre></div><br /><br />All that the usb protocol analyzer says is this:<br /><br /><img src="http://www.waazaa.net/usb/usb1.PNG" class="postimage" alt="Image" /><br /><br />Which once again makes me think there is something wrong with the interrupt, since the interrupt transfer return unsuccesfull...<br /><br />Any help will be appreciated <img class="smilies" src="./../../../images/smilies/icon_wink.gif" alt=";)" title="Wink" /><p>Statistics: Posted by Guest — Mon Dec 10, 2007 6:03 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[christian]]></name></author>
		<updated>2007-12-06T18:11:40+02:00</updated>

		<published>2007-12-06T18:11:40+02:00</published>
		<id>https://forums.obdev.at/viewtopic.php?t=951&amp;p=3409#p3409</id>
		<link href="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3409#p3409"/>
		<title type="html"><![CDATA[USB-joystick Atmega 16]]></title>

		
		<content type="html" xml:base="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3409#p3409"><![CDATA[
Sorry, I don't have the time to go through your code and descriptors, but some comments:<br /><br />It's OK that D+ is at 0 V and D- at 3.3 V. This is the idle status when no data is transferred. Since data is transferred in bursts, you see the bus idle most of the time.<br /><br />If the device is recognized by Windows, the driver level should be OK. You should look out for errors in the descriptors (configuration descriptor, endpoint descriptors, HID Report descriptor). There are tools for Linux, Mac OS X and Windows to analyze the descriptors (but I don't know the names, I use USB Prober on the Mac).<p>Statistics: Posted by <a href="https://forums.obdev.at/memberlist.php?mode=viewprofile&amp;u=8">christian</a> — Thu Dec 06, 2007 6:11 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[WaaZaa]]></name></author>
		<updated>2007-12-06T11:15:03+02:00</updated>

		<published>2007-12-06T11:15:03+02:00</published>
		<id>https://forums.obdev.at/viewtopic.php?t=951&amp;p=3407#p3407</id>
		<link href="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3407#p3407"/>
		<title type="html"><![CDATA[USB-joystick Atmega 16]]></title>

		
		<content type="html" xml:base="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3407#p3407"><![CDATA[
I got the initialization working finally.. So I'm guessing the hardware side should be allright. I did add a resistor and measured the D lines. D- = 3.3V<br />D+ = 0V.. For some reason I am getting a hunch the 0V is not right for the D+? Should this be switched around?<br /><br />*crosspost, wanted to post it here*<br /><br />I am trying to get reports sent to the PC, but the avr doesn't seem to be sending anything.. For the record, I am using an atmega16, but that shouldn't change anything..<br /><br />It's strange because the device is recognized by windows, gamecontrollers shows this: <br /><img src="http://www.waazaa.net/img/usbControl.PNG" class="postimage" alt="Image" /><br />I'm guessing this means the enumeration is going correct, but the interrupts after are not received correctly?<br /><br />I also added a usbtrace log on my webserver, the device desciption it gives and a list of transfers received and sent. This is a cycle which keeps repeating itself.. <!-- m --><a class="postlink" href="http://www.waazaa.net/usb/">http://www.waazaa.net/usb/</a><!-- m --><br /><br />I'm just adding my code here..<br /><div class="codebox"><p>Code: </p><pre><code>/**********************Global Variables****************************************/<br />/* Originally used as a mask for the modifier bits, but now also<br />   used for other x -&gt; 2^x conversions &#40;lookup table&#41;. */<br />const char modmask&#91;8&#93; PROGMEM = &#123;0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80&#125;;<br />uchar  adcData&#91;8&#93; =&#123;0,0,0,0,0,0,0,0&#125;; //int to store the AD conversion results in. <br />uchar newDataFound;<br />uchar   updateNeeded = 0;<br /><br />/* The ReportBuffer contains the USB report sent to the PC */<br />static uchar reportBuffer&#91;8&#93; = &#123;0,0,0,0,0,0,0,0&#125;;    /* buffer for HID reports */<br />static uchar idleRate;           /* in 4 ms units */<br /><br /><br />/* Device serial number &#40;length is defined in usbconfig.h&#41; */<br />int usbCfgSerialNumberStringDescriptor&#91;USB_CFG_SERIAL_NUMBER_LENGTH+1&#93; PROGMEM = <br />&#123;<br />    USB_STRING_DESCRIPTOR_HEADER&#40;USB_CFG_SERIAL_NUMBER_LENGTH&#41;,<br />    '1', '3',<br />&#125;;<br /><br />/* USB report descriptor &#40;length is defined in usbconfig.h&#41;*/<br />const char usbHidReportDescriptor&#91;USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH&#93; <br />  PROGMEM = &#123;<br />     0x05, 0x01,                    // USAGE_PAGE &#40;Generic Desktop&#41;<br />    0x15, 0x00,                    // LOGICAL_MINIMUM &#40;0&#41;<br />    0x09, 0x04,                    // USAGE &#40;Joystick&#41;<br />    0xa1, 0x01,                    // COLLECTION &#40;Application&#41;<br />    0x09, 0x01,                    //   USAGE &#40;Pointer&#41;<br />    0xa1, 0x00,                    //   COLLECTION &#40;Physical&#41;<br />    0x95, 0x06,                    //     REPORT_COUNT &#40;6&#41;<br />    0x75, 0x08,                    //     REPORT_SIZE &#40;8&#41;<br />    0x15, 0x80,                    //     LOGICAL_MINIMUM &#40;-128&#41;<br />    0x25, 0x7f,                    //     LOGICAL_MAXIMUM &#40;127&#41;<br />    0x35, 0x00,                    //     PHYSICAL_MINIMUM &#40;0&#41;<br />    0x46, 0xff, 0x00,              //     PHYSICAL_MAXIMUM &#40;255&#41;<br />    0x09, 0x31,                    //     USAGE &#40;Y&#41;<br />    0x09, 0x30,                    //     USAGE &#40;X&#41;<br />    0x09, 0x32,                    //     USAGE &#40;Z&#41;<br />    0x09, 0x33,                    //     USAGE &#40;Rx&#41;<br />    0x09, 0x34,                    //     USAGE &#40;Ry&#41;<br />    0x09, 0x35,                    //     USAGE &#40;Rz&#41;<br />    0x81, 0x02,                    //     INPUT &#40;Data,Var,Abs&#41;<br />    0x95, 0x08,                    //     REPORT_COUNT &#40;8&#41;<br />    0x75, 0x01,                    //     REPORT_SIZE &#40;1&#41;<br />    0x15, 0x00,                    //     LOGICAL_MINIMUM &#40;0&#41;<br />    0x25, 0x01,                    //     LOGICAL_MAXIMUM &#40;1&#41;<br />    0x35, 0x00,                    //     PHYSICAL_MINIMUM &#40;0&#41;<br />    0x45, 0x01,                    //     PHYSICAL_MAXIMUM &#40;1&#41;<br />    0xc0,                          // END_COLLECTION<br />    0x05, 0x09,                    //     USAGE_PAGE &#40;Button&#41;<br />    0x19, 0x01,                    //     USAGE_MINIMUM &#40;Button 1&#41;<br />    0x29, 0x08,                    //     USAGE_MAXIMUM &#40;Button 8&#41;<br />    0x81, 0x02,                    //     INPUT &#40;Data,Var,Abs&#41;<br />    0xc0                           //     END_COLLECTION                  <br />&#125;;<br /><br />/**********************||Global Variables||****************************************/<br /><br /><br /><br /><br />static void hardwareInit&#40;void&#41; &#123;<br />  uchar   i, j;<br /><br />   /* 1101 1000 bin: activate pull-ups except on USB lines <br />    *<br />    * USB signals are on bit 0 and 2. <br />    *<br />    * */<br />   PORTD = 0xf8;   <br /><br />   /* Usb pin are init as outputs */<br />   DDRD = 0x01 | 0x04;    <br /><br />   <br />   j = 0;<br />   while&#40;--j&#41;&#123;     /* USB Reset by device only required on Watchdog Reset */<br />      i = 0;<br />      while&#40;--i&#41;; /* delay &gt;10ms for USB reset */<br />   &#125;<br />   DDRD = 0x00;    /* 0000 0000 bin: remove USB reset condition */<br />   <br />   /* configure timer 0 for a rate of 12M/&#40;1024 * 256&#41; = 45.78 Hz &#40;~22ms&#41; */<br />   TCCR0 = 5;      /* timer 0 prescaler: 1024 */<br /><br />   TCCR2 = &#40;1&lt;&lt;WGM21&#41;|&#40;1&lt;&lt;CS22&#41;|&#40;1&lt;&lt;CS21&#41;|&#40;1&lt;&lt;CS20&#41;;<br />   OCR2 = 196; // for 60 hz<br />&#125;<br /><br /><br />//Initialize the AD converter.<br />void Init_ADC&#40; void &#41;<br />&#123;<br />   //          enable     *      prescaler = 128       *<br />    ADCSRA  = &#40;1&lt;&lt;ADEN&#41;|&#40;1&lt;&lt;ADPS2&#41;|&#40;0&lt;&lt;ADPS1&#41;|&#40;1&lt;&lt;ADPS0&#41;; <br />&#125;<br /><br /><br />uchar   usbFunctionSetup&#40;uchar data&#91;8&#93;&#41; &#123;<br />  usbRequest_t *rq = &#40;void *&#41;data;<br />  usbMsgPtr = reportBuffer;<br />  if&#40;&#40;rq-&gt;bmRequestType &amp; USBRQ_TYPE_MASK&#41; == USBRQ_TYPE_CLASS&#41;&#123;    /* class request type */<br />    if&#40;rq-&gt;bRequest == USBRQ_HID_GET_REPORT&#41;&#123;  /* wValue: ReportType &#40;highbyte&#41;, ReportID &#40;lowbyte&#41; */<br />      /* we only have one report type, so don't look at wValue */<br />      return sizeof&#40;reportBuffer&#41;;<br />    &#125;else if&#40;rq-&gt;bRequest == USBRQ_HID_GET_IDLE&#41;&#123;<br />      usbMsgPtr = &amp;idleRate;<br />      return 1;<br />    &#125;else if&#40;rq-&gt;bRequest == USBRQ_HID_SET_IDLE&#41;&#123;<br />      idleRate = rq-&gt;wValue.bytes&#91;1&#93;;<br />    &#125;<br />  &#125;else&#123;<br />    /* no vendor specific requests implemented */<br />  &#125;<br />   return 0;<br />&#125;<br /><br /><br /> <br />void inDecoderPoll&#40;void&#41;<br />&#123;<br />    <br />   for &#40;unsigned int i = 0; i &lt; 8; i++&#41;    <br />   &#123;<br />        <br />      ADMUX = i;                 // select ADC channel<br />      ADMUX |= &#40;0&lt;&lt;REFS1&#41;|&#40;1&lt;&lt;REFS0&#41;|&#40;1&lt;&lt;ADLAR&#41;; <br />      ADCSRA |= &#40;1&lt;&lt;ADSC&#41;;         // start conversion<br />        while &#40;ADCSRA &amp; &#40;1&lt;&lt;ADSC&#41;&#41;&#123;;&#125; // wait for result &#40;fast, not a problem for USB driver&#41;<br />        adcData&#91;i&#93; = ADCH;          // save to data buffer<br />      <br />    &#125;<br />    // set new data flag<br />    newDataFound = 1;<br />&#125;<br /><br />void buildReport&#40;void&#41;<br />&#123;<br />   for &#40;unsigned int i =0; i&lt;7; i++&#41;<br />   &#123;<br />          //just using channel 7 value for now. <br />      reportBuffer&#91;i+1&#93; = adcData&#91;7&#93;;<br />   &#125;<br />&#125;<br /><br />void testMeth&#40;void&#41;<br />&#123;<br />   <br />   if&#40;usbInterruptIsReady&#40;&#41;&#41;<br />   &#123;<br />      // led on<br />      PORTB = 0x00;<br />      DDRB = 0x01;<br />   &#125;<br />   else <br />   &#123;<br />      //led off.<br />      DDRB = 0x00;<br />   &#125;<br /><br />&#125; <br /><br /><br /><br />int   main&#40;void&#41; &#123;<br />     <br />      <br />   wdt_enable&#40;WDTO_2S&#41;; /* Enable watchdog timer 2s */<br />   hardwareInit&#40;&#41;; /* Initialize hardware &#40;I/O&#41; */<br />   Init_ADC&#40;&#41;;<br /><br />   usbInit&#40;&#41;; /* Initialize USB stack processing */<br />   sei&#40;&#41;; /* Enable global interrupts */<br />      <br />   <br />   for&#40;;;&#41;<br />   &#123;   /* Main loop */<br />      wdt_reset&#40;&#41;; /* Reset the watchdog */<br />      usbPoll&#40;&#41;; /* Poll the USB stack */<br />      <br />      <br />      inDecoderPoll&#40;&#41;;<br />   <br />      /* If an update is needed, send the report */<br />      if&#40;usbInterruptIsReady&#40;&#41;&#41;<br />      &#123;<br />            <br />            buildReport&#40;&#41;;<br />            testMeth&#40;&#41;;<br />            usbSetInterrupt&#40;reportBuffer, sizeof&#40;reportBuffer&#41;&#41;;<br />      &#125;<br />   <br />   &#125;<br />   return 0;<br />&#125;<br /></code></pre></div><p>Statistics: Posted by <a href="https://forums.obdev.at/memberlist.php?mode=viewprofile&amp;u=641">WaaZaa</a> — Thu Dec 06, 2007 11:15 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[christian]]></name></author>
		<updated>2007-11-26T15:24:42+02:00</updated>

		<published>2007-11-26T15:24:42+02:00</published>
		<id>https://forums.obdev.at/viewtopic.php?t=951&amp;p=3261#p3261</id>
		<link href="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3261#p3261"/>
		<title type="html"><![CDATA[USB-joystick Atmega 16]]></title>

		
		<content type="html" xml:base="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3261#p3261"><![CDATA[
Please verify that the definitions in usbconfig.h and the initialization in main() match your hardware. On the hardware side, you should probably consider adding series resistors and 3.6 V zener diodes to limit the bus voltage to 3.3 V. Not all hosts tolerate 5 V on D+ and D-.<p>Statistics: Posted by <a href="https://forums.obdev.at/memberlist.php?mode=viewprofile&amp;u=8">christian</a> — Mon Nov 26, 2007 3:24 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[sprhawk]]></name></author>
		<updated>2007-11-21T05:30:03+02:00</updated>

		<published>2007-11-21T05:30:03+02:00</published>
		<id>https://forums.obdev.at/viewtopic.php?t=951&amp;p=3196#p3196</id>
		<link href="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3196#p3196"/>
		<title type="html"><![CDATA[USB-joystick Atmega 16]]></title>

		
		<content type="html" xml:base="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3196#p3196"><![CDATA[
Maybe it's the problem of USB initializing...<br /><br />I was working on it for a long time.<br /><br />Try to change them according to your own schematic.<p>Statistics: Posted by <a href="https://forums.obdev.at/memberlist.php?mode=viewprofile&amp;u=517">sprhawk</a> — Wed Nov 21, 2007 5:30 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[Anonymous]]></name></author>
		<updated>2007-11-19T16:17:53+02:00</updated>

		<published>2007-11-19T16:17:53+02:00</published>
		<id>https://forums.obdev.at/viewtopic.php?t=951&amp;p=3159#p3159</id>
		<link href="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3159#p3159"/>
		<title type="html"><![CDATA[USB-joystick Atmega 16]]></title>

		
		<content type="html" xml:base="https://forums.obdev.at/viewtopic.php?t=951&amp;p=3159#p3159"><![CDATA[
Hello all, <br /><br />I am busy trying to create an USB joystick with the atmega16. For this I want to use AVR-USB. The big problem is, however, that I cannot get any examples of AVR-USB to work. I tried the C64keys, HIDkeys, but they wont work. I did set the<br /><br /><div class="codebox"><p>Code: </p><pre><code># MCU name<br />MCU = atmega16<br /></code></pre></div><br /><br />But, for some reason it will not work. <br /><br />I also added resistors to my D- line, as you can see in my scheme.<br /><br /><img src="http://www.waazaa.net/img/control4.GIF" class="postimage" alt="Image" /><br /><br /><br />Strange thing is, that it did work with the all-done mjoy16 code I found on mindaugas website, but I want to edit some things, but I cant since there is no source released of this. <br /><br />Anyone have a clue whats going on?<br /><br />[/img]<p>Statistics: Posted by Guest — Mon Nov 19, 2007 4:17 pm</p><hr />
]]></content>
	</entry>
	</feed>
