Forum: Mikrocontroller und Digitale Elektronik Atmega128 port problem


von Daniel (Gast)


Lesenswert?

Ich habe ein Problem mit meinem Atmega 128:

Ich habe dieses absolut einfaches Programm:
1
#include <avr/io.h>
2
#define F_CPU 4000000
3
#include <avr/interrupt.h>
4
#include <util/delay.h>
5
#include <math.h>
6
7
8
void initStarterport(void)
9
10
{ 
11
  DDRB  |= (1 << DDB6); 
12
  PORTD |= (1 << PD6);
13
}
14
15
int main (void)
16
17
{ 
18
19
   initStarterport(); 
20
  
21
return 1;
22
}

Das Problem besteht genau darin, dass der Port und seine Register 
überhaupt nicht gesetzt werden und das AVR Studio keinen Fehler anzeigt.
Ich habe vor einem Jahr zuletzt programmiert und hatte den gleichen 
Fehler.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Daniel schrieb:
> Das Problem besteht genau darin, dass der Port und seine Register
> überhaupt nicht gesetzt werden

Werden die schon - vermutlich nicht so wie Du das erwartest ...

DDRB setzt einen Pin des Ports B auf Ausgabe.
PORTD setzt einen Pin auf Port D ;)

von Floh (Gast)


Lesenswert?

Daniel schrieb:
> DDRB  |= (1 << DDB6);
>   PORTD |= (1 << PD6);

B oder D?

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Floh schrieb:
> B oder D?

Kompromißvorschlag: Er soll C nehmen ;)

von Daniel (Gast)


Lesenswert?

Es sollte PORTD und DDD6 sein.
Jetzt gahts, danke fürs aufmerksam machen.
Ich sollte nicht in der Nacht programmieren.
Danke

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Daniel schrieb:
> Es sollte PORTD und DDD6 sein.
> Jetzt gahts, danke fürs aufmerksam machen.
> Ich sollte nicht in der Nacht programmieren.
> Danke

Ich kenne das. Man sitzt stundenlang davor und man sieht es einfach 
nicht ;)

von Daniel (Gast)


Lesenswert?

Ich stehe wieder vor dem gleichen Problem
1
#include <avr/io.h>
2
#define F_CPU 4000000
3
#include <avr/interrupt.h>
4
#include <util/delay.h>
5
#include <math.h>
6
7
8
void initStarterport(void)
9
10
{ 
11
  DDRB  |= (1 << DDB7); 
12
  PORTB |= (1 << PB7);
13
}
14
15
int main (void)
16
17
{ 
18
19
   initStarterport(); 
20
  
21
return 1;
22
}

Es hat jetzt lange fuktioniert, und jetzt wieder nichts.
Habs auch mit anderen ports probiert.
Das Program wird kompiliert und auf den uC programmiert.
Es tut sich nichts

von Daniel (Gast)


Lesenswert?

Nach dem Init den Controller in einer Endlosschleife laufen lassen! Zb. 
while(1); oder for(;;); :-)

von Daniel (Gast)


Lesenswert?

Da tut sich auch nichts.
Das programm war viel länger.
Vorher hat das mit den port funktioniert.
Nachdem das programm fertig war tut sich wieder nichts.

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.