Atmega8 delays

OP #2552801
Hallo zusammen,
leider gibt es keinen Infrarot Timer Remote für meine Kamera, deshalb 
wollte ich mir einfach sowas selber bauen. Dafür habe ich mir einen 
Atmega8 geleistet und das Signal mittels der delay Funktion 
nachgebildet. Jetzt hab ich aber das Problem das die gemessenen Zeiten 
am Port viel länger sind. Ich habe keinen externen Quarz angeschlossen 
und im AVR Studio auch schon mit den Fuses rumgemacht aber das hat auch 
nicht den gewünschten erfolg gebracht. Bestimmt könnt ihr mir 
weiterhelfen ;)
Danke im vorraus

es grüßt
der Patrick
Hmm. Eigentlich wird der CPU-Takt gleich in main in der (fast) ersten 
Zeile festgelegt, noch vor den Includes... sonst holt er sich nämlich 
einen vordefinierten.

Oder irgendwo anstatt durch 1024 durch tausend geteilt...?
Oder läuft' n zu langer Interrap? Das ist mir mal passiert.
Gast
>Aber 1Mhz sollte doch reichen um 12.5µs auszugeben oder?

Wie soll denn die halbe Microsekunde zustande kommen
wenn ein Assembler Befehl schon eine ganze Microsekunde braucht?
Gast
Patrick R. schrieb:
> Aber da hab ich es eher mit ausprobieren und nem ziemlich geilen Oszi
> hingekrigt.

Dann schreib doch erstmal ein paar Befehle in den ATmega8, die ohne 
Delays und irgendwelchen Schnick-Schnack einen Port-Pin einfach nur zum 
Wackeln bringen und miß mit deinem geile Oszi nach, ob das mit deinen 
Vorstellungen und denen des Simulator konform geht.
OP
Michael schrieb:
> Dann schreib doch erstmal ein paar Befehle in den ATmega8, die ohne
> Delays und irgendwelchen Schnick-Schnack einen Port-Pin einfach nur zum
> Wackeln bringen und miß mit deinem geile Oszi nach, ob das mit deinen
> Vorstellungen und denen des Simulator konform geht.

Das Problem ist, das es nicht mein geiles Oszi ist und ich da nicht so 
oft ran komme.
Gast
also soweit ich weiss kannst du den CPU-Takt per SW nicht festlegen 
sondern nur per externen Quarz....wie man die ggf vorhandenen internen 
quarze einschalet....kp

wenn es anders sein sollte, will ich nichts gesagt haben.
Gast
>wie man die ggf vorhandenen internen
>quarze einschalet

Ich hab jetzt schon hunderte von uC aufgefräst, aber einen
internen Quarz habe ich nicht gefunden. Wo sind die?
Wo muss ich suchen?
OP
Walter S. schrieb:
> hast du die Meldung vielleicht ignoriert?
> Warning  1  #warning "Compiler optimizations disabled; functions from
> <util/delay.h> won't work as designed"

also Warnungen sind keine aufgetaucht, aber ich hab jetzt mal mit den 
Optimizations gespielt und bin jetzt der Lösung deutlich näher, aber die 
Kamera löst immer noch nicht aus, d.h. die Zeiten die ausgegeben werden 
sind immer noch nicht identisch mit denen im Quellcode.
Gast
ansonsten hätte ich ganz prakmatisch gesagt klemm nen oszilloskop dran 
und schau ran was rauskommt. da du denke ich mal aber selbiges nicht 
hast wprde ich versuchen den verzögerungsfaktor des singals hochzudrehen 
und eine led dranklemmen.....umzugucken ob da überhaupt was gescheites 
ankommt..... oder ob es an was anderes liegt.

einstreuendes licht von einer leuchtstoffröhre falshgepolte bauteile 
oder sonst was.
Gast
holger schrieb:
> Ich hab jetzt schon hunderte von uC aufgefräst, aber einen
> internen Quarz habe ich nicht gefunden. Wo sind die?
> Wo muss ich suchen?

war die frage jetzt ernsthaft gemeint? ok ich habe mich nicht korrekt 
ausgedrückt soviel ich weiss haben die meisten amtegas einen internen 
oszillator. (und keinen quarz wie ich oben behauptet habe)

den man mit hilfe der fusebust ein stellen kann

http://www.google.de/#sclient=psy-ab&hl=de&source=hp&q=atmega+interner+oszillator&pbx=1&oq=atmega+interner+os&aq=0&aqi=g1&aql=&gs_sm=3&gs_upl=9918l10202l2l11331l2l2l0l0l0l0l380l380l3-1l1l0&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=c2b540a2117ea26e&biw=1680&bih=911
Gast
>Au weija, wieder ein Thread mit Nullblickern und Ironielegasthenikern.

Klar, der OP hat nur noch nicht gerafft das das

-SUT_CKSEL INTRCOSC_1MHZ_6CK_64ms

wohl kaum geeignet ist um exakte Zeiten im us Bereich auszugeben.

_delay_us(12.5);

Das geht damit einfach nicht.

Also: Internen Takt mal auf 8MHz schrauben oder
einen 16MHz Quarz dranpappen. Dann sieht die Welt
gleich viel besser aus.

Und wenn man die IR Ausgabe mit einem Timer macht
dann sieht es noch viel entspannter aus.

Oder in der Codesammlung mal nach IRMP suchen.
Da kann er sich vieleicht ein paar Anregungen holen.
Gast
holger schrieb:
> Klar, der OP hat nur noch nicht gerafft das das
>
> -SUT_CKSEL INTRCOSC_1MHZ_6CK_64ms
>
> wohl kaum geeignet ist um exakte Zeiten im us Bereich auszugeben.


Dass das mit dem delay_us(12.5); nicht funktionieren kann ist klar. Das 
bedarf keiner Diskussion. aber warum hast du das
> -SUT_CKSEL INTRCOSC_1MHZ_6CK_64ms
gepostet? ist der interne Quarz so ungenau? ich versteh den Zusammenhang 
nicht.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.