Forum: Mikrocontroller und Digitale Elektronik AVR 8515 und externer Interrupts


von Sebastian Angerer (Gast)


Lesenswert?

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

von --- (Gast)


Lesenswert?

Mal abgesehen von deinem Problem benutzt du keinenfalls einen AT90S8515
da dieser keinen internen Quarz besitzt geschweige denn ein USART.

von Stefan_h (Gast)


Lesenswert?

@---: 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

von --- (Gast)


Lesenswert?

@Stefan_h:
Ich muss mich für meinen sinnlosen Kommentar entschuldigen und Du hast
recht, ich sollte genauer lesen.

von Sebastian Angerer (Gast)


Lesenswert?

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

von ...HanneS... (Gast)


Lesenswert?

Hast dun den internen Takt calibriert? (osccal)

...

von Sebastian Angerer (Gast)


Lesenswert?

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

von ...HanneS... (Gast)


Lesenswert?

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.

...

von Bernhard (Gast)


Lesenswert?

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ß

von ...HanneS... (Gast)


Lesenswert?

Er sprach von 4MHz intern.

...

von Sebastian Angerer (Gast)


Lesenswert?

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

von Sebastian Angerer (Gast)


Lesenswert?

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