PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : komische Frequenz



Spurius
23.09.2004, 15:06
Hallo,
ich will mit diesem Code eine Frequenz von 72khz erzeugen:


$regfile = "m8def.dat"
$crystal = 1000000
$baud = 9600
Config Timer0 = Timer , Prescale = 1
Config Pinb.1 = Output
Led3 Alias Portb.1
On Timer0 Timer_irq
Const Timervorgabe = 242
Enable Timer0
Enable Interrupts
Do
Loop
Timer_irq:
Timer0 = Timervorgabe


Toggle Led3

Return

Der Werte sind mit dem Tool von dieser Seite berechnet.
An Pin b.1 liegt zwar eine Frequenz an, aber keinesfalls 72 khz.
Ich hab auch schon versucht, den ATMega8 mit 4Mhz zu betreiben, aber da kommt auch nix gescheites zustande. Für die $Mhz hab ich die Fusebits so gesetzt:
http://www.mikrocontroller.net/images/atmega8-nachher.png
Wisst ihr vllt, was ich da falsch mache? Meine ISP-Verbindung ist übrigens nicht ganz in Ordnung, der Kontakt zum Controller bricht immer wieder ab und lässt sich dann nicht mehr herstellen, plötzlich funktioniert es wieder. Ich weiss nicht, ob der Controller nicht richtig in der Fassung sitzt oder warum das so ist. Jedenfalls hab ich mir jetzt den ISP-Programmer von Robotikhardware bestellt.
Also ich hoffe ihr könnt mir helfen.
Gruß
Spurius

Manf
23.09.2004, 15:17
Die einfachste Frage wäre: Woran merkst Du, daß es keine 72kHz sind und kannst Du schätzen welche Frequenz es ist?
Manfred

Spurius
23.09.2004, 15:20
Ich hab hier so ein Voltcraft Multimeter mit dem ich Frequenzen messen kann.

Michael
23.09.2004, 15:22
Hallo Spurius,
hmmm, welche Frequenz hast du denn geschafft? Du schreibst dazu nichts:(
Wahrscheinlich liegts daran:
Const Timervorgabe = 242
der Wert ist wohl zu hoch. Es bleiben gerade mal 14 Takte übrig. Das reicht nicht, um in den Interrupt zu springen, den Timer und den Port zu bedienen und den Rücksprung zu schaffen.
Ich selbst habe nicht mehr als 35kHz geschafft, bei 8 MHz.
Gruß, Michael

Spurius
23.09.2004, 15:31
Hallo,
ich glaube so um die 30 khz bei interner Taktfrequenz und 125 khz bei 4Mhz extern. Ich krieg grad leider keine Verbindung zum Controller :(

Spurius
23.09.2004, 16:26
Hallo,
also das mit der Frequenz kann jetzt erstmal warten, mein Problem ist, dass ich den Controller zwar von Zeit zu Zeit ansprechen kann, wenn ich dann jedoch das Programm reinschreiben will, kommt Error. Ziemlich seltsam, weil auch wenn ich den Controller nicht anfass es mal geht und mal nicht. Jetzt ist die Frage ob es am ISP-liegt (ist was ganz einfaches mit ein paar Widerständen) oder ob was mit dem Controller nicht stimmt.

ProgDom
23.09.2004, 17:41
Genau das gleiche habe ich auch ! Bei mir hat alles funktioniert, dann habe ich die Fusebits wie oben geändert und es wurde immer schwireirger eine Verbindung zum Controller zu bekommen, bioc ich gar keine mehr hatte. Jetzt habe ich es mit einem neuen Controller probiert. Das erste Mal, alles bestens, ich erkenne ihn usw. Dann Fusebits umgestellt und jetzt kann ich ihn nicht mehr lesen. Ich habe jetzt nur noch einen Atmega8 und möchte den nicht auch noch zerstören ! Woran liegt es ?
Ich habe schon einmal gefragt, ob es an den Fusebits leigt, aber angeblich liegt es nicht daran. Ich habe auch kein tolles ISP, aber es ist nur 1m lang, also kurz genug, das ich auch ein schlechteres (marke Eigenbau) benutzen kann.
Störquellen kann ich ausschließen, defekte Teile auch.

recycle
23.09.2004, 19:30
Mit externem Quarz und somit höherer Controller-Frequenz wird glaube ich auch die ISP-Übertragung empfindlicher gegen Störungen.
Bei einem selbstgebauten ISP oder einem schlecht abgeschirmten Verlängerungskabel am ISP könnte iich mir schon Vorstellen, dass sich Übertragungsprobleme erst mit höherer Frequenz bemerkbar machen.

Vielleicht liegts auch an irgendeinem PRogramm oder Treiber auf dem PC.
Ich habe neulich meinen Rechner neu installiert und plötzlich funktionierte das Hochladen von Programmen in den µC auch nur noch sporadisch.

Nach langem Suchen habe ich dann festgestellt, dass es an einem Tool lag, dass bei der Treiberinstallation von meinem alten Flachbett-Scanners installiert wurde. Das Tool überwacht den Parallelport um festzustellen ob der Deckel von dem Scanner geöffnet wird. Beim Zugriff auf den Parallelport hat es dann wohl meine ISP Verbindung gestört.

Das Symptom war ähnlich wie bei euch. Meist konnte Bascom den Controller erst gar nicht erkennen, und wenn er nach zig Versuchen erkannt wurde, blieb die Datenübertragung meist auf halber Strecke hängen.

In Bascom gibt es für Parallele ISPs auch auch eine Einstellung "Port Delay". Die ist wohl für Probleme mit zu schnellen Rechnern gedacht. Vielleicht hilft es ja da mal ein paar Werte auszuprobieren.

Frank
23.09.2004, 23:12
Das mit der höheren Frequen hab ich auch schon so festgestellt. In der Regel ist die Übertragung da oft etwas anfälliger. Allerings nicht immer. Ich habe auch schon Phasen gehabt, da klappt es bald Wochenlang fast völlig ohne Übertragungsfehler. Dann gibt es Phasen das muss man drei Versuche starten.
Das mit dem Port Delay hab ich schon mal ausgetestet, das hat bei mir nichts gebracht, außer das ich länger auf die Fehlermeldung warten mußte :-)
Aber es kann schon möglich sein wie es recycle erzählt hat. Irgrend ein Task im PC kommt bei de rÜbertragung in die Quere. Vielleicht ist auch einfach die Übertragungsroutine im PC nicht ganz so optimal geschrieben, so das irgendwelche Interrupts das Timing durcheinander bringen.
Der PC ist halt kein sauberer Controller sondern inzwischen ein undurchsichtige Blackbox die keiner mehr durchschaut.

recycle
24.09.2004, 01:52
Das mit dem Port Delay hab ich schon mal ausgetestet, das hat bei mir nichts gebracht, außer das ich länger auf die Fehlermeldung warten mußte :-)
Das war bei mir auch so, aber wenns es länger dauert bis die Fehlermeldung kommt scheint der Dealy an sich ja zu funktionieren.
Wenn die Probleme wirklich daran liegen, dass der PC die Daten zu schnell sendet, könnte es also helfen - und wenn nicht ist die Einstellung ja schnell rückgängig gemacht.

