Die einfachste Frage wäre: Woran merkst Du, daß es keine 72kHz sind und kannst Du schätzen welche Frequenz es ist?
Manfred
Hallo,
ich will mit diesem Code eine Frequenz von 72khz erzeugen:Der Werte sind mit dem Tool von dieser Seite berechnet.Code:$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
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/image...a8-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
Die einfachste Frage wäre: Woran merkst Du, daß es keine 72kHz sind und kannst Du schätzen welche Frequenz es ist?
Manfred
Ich hab hier so ein Voltcraft Multimeter mit dem ich Frequenzen messen kann.
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
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
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.
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.
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.
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.
Das war bei mir auch so, aber wenns es länger dauert bis die Fehlermeldung kommt scheint der Dealy an sich ja zu funktionieren.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
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.
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.Der PC ist halt kein sauberer Controller sondern inzwischen ein undurchsichtige Blackbox die keiner mehr durchschaut.
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.
Lesezeichen