Forum: Mikrocontroller und Digitale Elektronik ATMega16 mit ft232r, Übertragungsfehler bei laufenden Timern


von Bot-Builder (Gast)


Lesenswert?

Hallo allerseits!

Ich brauche da mal einen gedanklichen Schups in die richtige Richtung. 
Muss aber erst einmal ein bischen weiter ausholen.

Ich habe mir auf einer kleinen Platine (zwar einseitig, aber auch keine 
Lochraster) den ATMega16 in Grundbeschaltung aufgebaut, also mit 
7,3728Mhz Quarz, allen notwendigen Stützkondensatoren, 
ISP-Schnittstelle. Die Port habe ich dabei auf Lötnägel bzw. 10polige 
Wannenstecker gelegt. Dieses kleine MC-Board hat bisher immer gut 
funktioniert.

Darum herum habe ich mir weitere kleine Platinen gemacht, so z.B. 
LC-Display, Spannungsversorgung, einen USB-Programmer, eine mit acht 
LEDs und eine mit Max232. Die Verbindung zwischen den Platinen habe ich 
mit Flachbandleitung bzw. einfachen Kabeln mit Steckschuhen hergestellt. 
Auch das hat bisher gut funktioniert.

Programmiert wird das ganze mit AVR-GCC.

Nun habe ich mir ein Board mit einem ft232rl aufgebaut. Zum Testen habe 
ich das gleiche Programm verwendet, welches ich schon bei der Platine 
mit dem Max232 verwendet habe. Dieses Programm schickt jede Sekunde 
einen kurzen Text über die serielle Schnittstelle. Dabei verwende ich 
die UART-Lib von Peter Fleury. Der Text wird dann auf dem PC mit HTerm 
angezeigt. Die Sache hat mit dem Max232 gut funktioniert. Und zunächst 
auch mit dem ft232 über USB. Der ft232 ist mit der Standart xml-Datei, 
die mit FT-Prog geliefert wird, programmiert. Treiber auf dem PC sind 
installiert, die Einstellungen dort und bei HTerm stimmen überein, der 
Text wird korrekt dargestellt. Die Ausgabe ist zwar nicht immer flüssig, 
sondern kommt "schubweise", vermutlich ist der Buffer zu groß (?).

Jetzt aber zum eigentlichen Problem. Bei einem neuen Projekt erzeuge ich 
mit dem Timer0 oder Timer2 alle 10msec einen Interrupt. Wenn ein Timer 
läuft (egal ob Timer0 oder Timer2) dann funktioniert aber die 
Übertragung der serieller Schnittstelle per ft232 nicht mehr! Er kommen 
nur wirre Zeichen an, gelegentlich mal einige wenige korrekte 
Buchstaben. Stelle ich die Verbindung zum PC über die Platine mit dem 
Max232 her, funktioniert wieder alles einwandfrei. Die USB-Verbindung 
über den ft232 mit dem PC funktioniert auch, aber nur wenn die Timer0 
und Timer2 nicht laufen, also kein Interrupt ausgelöst wird.

Ich weiss nicht weiter, wo ich den Fehler suchen soll.

Das Programm auf dem ATMega ist immer das gleiche, natürlich bis auf die 
Tatsache, dass einmal der Timer läuft und dann wieder nicht.

Da die Verbindung auch bei laufendem Timer über den Max232 klappt, kann 
ich doch Timingprobleme beim ATMega ausschließen (?). Bzw. das die 
Timer0 bzw. Timer2 für was anderes benötigt werden. In der Lib von Peter 
Fleury habe ich nichts entsprechendes finden können. Muss aber 
einräumen, dass ich weit davon entfernt bin, die Lib zu verstehen.

Wenn die Verbindung über den ft232 bei nicht laufendem Timer klappt, ist 
die Platine mit dem ft232 in Ordnung und auch die Treiber auf dem PC 
sind korrekt installiert und die Einstellungen sind korrekt (?).

Aber wo liegt dann der Fehler???

Ich bin für jede Tip und jede Hilfe dankbar.


Mit freundlichen Güßen

Bot-Builder

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.