schick mal bitte deine schaltung!!!
Guten Abend,
ich habe eine kleine Schaltung mit einem ATmega8 gebastelt.
Als Takt benutze ich den internen RC-Oszillator ( 8MHz ), leider muß ich nach fast jedem Power on erst einen manuellen Reset durchführen, damit die Ports korrekt initialisiert werden und die Schaltung wie gewollt funktioniert.
Hat jemand eine Idee was das sein könnte?
Ich habe verschiedene ATmega8 ausprobiert, bei allen das gleiche Problem.
Es ist auch nicht so, das der µC garnicht arbeitet, eine in der Programmschleife eingearbeitet Led blinkt und signalisiert Aktivität.
MfG Hansi
schick mal bitte deine schaltung!!!
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
Die Schaltung ist nicht kompliziert, ich beschreide Sie am besten mal kurz:
Der ATmega arbeitet als I2C-slave, angeschlossen an einem rn-control-Board.
Über den I2C-Stecker vom rn-controlboard wird die Schaltung mit 5V versorgt. Den Resetpin habe ich über 10KOhm an VCC geklemmt.
Außer SDA/SDL sind die Ports Portc.3 / Portc.4 beschaltet, an dem einen ist ein Funkempfänger und an dem anderen ein Sender.
Das Modul benutzt die Funksignale des FS20-Funksystems von ELE / Conrad-Elektronik. Funke und Empfang klappen einwandfrei, auch der Datentransport über TWI arbeit super, bis auf den einen Manko mit dem "Anlauf". Ich habe in einer Do/Loop schleife eine Led ( Portd.4 ) eingebaut, manchmal blinkt die Led wie sie soll, aber Empfänger geht nicht oder Sender geht nicht, oder TWI funzt nicht , manchmal bleibt die Led auch aus. Die einzige Erklärung ist für mich, das die Ports nicht korrekt initialisiert werden. Wie geschrieben, nach Reset ( ohne Spg.-Abschaltung ) funzt es.
Gruß Hansi
...ähmm, soweit ich weiss taktet der interne Oszillator doch nicht mit 8Mhz sondern nur mit 1 Mhz. Vielleicht da mal gucken...
und du hast nicht zufällig nen schaltplan?
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
der Takt des internen Oszillators beim ATMEGA8 ist variabel, man kann 1, 2, 4 oder 8MHz einstellen...ähmm, soweit ich weiss taktet der interne Oszillator doch nicht mit 8Mhz sondern nur mit 1 Mhz. Vielleicht da mal gucken...
@x-ryder,
die Beschreibung entspricht doch dem Schaltplan. Es funktioniert ja auch,
nur der Power-on Reset arbeit wohl nicht wie gewollt.
Ich habe bisher nur ATmega8L ( 2,7V bis 5,5V ) einer Serie verwendet.
Heute wurden andere ATmega8 ( andere Serie ) geliefert die ich testen werden. Zusätzlich werde ich den Resetpin über einen 100nF Kondensator
auf low ziehen. Mal schauen ob das hilft.
Ich werde mich heute Nachmittag diesbezüglich wieder melden.
Gruß Hansi
So, ich habe nun den Resetpin zusätzlich mit dem Kondensator beschaltet
und einen ATmega8 16PI ( Industrie mit erweitertem Temp.-Bereich )
eingesetzt.
Der Erfolg: Fehler tritt anscheinend etwas seltener auf, aber er tritt auf.
Bye Hansi
PS.:
Kann ja leider nicht reingucken, ob der TWI nur nicht arbeitet oder die Ports nicht etsprechend Eingang/Ausgang initialisiert sind.
Programmiert habe ich die Sache mit dem Bascom-AVR mit Inline Assembler
Ach so, vieleicht noch als Zusatz-Info.
Wenn Daten empfangen werden, dann hört bedingt durch die Auswertzeit die Led kurz auf zu blinken. Das ist manchmal nicht der Fall, weshalb ich darauf schließe, das der Port garnicht gelesen wird.
Das gleiche gilt auch für das senden.
Bei einem manuellen Reset wird nur der ATmega8 resetet, nicht die Sende- / Empfangsmodule weshalb ich einen Fehler dieser Module ausschließe.
Gruß Hansi
Ich bin jetzt zu einer neuen Erkenntnis gekommen.
Wenn das Empfangsmodul nicht eingesteckt ist funzt es richtig, zumindest der für das Senden zuständige Teil.
Das Empfangsmodul liefert auch schon während des Resets Impulse an
Pinc.3 , kann der Fehler damit zusammen hängen?
Wird durch die Impulse der Programmiermodus oder ähnliches eingeleitet?
MfG Hansi
Lesezeichen