Forum: Mikrocontroller und Digitale Elektronik Timing Probleme beim AVR mega16


von Achim (Gast)


Lesenswert?

Hallo zusammen,
Ich bin kurz davor verückt zu werden.
Ich kriege einfach keine Vernünftigen wait Funktionen in Bascom ans
laufen.Es werden immer Falsche Intervalle ausgeführt.
ZB bei "Wait 1" was eine Sekunde sein soll sind es etwa 2 usw.

Also ich habe den ganzen Tag daran gefummelt und kann den Fehler
eingrenzen.
Es MUSS an der Platine liegen weil der gleiche Chip in einer anderen
Schaltung einwandfrei Funzt,auch wenn er in der "defekten"
programiert worden ist.

Der Interne RC Oszilator ist definitiv ausgeschaltet, ich benutze eine
Externe Taktquelle.8mhz.

Nun kann sicherlich niemand Hellsehen wo der Fehler auf der Platine
ist(welche ansonsten Funzt sprich programieren usw),deshalb ist meine
Frage ob jemand eine Idee hat welche "Fehlbeschaltung" dazu führen
kann das
A) keine genauen Delay Funktionen ausgeführt werden und
B) keine Servos angesteuert werden koennen.(bzw die zucken nur)

Ich weiss dass es wahrscheinlich keine Loesung geben wird, probiere
aber trotzdem mal...hier bleibt ja eigentlich nix ungeloest :)

vielen Dank im Vorraus

Achim

von Thomas Burkhardt (Gast)


Lesenswert?

Hi Achim,


hast du mal die Stromaufnahme der Schaltung gemessen? Was nach meiner
leidvollen Erfahrung noch zu gemeinen Fehlfunktionen führen kann, ist
wenn nicht alle Pins richtig verlötet sind (weil man vielleicht
geträumt hat und die Sockeln nicht an der Oberseite mitgelötet wurden
<eg>).
Hast du die Schaltung schon mal funktionsfähig gesehen, sprich ist ein
grober Designfehler ausgeschlossen?

Viele Grüße

von Achim (Gast)


Lesenswert?

Hallo,
das Netzteil kann 10 a liefern,muesste also unkritsich sein.
(Die Spannung wird "geglätet,geregelt und wieder geglätet)
Wie gesagt kann ich dne Chip programieren und die LED leuchtet auf bzw
blinkt nur halt leider in der Falschen Frequenz.
Und die Servos machen nur Unsinn,deshalb denke ich es ist ein Timing
Prob.

quote
Was nach meiner
leidvollen Erfahrung noch zu gemeinen Fehlfunktionen führen kann, ist
wenn nicht alle Pins richtig verlötet sind (weil man vielleicht
geträumt hat und die Sockeln nicht an der Oberseite mitgelötet wurden
<eg>).
quote
Sorry wie meinst du das?

gruss

Achim

von anfänger (Gast)


Lesenswert?

hast du im code auch nicht das "$crystal = 8000000" vergessen?

von Achim (Gast)


Lesenswert?

Hallo,
ich habe das "$crystal = 8000000" nicht vergessen und mit mehreren
Frequenzen gespielt.
Leider klappte es nicht da der Chip ja etwa halb so lange ist wie er
sein soll ein fach auf 4MHZ zu stellen....das ist nicht linear oder so

Gruss

von Dirk (Gast)


Lesenswert?

HI,

in der Anleitung meine ich steht was davon das der Waitbefehl sich
immer auf 4 Mhz bezieht.

Mfg

Dirk

von Achim (Gast)


Lesenswert?

Hi
wie gesagt habe ich (fast)alle Frequenzen probiert und wenn 4MHZ
eingestellt sind kann ja 2MHZ oder 8 MHZ den richtigen Delay Wert
erzeugen.
Ausserdem funktioniert der timer0 nicht weil die Servos nicht funzen.
Also wie gesagt ich werde noch verückt!!!!!

vielen Dank für die tips vieleicht hat ja einer noch nen rettenden
Einfall.

viele Grüsse

PS
nur noch mal fürs Protokoll wenn man den AVR in eine Andere Platine
einsetzt geht Alles! und ich baue eigentlich alle Platinen gleich
auf,was sachen angeht wie Reset,Versorgungspannung,Ablockkondensatoren
usw.

von Achim (Gast)


Lesenswert?

...also die Schaltung zieht 0.02 Ampere....

von anfänger (Gast)


Lesenswert?

dann poste mal den schaltplan

von Achim (Gast)


Lesenswert?

HALLO,
ich denke das kann nicht Schaden muesen allerdings weiss ich nicht wie
das geht,ich kenne mich mit eagle oä nicht aus.
Der Schaltplan ist weitsetgehend mit dem aus dem AVR Tutorial
identisch.
AVCC,VCC und AREF sind verbunden und mit einen 100n kerko gegen Masse
gelötet.
Den 47p Kerko habe ich wegelassen und es gibt einen Reset Taster.
Also Die Platine hat Stromversorgung,ISP,und einen Externen
Taktgeber,mehr nicht(ok eine LED).

Falls das jemanden was sagt; der Waitms 500 (soll 0,5 sec warten)
wartet ungefähr eine Sekunde.Also Faktor 2!?!?!??!!.
Wenn man die Codezeile "$crystal = 8000000" ändert,ändert sich diese
Zeitverzögerung nicht!!!.
Ich weiss das alles dafür spricht das der Interne Oszi an ist aber der
Chip ist 100% auf extern gestellt...er reagiert in einer Schaltung mit
Quarz NICHT.

gruss

von Achim (Gast)


Lesenswert?

...sorry aus versehen 2 mal gepostet...

von Achim (Gast)


Lesenswert?

Hallo,
ich bins Nochmal.Ich habe das Problem Isoliert,wenn auch nicht gelöst.
Wenn ich Folgende Zeilen auskomentiere:
------------------------------------------------------
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10
Enable Interrupts
------------------------------------------------------

Funktionieren die Delay Funktionen Tadellos, und sogar genau doppelt so
schnell wenn ich 4mhz(anstatt der vorhandene 8mhz) angebe.

Nun da ich gerne Servos ansteuere hilft mir das nicht viel weiter.
Aber vieleicht hat jetzt jemand durchblick.

mfg

Achim

von Achim (Gast)


Lesenswert?

...wenn man nur die Config Servos Zeile weglässt tuts auch alles...
....das verstehe wer will

von anfänger (Gast)


Lesenswert?

setz die mal woanders im code ein. vielleicht is das ja irgendn bug.

von anfänger (Gast)


Lesenswert?

ähm, theorie:
durch den ständigen interrupt, der aufgrund der servo-sache ausgelöst
wird, wird der wait-befehl ständig "unterbrochen". dadurch dauerts
halt was länger, bis er abgearbeitet ist.

würde allerdings nicht erklären, warum der so programmierte controller
in ner anderen schaltung einwandfrei läuft...und ich weiß auch nicht,
ob bei der servogeschichte überhaupt interrupts ausgelöst werden :)

von Achim (Gast)


Lesenswert?

...woanders einsetzen bringt nix :(
...ja also servos brauchen laut bascom hilfe Interrupts....
...und Servos machen auch nicht was sie sollen...:(

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.