PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATmega8 läuft nicht ???



Gucky
10.06.2007, 22:15
Hallo.
Ich habe vor einigen Jahren erfolgreich Prozessorschaltungen mit den Mikroprozessoren 8085, 8031 und anderen aufgebaut, in Assembler programmiert und bei Bedarf auch Fehler mit einem Scope gesucht.
Nun wollte ich mich mit einem moderneren Prozessor befassen und habe meine Testschaltung mit einem ATMEL Atmega8L auf einer Lochrasterplatine aufgebaut, die ich Schritt für Schritt während des Aufbaus getestet habe : 5V-Spannungsversorgung, Resetimpuls....
Bei der mit einem Quarz erzeugten 16MHz Taktfrequenz konnte ich an den Pins 9 bzw. 10 keine Frequenz mit dem Scope feststellen.

Hier meine angeschlossenen Pins :

7(VCC) und 20(AVCC) = +5V vom 5V-Spannungsregler
8(GND) und 22(GND) = 0V
1(Reset/) über einen 1uF-Kondensator nach GND und über einen 6,8K-Widerstand nach VCC
9 und 10 an 16MHz-Quarz und mit je einem 15pF-Kondensator nach GND.

Meiner Meinung nach müsste nach dem Anlegen der Versorgungsspannung an den Pins 9 oder 10 mit dem Scope eine Frequenz messbar sein oder habe ich noch was vergessen anzuschließen oder schlage ich mich hier mit einem Denkfehler rum ?

Kann mir hierzu jemand was sagen ?

Gruß Gucky.

robocat
10.06.2007, 22:44
zum einen ist ja (bei neuem µC) als standard der interne takt (1MHz) eingestellt, also schon mal die frage, ob da überhaupt was schwingt. zum anderen kann es durchaus sein, dass die schwingung durch dein oszi zusammenbricht.

ansonsten sollte dein aufbau in ordnung sein. ich würde einfach mal versuchen, ein programm einzuspielen und eine led blinken lassen.

gruesse

Dnerb
10.06.2007, 22:54
Tippe auf die Fuses. robocat hats ja schon geschrieben. Wenn der interne Takt eingestellt ist, dann schwingt der Quarz nicht an.

Gucky
10.06.2007, 23:07
Danke für die schnellen Antworten.
Werde mal versuchen, in kleines Programm zu schreiben und zu übertragen.
Aber jetzt nicht mehr.

Gruß Gucky. 8-[ O:)

Gucky
24.06.2007, 18:16
Hallo,

Hab jetzt mal einen einfachen seriellen Adapter aufgebaut um das Programm der blinkenden LED zu übertragen.
Hierzu benutze ich z.Zt. das AVR Studio 4 zum Assemblieren und das Ponny2000 zum übertragen.
Anfangs hatte ich noch meine schwierigkeiten, da ich keine Verbindung zum Controller hinbekam. Nach einigen Tests habe ich die Übertragung durch das negieren der /RST-Leitung hinbekommen.
Danach habe ich etwas mit den Registern CKSEL0...3 rumgespielt und jetzt geht gar nichts mehr, ich bekomme einfach keine Verbindung mehr hin. Aus lauter Verzweifelung habe ich mir dann noch ein Paralleles Programmierkabel gebaut, womit ich aber auch keinen Erfolg hatte.
Habe ich den Controller geschrottet, oder gibt es noch etwas, was ich probieren könnte ?

Gruß Gucky O:)

Rofo88
24.06.2007, 19:53
Wenn Du nur an den CKSEL0...3 rumgespielt hast is der Controller noch in Ordnung. Da Du nen Quarz drann hast wirst Du sicherlich auf external Clock (0000) oder external RC gegangen sein also an den Pin XTAL1 ein Taktsignal ranlegen und dann sollte es gehen.


MfG RoFo88

Gucky
24.06.2007, 20:33
Hallo Rofo88,

ich habe zwar einen Quarz eingebaut, aber den Controller noch nicht umgestellt. Der laüft (lief) noch auf den internen 1MHz.
Beim probieren habe ich glaube ich 4 MHz eingestellt. Das klappte noch einige Zeit, bis ich den Controller nicht meht ansprechen konnte. Ich habe mich hier im Forum auch umgesehen, aber leider nicht wirklich eine befriedigende Antwort gefunden.
Ich probiere dann mal den externen Takt. Muß Ich dann beim Übertragen mit dem PonnyProg irgendwas beachten oder einstellen ?

Gruß Gucky. O:)

Gucky
25.06.2007, 19:28
Hallo Rofo88,

dein Tip mit dem externen Takt war super. Ich habe mich mit den Einstellungen bei den Statusbits im PonyProg vertan. Ist etwas ungewohnt da ein gesetzter Haken "0" bzw. ein leeres Kästchen eine "1" bedeutet. Muß wohl etwas vorsichtiger mit diesen Bits umgehen müssen.
Werde mir auch einen etwas besseren Programmieradapter bauen, weil ich ab und zu Schwierigkeiten mit der Übertragung habe.

Gruß Gucky. O:)

