Timing Probleme beim AVR mega16

Gast #118092
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
Gast #118093
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
Gast #118094
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
Gast #118096
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
Gast #118098
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.
Gast #118101
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
Gast #118103
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
Gast #118106
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 :)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren