PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATMEGA16 Programm startet nicht



ebb
04.01.2006, 11:21
Hi,

ich hab ein großes Problem
ich hab meinen Atmega16 mit PonyProgg programmiert (teistweise mal alle ausgänge des PortB auf High) und die grundschaltung für den ATmega8 , die es hier gibt an die Pinbelegung des Atmega16 angepasst, aber er schaltet die Ports nicht auf High ich messe an allen I/Os 0,4V , was kann das sein ???
Das Programm ist am AVR , da ich es auslesen kann ; Fusebits hab ich noch nicht verändert


mfg ebb

Ratber
04.01.2006, 11:40
Das Programm ist am AVR , da ich es auslesen kann ;

du meinst vermutlich "im AVR".

Gut wenn es drinn ist dann liegts schonmal nicht am Programmer.

Nächster Schritt ist das Programm selber,wo ich im moment den Fehler vermute.

Das betreffende Programm wäre hier jetzt sehr hilfreich.

Florian
04.01.2006, 11:56
Moin! ;o)

Nächster Schritt ist das Programm selber,wo ich im moment den Fehler vermute.Ich auch!
Kann es sein, dass Du die Ports nicht im DDR (Datenrichtungsregister) konfiguriert hast?
In welcher Sprache programmierst Du?
Könntest Du den Code posten?

ebb
04.01.2006, 11:57
.nolist
.include "C:\Program Files\Atmel\AVR Studio\Appnotes\m16def.inc"
.list

ldi r16, 0b11111111
out DDRD, r16

looping:

ldi r16, 0b11111111 ;Nur PD0 High
out PORTD, r16 ;Datenregister für PD laden

rjmp looping



wie ich gerade gesehen hab macht das alles am PortD High , aber dort rührt sich auch nichts

Florian
04.01.2006, 12:02
Hallo ebb!

Kann es sein, dass Du die Ports nicht im DDR (Datenrichtungsregister) konfiguriert hast?
An dem eben geäußerten Grund scheint es nicht zu liegen, Du hast DDRD ja beschrieben.
Also eigentlich müsste der Code funktionieren! *überleg*
Es sieht eigentlich soweit alles richtig aus!
Hast Du den Code mal mit dem AVR-Studio simuliert?
Misst Du wirklich an den richtigen Ports?

ebb
04.01.2006, 12:07
die Ports werden eh so beschaltet oder ?


PD1 --------- Voltmeter/Led--------- VCC oder ?

Florian
04.01.2006, 12:18
Ja, das wird meistens so gemacht ... meistens, aber nicht immer!

ebb
04.01.2006, 12:29
Muss ich an den Fusebits wirklich nichts ändern , damit das läuft ?

wenn ich was ändern muss , was ? ich hab auch nen externen 6Mhz Quarz angeshclossen , den ich eigenltich benutzen will

Irgwer
04.01.2006, 12:46
Wenn du gegen VCC (+5V) misst, und dir dein Voltmeter so ca. 0,4 (bzw.-0,4V) anzeigt, dann liegen am Pin tasächlich 4,6 V an.

Bezugspunkt für eine Messung mit einem Voltmeter ist normalerweise der Ground.

ebb
04.01.2006, 12:54
ich hab jetzt anders rum gemessen und da waren nur 0,2V an allen Ports von PortA, PortB,PortC,PortD

Das komische ist ja das das programm auf nem AT90S2313 funzt

Irgwer
04.01.2006, 13:05
Wenn du gegen VCC misst, zeigt dein Voltmeter 0,4 V an. Gegen Ground zeigt es 0,2 V an.

Stimme den deine Spannungsversorgung ? Ist dein Voltmeter hinüber ?
Alles etwas unlogisch.

ebb
04.01.2006, 13:15
Ich verstehe die Welt nich mehr



$regfile = "m16def.dat"
Config Portd = Output

Do
Portd.1 = 1
Portd.2 = 1
Portd.3 = 1
Portd.4 = 1
Portd.5 = 1
Portd.6 = 1
Portd.7 = 1
Loop
End


Das hab ich eben mit Bascom geschrieben und auf den AVR geschrieben , jetzt sind PD1-7 high (5,06V) und BD0 ist Low , wie sein sollte , also der Voltmeter ist nicht hinüber
aber wiso geht das Assembler Programm nicht ???

Ratber
04.01.2006, 13:42
Müßte es nicht "ldi r22, 0b11111111" heißen ?

ebb
04.01.2006, 13:50
Der register ist ja egal oder ? in den Tutorials stand das ich einen Register ab dem 16. nehmen soll , die haben auch alle den r16 genommen

Irgwer
04.01.2006, 14:01
Hi ebb,

also an deinem Source-Code liegt es nicht. Welchen Assembler nutzt du den ?

Poste doch mal den Inhalt der .hex-Datei. dürften eigentlich gerade mal 3 Zeilen sein.

ebb
04.01.2006, 14:08
000000:ef0f
000001:bb01
000002:ef0f
000003:bb02
000004:cffd



ich benutze zum schreiben der ASM datei das AVR studio , da der WAVRASM die m16def.inc nicht mag (ich hab 4 ausprobiert) und zum übertragen zum MC benutze ich PonyProg 2000

Ratber
04.01.2006, 14:08
Der register ist ja egal oder ? in den Tutorials stand das ich einen Register ab dem 16. nehmen soll , die haben auch alle den r16 genommen

Hoppla,falsches Datenblatt.

Irgwer
04.01.2006, 14:54
Dein Hex-File passt zu deinem Source.

Ich kenne PonyProg leider nicht.

Benötigt es den tatsächlich das Hex-File im 'generic' Format ?

AVR Studio könnte auch noch das Intel-Hex-Format und das Motorola S-Record-Format erzeugen.

ebb
04.01.2006, 14:58
Da wusste ich eben nicht welches man braucht generic war eingestellt, mit AVRstudio kann ichs leider nich draufschreiben der erkennt meinen ISP adapter nicht , ich werd mal die anderen Hexformate ausprobieren


EDIT://

kann geclosed werden , mit dem INTEL HEXfileformat funzts super