Hallo, habe dieses Projekt mal nachgebaut: http://www.obdev.at/products/avrusb/easylogger-de.html Mein Computer sagt aber immmer wenn ich das Ding per USB Verbinde: "USB-Gerät wurde nicht erkannt". Hat das schon mal jemand nachgebaut? Gab es dabei Probleme? Mir ist unklar wie ich die Fuse setzen muß. Muß der EEprom leer sein? Gruß Rene
Ich denke, Du musst den High Frequency PLL Clock - PLLCLK benutzen, also CKSEL3:0 auf 0001 setzen. Weiterhin muss dann noch die Frequenz auf 16.5MHz kalibriert werden. Insofern kann ich mir nicht vorstellen, dass bei diesem Projekt ein zuverlässiger Betrieb möglich ist. Ein Anforderung von 1% kann unmöglich erfüllt werden. Schon 5% für eine normale UART machen ziemliche Probleme. Ich kann die Stelle in der Spec von Atmel auch nicht finden, die 1% Genauigkeit angibt. Das gilt wohl nur für konstante Raumtemperatur und Versorgungsspannung. Dafür ist USB aber nicht gerade bekannt. Betrachte es einfach als Studie, die jemand einmal zum Laufen gebracht hat. P.S. Es gibt keine leeren EEPROMs.
Hallo, da haben wir schon den ersten Fehler, PLL habe ich nicht benutzt. Ist jetzt geändert aber immer noch das selbe Ergebnis. Ein leerer EEprom heisst für mich alle Bytes sind 0xFF. Ich Spiele hier auf folgende Stelle im Quellcode an:
1 | uchar calibrationValue = eeprom_read_byte(0); |
2 | if(calibrationValue != 0xff){ |
3 | OSCCAL = calibrationValue; /* a calibration value is supplied */ |
4 | }else{ |
5 | /* we have no calibration value, assume 8 MHz calibration and adjust from there */
|
6 | if(OSCCAL < 125){ |
7 | OSCCAL += 3; /* should be 3.5 */ |
8 | }else if(OSCCAL >= 128){ |
9 | OSCCAL += 7; /* should be 7 */ |
10 | }else{ /* must be between 125 and 128 */ |
11 | OSCCAL = 127; /* maximum possible avoiding discontinuity */ |
12 | }
|
13 | }
|
Als Studie will ich das eigentlich nicht abhaken, zumal die Xtal Anschlüsse für die reine Anmeldung (Enumeration] am PC keine Rolle spielen, sodaß man da doch einen Quartz anschliessen könnte. Dann sollte 1% überhaupt kein Problem mehr sein. Gruß Rene
Richtig. Versuche es erst mit einem Quarz und verschlechtere Dich dann. Somit hast Du schon mal eine funktionierende Referenz.
Hallo Rene, war bei mir am Anfang auch so... Ich hab dann ein Oszi angeschlossen, den CLKOUT aktiviert und die Frequenz gemessen. Dann mit dem ersten Byte im EEProm die Frequenz eingestellt. Seitdem läufts. Hinweis: Du kannst das OSCCAL-Byte auslesen und von diesem Wert aus die Kalibrierung starten. Bei mir war das OSCAL-Byte 0x95 und der Wert den ich ins EEprom geschrieben habe war 0x96. Geraldo
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.