www.mikrocontroller.net

Forum: Compiler & IDEs Timer/Interrupt-Problem bei Atmega32


Autor: dwiendl (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo. Ich hätte da ein kleines Problem, mit dem Timer / Interrupt von 
meinem Atmega32. Das Problem ist der Timer läuft nicht. Ich will einen 
Roboter mit digitalen Servos ansteuern, und habe mir einen 
entsprechenden Quellcode vom Internet geladen. Dieser Quellcode ist zwar 
für den Atmega 8 geschrieben, müsste aber auch für meinen AVR gehen. Die 
AVR Simulationssoftware meldet mir fehler, das nicht in den Registern 
für die Timer / Interrupts geschrieben werden kann.
Auch das Osziloskop zeigt kein Signal.Ich hoffe, ihr könnt mit helfen.
Hinweis: Ich habe in diesem Programm schon die PORTS A-D eingestellt. 
(DDRA...)

MFG

Dominik Wiendl

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Timerinitialiserung sieht gut aus. Schöner wäre
  OCR1A = servofrequenz ; /* compare A 5000*/
  TCCR1B = (1<<WGM12) | (1<<CS11) | (1<<CS10) ; /* ctc mode, clk/64 */
  TIMSK  = (1<OCIE1A); /* interrupt bei compare A*/
  sei ();

gewesen, dann lässt sich das schneller erkennen.

Ob das, was in der ISR passiert, alles Sinn macht, keine Ahnung. Auf den 
ersten Blick ja, auch wenn wartende while-Schleifen in einer ISR arg 
unschön sind. Ohne Simulator müsstest du das einfach mal als normale 
Funktion laufen lassen, mit einem delay dahinter. Auch wenn dann das 
timing nicht stimmt, sollte sich zumindest an den Ausgängen was tun.

Alternativ kannst du das im AVRStudio simulieren, oder in VMLAB.
#define servofrequenz 0x0a00 /* 19,88 ms*/

Was für einen krummen Qaurz hast du denn da dran?

Oliver

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dwiendl wrote:

> entsprechenden Quellcode vom Internet geladen. Dieser Quellcode ist zwar
> für den Atmega 8 geschrieben, müsste aber auch für meinen AVR gehen. Die
> AVR Simulationssoftware meldet mir fehler, das nicht in den Registern
> für die Timer / Interrupts geschrieben werden kann.

Blöde Frage:
Du hast aber schon an allen relevanten Stellen bekannt gegeben, dass du 
einen Mega32 und keinen Mega8 benutzt, und das Programm neu kompiliert?

(Ich frage nur, weil das tatsächlich schon mal passiert, dass man 
insbesondere vergisst, die Simulatoren umzustellen).

Autor: Dominik Wiendl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, ja ich habe entsprechend neu Complimiert ( einmal als Atmega8 und 
dann als Atmega32 :) ). Ob das mit dem #define servofrequenz... hinhaut, 
dass muss ich noch prüfen. Erst einmal muss das Program funktionieren. 
Es ist ja ein Schulprojekt, und bis jetzt kann der Roboter ja schon die 
Servos steuern (Servos werden hintereinander gesteuert nur mit dem 
_delay). Als Zusatz wäre jetzt halt die Aufgabe, ihn in "Echtzeit" zu 
steuern (mit Interrupt/Timer etc. Das mehrere Servos angesteuert werden 
können.

Vielen Dank für euere Hilfe.

Autor: Dominik Wiendl (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier einmal das Ergebnis der Simulation beim Atmega32

Autor: Dominik Wiendl (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
...und beim Atmega8

Autor: Oliver (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Vergiss simulavr (dafür). Der vollständigste Simulator unter Windows ist 
AVRStudio, aber am schönsten ist VMLAB :-)

Damit kriegst du z.B. solch nette Anzeigen wie die im Anhang. Wie du 
siehst, funktioniert dein Programm in der Simulation.

Oliver

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.