PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega32 -> Port C Fehler?



lpw
13.09.2007, 16:18
Ich habe ein Programm für den Atmega32 geschrieben, das Funktioniert aber nur bei PortA, bei PortC waren die Pins C2, C3 und C5 immer auf High.
Da Dachte cih, ok, vielelciht ist das Teil kaputt, hab ich mir einen neuen Atmega32 gekauft (und den alten zurück gegeben) aber dabei hab ich genau dasselbe Problem.
Ist am PortC irgendwas besonders, das diesen Fehler rechtfertigt, oder ist das ein Produktionsfehler (meine Lötstellen hab cih 100 mal nachgemessen...)?
Und, wie kann ich den Fehler beheben, oder muss ich umlöten?

Hier das Programm:

#include <avr\io.h>
int main()
{
DDRC = 0xff; // PORTa = Ausgang
unsigned int schritte[4]; //Definiere 4 Schritte
schritte[0] = 0x11;
schritte[1] = 0x22;
schritte[2] = 0x44;
schritte[3] = 0x88;

while (1)
{
unsigned long i;
unsigned long j;
for (i=0; i < 4; i++)
{
PORTC = schritte[i]; // PORTa = Einstellung
for (j=0; j < 100000; j++)
{
}
}
}

return 0;
}

Hubert.G
13.09.2007, 16:28
Ich hoffe du hast nicht vergessen den JTAG zu disablen.

lpw
13.09.2007, 17:33
Wenn du mir jetzt noch erklärst, was das ist, kann ich dir ne Antwort geben.

P.S.:Hät ich vielelciht sagen sollen, ist mein erstes C und mein erstes MicroController Projekt.

Hubert.G
13.09.2007, 18:12
Ich weiss nicht womit du den Mega32 programmierst, welchen Programmer, aber du musst in den Fuses den JTAG disablen.

CsT
13.09.2007, 18:13
Du musst die sogenannten Fuses einstellen. Du hast im Moment JTAG aktiviert; dies belegt die von dir genannten Ports. Deaktivierst du JTAG hast du dieses Problem nicht. Anleitung zum ändern / was Fuse-Bits sind: https://www.roboternetz.de/wissen/index.php/AVR#Die_Fusebits

Grüße CsT

lpw
13.09.2007, 19:04
Ich benutzte AVR Studio 4, das war bei meinemAVRISP MKII dabei.
Was ich jetzt für ein Problem habe ist, dass seit ich das ändern wollte (also auch beim ändern) er immer einen error wirft beim beschreiben des flash Speichers:
<code>A problem occured when executing the command. See the command output for more info.

Tip: Check that the ISP programming frequency specified on the 'Board' page is well below 1/4 of the clock frequency of the device. Extra precaution should be made when using the CKDIV fus and/or Clock Prescaler Register (CLKPR) on parts supporting this. If this does not help, check your connections.

See the troubleshooting section in the help system section for more information on what may have caused the problems.
</code>
Versucht habe ich aber Frequencys zwischen 6,48 kHz und 4MHz, und nichts funktioniert.

Ich benutzte den Schaltplan aus AVR-Einstieg leicht gemacht (https://www.roboternetz.de/wissen/index.php/AVR-Einstieg_leicht_gemacht). Mit Spanungswandler aber ohne externen Quarz.

Hubert.G
13.09.2007, 22:48
Da fürchte ich hast du die falschen Fusebits verstellt. Ein Fehler den viele machen. Wenn du nur das Lock-Bit gesetzt hast dann musst du den µC löschen dann gehts wieder. Wenn du die Taktquelle umgestellt hast dann musst du einen Takt an XTAL1 anlegen um wieder programmieren zu können. Funktioniert das Programm noch das drinnen ist? Wenn nein, dann ist es die Taktquelle.

lpw
14.09.2007, 17:24
Hab ich aber nicht, wie gesagt, ich bekomme den Error befor er anfängt zu programmieren. Außerdem, in ich mir recht sicher, das ich sonst ncith verstellt hab.

CsT
14.09.2007, 18:33
Und funktioniert das Programm noch, dass du zuvor aufgespielt hast? Oder hattest du nie eins aufgespielt?

Grüße CsT

lpw
15.09.2007, 09:20
Das Programm funktioniert, es ist das oben, nur ahlt einige Ports sind immer an oder immer aus...

lpw
28.09.2007, 18:07
Danke, das mit dem JTAG wars.
Beim dritten gehts jetzt (der erste war wohl auch heil).
Nochmal vielen Dank.