wkrug
25.06.2007, 21:52
Nun wollte ich mich mit einem moderneren Prozessor befassen und habe meine Testschaltung mit einem ATMEL Atmega8L
Äh ein ATMEGA 8 L8 läuft doch nur mit maximal 8MHz wenn ich mich nicht irre ?
Also auch wenn Du die Fuses umstellst (guckst Du http://palmavr.sourceforge.net/cgi-bin/fc.cgi ) kann es sein das dein ATMEGA 8 nicht funktioniert.
Im schlimmsten Fall kannst Du das Teil nach dem Umstellen der Fuses nicht mehr proggen.
Also entweder nimmst Du eine ATMEGA 8- 16 oder Du nimmst einen 8MHz Quarz mit 22pF Belastungskondensatoren (27pF gehen auch).

Gucky
26.06.2007, 06:54
Hallo wkrug,

ich benutze auch einen ATMEGA8-16, bin leider aufgrund der vielfältigen Controllerbezeichnungen etwas durcheinandergekommen.
Dein Link zu den Fuses habe ich probiert und als Favorit abgelegt.
Leider ist der 16MHz-Controller nicht eingetragen, die Angaben sind für mich aber verständlicher als im Datenblatt.
Den 16MHz-Quarz und die Kondensatoren habe ich in rausgerissen, weil ich hier ein defektes Bauteil oder eine andere Fehlerquelle vermutete. Werds irgendwann nochmal mit dem Quarz probieren. Zum rumspielen und testen reich mir der interne Takt jedoch völlig aus.

Gruß Gucky. :?

wkrug
26.06.2007, 16:27
Leider ist der 16MHz-Controller nicht eingetragen
Der ATMEGA 8 ist aber drin.
Die Fuses sind bei der 8Mhz Variante und der 16MHz Variante gleich.

Gucky
27.06.2007, 09:39
Danke wkrug für die Info. Das hab ich mir auch schon gedacht, weil das Datenblatt für beide Controller ja auch gleich ist.
Ich habe bisher noch das Problem mit der Übertragung vom PC auf den Controller.
Wenn es nicht funktioniert, muß ich den ISP-Stecker an meinem Testboard abziehen, das PonyProg neu starten und den ISP-Stecker wieder draufstecken.
Ich habe mich für die 10polige Variante entschieden und die GND-Pins länger als die Signalpins gelassen, damit ich mir nicht beim Stecken unter Spannung (bin in dieser Hinsicht etwas faul) durch diverse Ausgleichsströme etwas zerschieße.
Wenn ich das Datenblatt richtig interpretiere, sollte ein interner Takt von 8MHz bzw. 16MHz möglich sein.? Das habe ich durch verstellen der Bits CKSEL0...3 noch nicht hinbekommen. Ab 4 MHz geht bei dem Controller nichts mehr.
Anhand der doppelt so schnell blinkenden LED sehe ich, daß ich die Bits richtig eingestellt haben sollte.

Gruß Gucky. :wink:

Gucky
13.07.2007, 20:06
Hallo,
nach mehreren Testaufbauten einem neuen ATmega8 und einem selbstgebauten seriellen Programmieradapter mit 2x MAX232 habe ich nun meine ersten Erfahrungen gemacht.
Ich habe PortB mit Leuchtdioden bestückt, die ich mit verschiedenen Programmen leuchten lassen kann. (Lauflicht, Blinklicht...)
Nun wollte ich ein paar Schalter an PortD anschließen und die Schalterpositionen auf PortB ausgeben. Die Schalter schalten +5V, das Port selber habe ich mit PullDowns (3,3K) nach 0V gelegt. Dazu habe ich mehrere kleine Programme geschrieben, wovon das unten abgebildetet das letzte ist.
Ich habe es bisher nicht geschaft, die Schalterstellungen entsprechen anzuzeigen.
Kann mit jemand sagen, was ich falsch mache ?

Gruß Gucky. O:)

************************************************** *************************
.include "m8def.inc" ; Definitionen für ATmega8
.org 0x0 ; Reset-Vektor
rjmp Reset ;Reset Handle
;************************************************* **************************
.org 0x13
Reset: ldi r16, low(RAMEND) ;init stack to pointer to RAMEND
out spl, r16
ldi r16, high(RAMEND)
out sph, r16

ldi r16, 0xff ;configure PORTB as output
out ddrb, r16
out portb, R16 ; Alle Bits von PortB setzen = alle LED's aus

;ldi r16, 0x00 ; Port C als Eingang konfigurieren >???
;out ddrd, r16

wait2: in r16, portd ; Inhalt vor PortD nach R16
out portb, r16 ; und auf PortB ausgeben
rjmp wait2

uwegw
13.07.2007, 20:21
Um den Eingangsstatus zu lesen, muss PINx und nicht PORTx abgefragt werden.

Gucky
14.07.2007, 18:55
Danke uwegw.
Hab ich gerade probiert und funzt.
Muß ich die Ports nach einem Reset mit z.B. "out ddrx, r16" als Eingang definieren, oder passiert dieses beim Reset automatisch ?