Hallo, ich bin dabei das USB IO Projekt von Stefan Frings mit dem Chip45
Crumb168 V2.0 AVR ATmega168 USB Modul umzusetzen.
Das Modul Crumb168 V2.0:
[[http://www.chip45.com/AVR-ATmega-Mikrocontroller-Module/Crumb168-V2-1-AVR-ATmega168-USB-Modul.html]]
Das Projekt:
[[http://meinemullemaus.de/software/crumb/index.html]]
Leider hänge ich seit Tagen fest und komme nicht weiter.
Ich benutze AVR Studio 4.17
Auf dem Modul habe ich einen 16MHz Quarz und die Fuse Bits so
eingestellt das nicht der interne Quarz benutzt wird.
LFUSE = 0xFF
oder Voreinstellung LFUSE 0xDF (Betrifft Brown-out detection)
HFUSE = 0xDD
Folgende Einstellungen habe ich Makefile geändert:
Die Fuse Einstellungen habe ich auskommentiert, da ich diese über den
Programmer von AVR Studio setze
Makefile:
1 | # Programmer hardware settings for avrdude
|
2 | AVRDUDE_HW = -c AVRISP -P //./COM6 -b 115200
|
3 |
|
4 | # Target device for avr-gcc and avrdude, select one
|
5 | MCU = atmega168
|
6 |
|
7 | # Clock frequency in Hz
|
8 | F_CPU = 16000000
|
9 |
|
10 | # Fuse settings, same for ATmega8, 168 and 644
|
11 | #LFUSE = 0xFF
|
12 | #HFUSE = 0xDD
|
das sind die Parameter aus der serial.h
1 | #ifndef serialconsole_h
|
2 | #define serialconsole_h
|
3 |
|
4 | // Set the correct XTAL frequency in Makefile!
|
5 |
|
6 | // Bitrate of the serial port
|
7 | //#define BAUD 115200
|
8 | #define BAUD 115200
|
9 |
|
10 | // Enable serial terminal compatibility mode, which means
|
11 | // Input lines are terminated by a single \n or \r
|
12 | // Output lines are terminated by \r\n
|
13 | // In normal mode, lines are always terminated by \n.
|
14 | #define TERMINAL_MODE 1
|
15 |
|
16 | // Enable echo on serial interface
|
17 | #define SERIAL_ECHO 1
|
18 |
|
19 | // Initialize the serial port and bind it to stdin and stdout to it.
|
20 | void initserial(void);
|
21 |
|
22 | #endif //serialconsole_h
|
Die serialconcole.c und die usb-io.c sind unverändert.
Bei der Verbindung mit dem Crumb168 über Com7 mit dem Windows
Hyperterminal habe ich folgende Einstellungen benutzt:
Baud: 115200
Databits: 8
Parity: None
Stop Bits: 1
Flow control: none
Nun zum Problem.
Mit dem internen Taktgeber des Mikrocontrollers, gab es bei der
Verbindung mit dem Mikrocontroller über das Windows Hyperterminal
sporadisch Fehler.
Manchmal wurden korrekt eingegebene Befehle nicht erkannt oder bereits
während der Eingabe ausgeführt. Auch wurden während der Eingabe
sporadisch Sonderzeichen anstelle des gewünschten Zeichens im Terminal
angezeigt.
Ich hatte nach meiner Recherche den Verdacht, dass dies an der
Ungenauigkeit des internen Taktgebers liegt. Mit einem externen 16MHz
Quarz wurde es auch nicht besser. Eher schlimmer. Nun gab es bei
Tastendruck und stehender Verbindung über das Hyperterminal mit dem
Kontroller eine Vielzahl an Sonderzeichen. Es scheint also Abhängig von
der Frequenz und/oder Baudrate zu sein.
Ich bin für jeden Tipp dankbar und hoffe ihr könnt mir helfen.
Danke, Sebastian