Bot-Builder
17.02.2010, 17:34
Hallo allerseits!
Ich brauche da mal einen gedanklichen Schups in die richtige Richtung.
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. Diese 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.
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.
Jetzt aber zum 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
Ich brauche da mal einen gedanklichen Schups in die richtige Richtung.
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. Diese 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.
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.
Jetzt aber zum 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