Forum: Mikrocontroller und Digitale Elektronik Problem: Von Atmega8 zu Atmega168 (Input)


von Dextrose (Gast)


Lesenswert?

Hallo zusammen,
ich stehe gerade mächtig auf dem Schlauch. Seit nun zwei Stunden will 
ich einen Code auf einem Atmega168 zu laufen zu kriegen. Das meiste 
klappt. Nach mittlerweile Stunden Fehlersuche habe ich nun 
herausgefunden, dass ich keine Werte eingelesen bzw. ausgegeben bekomme.
Mit dem Atmega8 komme ich hingegen super klar.
Mein konkretes Problem ist nun, dass folgende Testzeilen auf dem Atmega8 
funktionieren und auf dem Atmega168 nicht:
1
ldi r16, 0xFF
2
out DDRB, r16
3
4
ldi r16, 0x00
5
out DDRD, r16
6
7
ldi r16, 0xFF
8
out PORTD, r16
9
10
loop:
11
12
out PORTB, r16
13
rjmp loop

von spess53 (Gast)


Lesenswert?

Hi

>Mein konkretes Problem ist nun, dass folgende Testzeilen auf dem Atmega8
>funktionieren und auf dem Atmega168 nicht:

Dafür gibt es keinen Grund. Kannst du 'nicht funktionieren' mal 
spezifizieren?

Hast du die richtige Include-Datei benutzt?

MfG Spess

von Mike A. (Gast)


Lesenswert?

Dextrose schrieb:
> Mein konkretes Problem ist nun, dass folgende Testzeilen auf dem Atmega8
> funktionieren und auf dem Atmega168 nicht

Vielleicht hast du die falsche Erwartungshaltung?

von Dextrose (Gast)


Lesenswert?

Ich habe keine Include-Datei angegeben. Soviel ich weiß macht AVR Studio 
6.1 das alleine. Der gesamte andere Code funktioniert ja und andere 
Codes auch.

Nicht funktioniert bedeutet: Alle ausgänge an PORTB geben eine logische 
1 aus.

von spess53 (Gast)


Lesenswert?

Hi

>Nicht funktioniert bedeutet: Alle ausgänge an PORTB geben eine logische
>1 aus.

Das hast du doch so in deinem Programm geschrieben. Der Controller macht 
alles richtig.

MfG Spess

von Dextrose (Gast)


Lesenswert?

spess53 schrieb:
> Hi
>
>>Nicht funktioniert bedeutet: Alle ausgänge an PORTB geben eine logische
>>1 aus.
>
> Das hast du doch so in deinem Programm geschrieben. Der Controller macht
> alles richtig.
>
> MfG Spess

Da ist mir anscheint ein Malheur beim kopieren passiert.
Der Loop sieht aus wie folgt:

loop:
in r16, PORTD
out PORTB, r16
rjmp loop

von spess53 (Gast)


Lesenswert?

Hi

>Der Loop sieht aus wie folgt:

Und was liegt an PortD an?

MfG Spess

von Dextrose (Gast)


Lesenswert?

An PORTB hängen die LEDs vom STK500,
an PORTD hängen die Taster vom STK500.
Beides ist über diese Mitgelieferten Flachbandkabel verbunden.

von David R. (dave234)


Lesenswert?

Dextrose schrieb:
> loop:
> in r16, PORTD
> out PORTB, r16
> rjmp loop

und was ist mit PIND?

von Mike A. (Gast)


Lesenswert?

Dextrose schrieb:
> ldi r16, 0xFF
> out PORTD, r16

David R. schrieb:
> loop:
> in r16, PORTD
> out PORTB, r16
> rjmp loop

Wenn du ein 0xFF nach PORTD schreibst, ist doch völlig richtig, wenn 
dort auch ein 0xFF zurück gelesen wird.

Dextrose schrieb:
> Alle ausgänge an PORTB geben eine logische 1 aus.

von Dextrose (Gast)


Lesenswert?

David R. schrieb:
> Dextrose schrieb:
>> loop:
>> in r16, PORTD
>> out PORTB, r16
>> rjmp loop
>
> und was ist mit PIND?

Das ist es gewesen, danke!
Da ist mir dies nun tatsächlich nicht zwischen den zwei Testdateien die 
ich habe aufgefallen. Eine für de Mega8 die andere für den Mega168.
Was ein Blöder Fehler.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.