Das Blöde bei Übertragungsproblemen ist, dass man die Ursache meist erst mal auf seiner Controllerschaltung sucht, und erst ganz zuletzt auf die Idee kommt, dass es auch am PC liegen könnte.

Ich hatte schon öfter Probleme mit der Verbindung zum Controller und letzendlich hat sich aber immer rausgestellt, dass es am PC lag.
Mal wars ein Tool, das auf den Parallelport zugreift, mal hat Windows eine DLL gekickt, mal funktionierte es nach einem Neustart von Windows ganz von alleine wieder.



Der PC ist halt kein sauberer Controller sondern inzwischen ein undurchsichtige Blackbox die keiner mehr durchschaut.
Ich glaube wenn Windows nicht sämtliche Interrupts, DMAs, Adressen usw. die man im Bios einstellt abblocken oder irgendwie umbiegen würde, wäre das alles nur halb so schlimm.

Aber so bleibt einem leider meist nichts anderes übrig als blind herumzuprobieren.
Wenn irgendwo noch ein zweiter Rechner greifbar ist, würde ichs auch immer erst mal damit probieren, bevor ich den ISP austausche oder die µC-Schaltung zerpflücke.

Spurius
26.09.2004, 17:58
Hm, und wie krieg ich jetzt die 72khz hin? Weil ich brauch mit 36khz moduliertes IR-Licht. Und mit dem COde oben klappts nicht :(

DrZoidberg
26.09.2004, 18:57
Wenn der Timer Interrupt zu langsam ist, dann musst du es halt ohne den Interrupt machen. Also in einer Endlosschleife.

Wieso erzeugst du die 36kHz nicht mit einem anderen Bauteil und modulierst es dann mit einem Transistor, der an den uC angeschlossen wird?

Es gibt aber auch spezielle ICs für IR Übertragung. Damit dürfte es zuverlässiger funktionieren.

Spurius
27.09.2004, 17:17
Wie meinst du dass mit Endlosschleife? Kann der Controller dann nichts anderes amchen?

DrZoidberg
28.09.2004, 17:22
Doch. Er kann gleichzeitig mehrere Sachen machen. Die musst du dann aber selbst innerhalb der Endlosschleife koordinieren.
Aber was spricht dagegen die 36 kHz z.B. mit einem NE555 zu erzeugen?

Spurius
28.09.2004, 17:28
Hast du da vllt ne Schaltung parat? Sonst google ich.

Spurius
03.11.2004, 12:59
Hallo,
ich hab mittlerweile eine Schaltung mit dem Ne555 aufgebaut. Ob der allerdings die Frequenz richtig erzeugt weiss ich nicht.
Der TSOP den ich verwende spricht auf die Frequenz schon an, aber die Spannung liegt bei ungefähr 4,8V wenn er moduliertes IR-Licht empfängt und bei ungefähr 3,6V wenn er keins empfängt. Ist das richtig so?

MrQu
03.11.2004, 21:33
Hallo und Guten Abend an Euch, *:-)*

mir ist beim lesen dieses Beitrages aufgefallen, das Ihr alle ab und zu Probleme mit dem Konekt zum Kontroller (bzw. ISP) habt.

Welches Betriebssystem verwendet Ihr den??? (WIN95, WIN 98, ME, ..., XP)

Gruß Manuel