Hallo, habe gerade folgendes Problem mit meinem ATMEGA8515 (Problem hatte ich auch mit AT90S8515 in der gleichen Schaltung). Zum Aufbau der Schaltung: - Entwicklungsboard STK200+ - externe Schaltung mit einem Komparator (LM339N) Dieser vergleicht eine Spannung, die an einem Widerstand abfällt mit einer, durch einen Spannungsteiler generierten, Referenzspannung - der Ausgang des Komparators (Open Collector) ist mit dem INT0 des AVR verbunden (externer Pull up oder interner Pull up --> gleiches Ergebnis) - Spannungsversorgung und Masse ist mit STK200+ verbunden - INT0 ist auf Flankensteuerung eingestellt (fallend oder steigend --> gleiches Ergebnis) - AVR durch externen Quarz (4MHz) getaktet. (Kann auf STK200+ den Quarz nicht "abklemmen") So, nun zum Problem. Solange ich mit dem internen Takt (1 MHz) gearbeitet hatte, funktionierte der Interrupt einwandfrei, leider die serielle Schnittstelle (USART) aber nicht. (Bd war richtig eingestellt. Kann das evtl daran liegen, dass der ext. Quarz zwar abgeschaltet aber trotzdem noch angeschlossen ist?) Verwende ich hingegen den externen Takt, funktioniert der USART einwandfrei, der INT0 wird aber bei Highpegel sehr häufig und unregelmäßig ausgelöst!! Am Oszi (altes "analoges" Hameg) kann ich jedoch keine Spannungsänderung messen.... Auch das zwischenschalten eines TTL ODER-Gatters (zwischen Komparator und µC) brachte keinen Erfolg... Kennt evtl. jemand ein ähnliches Problem, bzw. kann mir einen Tip geben, was ich noch versuchen sollte?? Bin für jede Anregung dankbar. Sebastian
Mal abgesehen von deinem Problem benutzt du keinenfalls einen AT90S8515 da dieser keinen internen Quarz besitzt geschweige denn ein USART.
@---: genau lesen: "habe gerade folgendes Problem mit meinem ATMEGA8515" Was passiert mit der USART wenn er mit internem Takt läuft. Häng mal das Oszi drauf und schau ob überhaupt was rauskommt oder ob bei der Kommunikation was net passt. lg, Stefan
@Stefan_h: Ich muss mich für meinen sinnlosen Kommentar entschuldigen und Du hast recht, ich sollte genauer lesen.
Danke erstmal für den Tip, habe schonmal das Oszi draufgehalten und kann auch erkennen, dass es kurz flackert. Leider habe ich privat kein digitales Oszi zur Verfügung, das bei entsprechendem Trigger das Bild speichert, sonst könnte ich das Signal ja mal genauer analysieren. Kann es sein, dass der interne Takt nicht genau 4 MHz entspricht wenn man es so einstellt, der externe Quarz jedoch noch angeschlossen ist? (Kann ihn halt leider wie schon gesagt bei dem Board nicht abklemmen...) Danke, Sebastian P.S.: @---: Nix für ungut. Wollte mit der Bemerkung lediglich sagen, dass ich das Interruptproblem auch schon bei einem AT90S8515 (externer Takt) beobachtet hatte
Nein, hab ich nicht.... muss man das? anhand welcher kriterien muss ich denn den takt kalibrieren? was muss ich dazu tun? hab sowas im Datenblatt gesehen, aber dann erstmal übergangen... Sebastian
Dann lies nochmal... Das für den gewünschten Takt richtige Calibrationsbyte mittels Programmersoftware aus dem Signature-Bereich des AVRs auslesen und per eigener Software in das Register osccal schreiben. ...
Ich muss jetzt nochmal ganz dumm fragen? Liegen am Interuppt-Eingang die Signale an? Werden beim UART Ausgangssignale bereitgestellt? Hast Du den internen Oszillator(1MHz) aktiviert? => wenn ja, dann sind 9600 Bd nicht möglich, nur 4800 und 2400 und 1200. Gruß
Vielen Dank, werde es morgen gleich mit dem Calibration Byte probieren... (Hab beim überfliegen des Datenblatts gedacht, des sei nur für irgendwelche Sonderfälle, wenn man mit seinem Prog. irgendwas über die Taktgeschichten auslesen will.) @bernhard: Habe 4 MHz intern eingestellt. Am Interrupt liegt der "hochgepullte" Ausgang des Komparators Sebastian
Habe jetzt eine Lösung gefunden: Problem mit den Interrupts kam von einem Poti, dass ich zur Erzeugung der Referenzspannung am Komparator benutzte. Poti gegen 2 Widerstände ausgetauscht --> läuft perfekt!! Nun kann ich getrost wieder den externen Quarz verwenden. (Soll ja eh viel besser sein...) Danke nochmal an alle. Sebastian b.t.w.: Mit dem internen Takt habe ich trotz OSCCAL keine serielle Verbindung zu Stande bringen können....aber ist ja jetzt auch egal.
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.