PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATmega32 funktioniert inkorrekt



Foooob
18.02.2006, 15:58
Hallo

Bei mir hat sich folgendes Problem herausgestellt.
Mein Mega32 lässt sich zwar problemlos flashen und auch die Fuse-/und Lockbits lassen sich konfigurieren aber der AVR führt meinen Code nicht richtig aus oder der Code ist falsch. Sicher kann ich es nicht sagen.

Wenn ich folgenden Code aufspiele





$regfile = "m32def.dat" 'ATmega32
$crystal = 11059200 'Quarz: 11059200 Hz

Ddrc = &B00000000 'IRs als Eingänge
Ddra = &B00010000 'PIN PA4 Ausgang

Do

If Pinc.2 = 1 Then 'SHARP

Porta.4 = 1
Waitms 6000
End If

Loop
End

Dann sollte doch der Pin A4 auf High gehen sobald er vom SHARP am Pin C2 ein High-Signal bekommt. Das High-Signal bekommt er auch, aber der Pin A4 bleibt immer auf Low.

Nun geht die Sache noch weiter...ich habe den Code weiterv vereinfacht und mir folgendes angesehen



$regfile = "m32def.dat" 'ATmega32
$crystal = 11059200 'Quarz: 11059200 Hz

Ddrc = &B10000000
Portc = &B11111111

Do
Loop
End

Nach diesem Code her sollte doch NUR PC7 auf High sein?
Als ich es nachgemessen habe fiel mir aber auf, dass es PC6 auch ist.
PC7 ist sauber mit 5,0V auf High gesetzt. PC6 sollte auf null sein, bei ihm sind aber ca. 4,78V zu messen.

Was liegt hier genau vor?
Ich konnte den AVR bis jetzt wie in Code 1 zu sehen noch nicht überreden überhaupts eine Bedingung auszuführen und nichtmal schlichte Anweisungen führt er korrekt aus.

linux_80
18.02.2006, 16:08
Hallo,
der M32 funktioniert genauso wie er soll !
im 2. Beispiel setzt Du zwar nur PC7 auf Ausgang alle anderen sind aber Eingang, wenn ein Pin auf Eingang ist und es wird auf 1 gesetzt wird er Pullup aktiviert, was zu der Spannung von 4.78V führt !
Wenn Du das richtig testen willst muss das so heissen:

Ddrc = &B11111111
Portc = &B10000000

Dann kommt noch dazu, das ein nagelneuer Mega mit JTAG Interface dieses immer aktiviert ist, um die Pins vom Programm aus verwenden zu können muss man das mit den Fusebits erst deaktivieren !

Foooob
19.02.2006, 14:17
Vielen Dank!

Ich hab das JTAG in den Bits deaktiviert und den Code entsprechend geändert, nun funktioniert mein AVR so wie ich es will, vielen, vielen Dank!

Eben auf das JTAG Interface wäre ich selbst nie gekommen