Forum: Mikrocontroller und Digitale Elektronik Kommunikationsprobleme USB-IO Chip45 Crumb168


von Sebastian W. (601)


Angehängte Dateien:

Lesenswert?

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

von Reiner Geiger (Gast)


Lesenswert?

Schau mal hier nach: 
http://www.gjlay.de/helferlein/avr-uart-rechner.html

Der 16 MHz Osc. ist nicht optimal für die gewählte Baudrate.

Mit 14.7456 MHz wird es klappen, oder eine andere Baudrate wählen.

Grüße

von Sebastian W. (601)


Lesenswert?

Vielen Dank für Deine Antwort, einen 14,7456 MHz Quarz hab ich mir vor 
ein paar Tagen besorgt, funktioniert aber immer noch nicht.

Nun musste ich auch feststellen, das ich zwischen VCC und Masse nur 2,3V 
messe. Irgendwas scheint da mit der Hardware nicht zu stimmen.

Kann es sein, das ich den Controller flashen kann, er aber danach nciht 
arbeitet? Oder muss entweder beides oder gar nichts funktionieren?

Gruß
Sebastian

von Sebastian W. (601)


Lesenswert?

Habe die Lösung für das Problem gefunden.

Beim Crumb168-USB muss eine Brücke für JP2 auf der Platine gezogen 
werden, wenn die Stromversorgung durch die höhere Taktung des 
Controllers mit dem externen Quarz nicht mehr ausreicht.

Bei dem 14,7456 Mhz Quarz reicht der Strom mit dem der AVR parasitär 
versorgt wird nicht mehr aus, beim internen Quarz oder einem externen 
mit geringerer Taktung funktioniert er einwandfrei, nur stimmt dann ja 
das Verhältnis für die Baudrate nicht.

War im Datenblatt des Crumb 168 meines erachtens nur unzureichend bis 
gar nicht beschrieben.

Nochmal Danke an Reiner für die Antwort.

Gruß Sebastian

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
Noch kein Account? Hier anmelden.