Forum: Mikrocontroller und Digitale Elektronik Bitlevelaccess PORTF und PORTG MEAGA 64


von Tobias A. (Gast)


Lesenswert?

Hi

ich hänge mal wieder...
Versuche grade mit Codevision bitlevelaccess auf den
PORTG des MEGA64 zu erhalten. Klappt aber nicht.

Code sieht wie folgt aus

#define adr_count PORTG.0

// jede menge Code
DDRG=0xFF // PORTG-> output
// irgendwann dann
adr_count=1;

Da meckert das Ding dann irgendwo würde ein Semikolon fehlen.
Es fehlt aber keins.
Wenn ich das mit PORTA mache gehts.

Irgendwer irgendwelche Ideen?

Grüsse
  Tobi

von Chris (Gast)


Lesenswert?

> Da meckert das Ding dann irgendwo würde ein Semikolon fehlen.
> Es fehlt aber keins.

Guck nochmal nach. Es fehlt wirklich eins.

von Teletubbi (Gast)


Lesenswert?

Ja, stimmt. Da fehlt eins.

von Tobias A. (Gast)


Lesenswert?

Hi
da fehlt keins. Ich weis das hinter dem DDRF=0xFF eins net
da ist aber das hab ich weggelassen als ich es hier reingeschrieben
hab. (ja ich weiss Code gehört normalerweise in den Anhang
aber es ist ja net viel)

#include <mega64.h>
#include <delay.h>

#define cs_memory PORTA.7
#define oe_memory PORTA.6
#define we_memory PORTA.5

#define dclock_adc PORTA.3
#define cs_adc     PORTA.4
#define dclock_dac  PORTB.7
#define cs_dac PORTB.6
#define update_dac PORTB.5
#define dout_dac PORTB.4
#define adr_reset PORTG.1
#define adr_countup PORTG.0

char aus;
char aus2;
char i;
char mask;
char wert;
int wert_t1;
int wert_t2;
int frequenz;


//codevision automatisch generierter kram

//dann eigener code
      cs_adc=1;
      cs_memory=1;
      DDRF=0xFF;


      oe_memory=1;
      we_memory=0;        // write mode active
      adr_reset=1;       // <- da meckert er
      delay_us(3);
      adr_reset=0;       // da meckert er auch
      DDRC=0xFF; // PORTC -> Output
      cs_memory=0;
      PORTC=0xAA;
      delay_us(1);
      cs_memory=1;

// sonstiger kram

Gruss
   Tobi

von Matthias (Gast)


Lesenswert?

Hi

PORTG kann nicht mittels SBI/CBI bearbeitet werden. Deshalb dürfte die
Zuweisung schief gehen. Das der Compiler dann aber ein fehlendes
Semikolon anmeckert dürfte am kaputten Compiler liegen.

Matthias

von Tobias A. (Gast)


Lesenswert?

Das heisst bitsetting geht nicht?
oder muss ich dann auf ASM ebene runter?
Wenn ja wie?

Gruss
  Tobi

von Matthias (Gast)


Lesenswert?

Hi

was weiß denn ich wie man deinem Compiler das beibringt. Portabel ist
PORTG |= (1<<1); um Bit 1 von PortG auf 1 zu setzen.

Matthias

von Dieter (Gast)


Lesenswert?

Tjaja, mal wieder einer, der keinen Bock hat, in die Doku zu sehen...

von Tobias A. (Gast)


Lesenswert?

Hey
ich hab ich die Doku geguckt, hab aber nix gefunden.
Habs jetzt mittels
PORTG=PORTG | 0x02;
gelöst (um PORTG.1) zu setzten.
löschen tu ich das ganze dann wieder mit
PORTG=PORTG | 0xFD;

Danke nochmal an alle

von Rufus T. Firefly (Gast)


Lesenswert?

Das Löschen funktioniert so nicht. Statt | solltest Du & verwenden.

von Tobias A. (Gast)


Lesenswert?

Hi
ja stimmt hast recht.
Hab ich eigentlich auch verwendet.
Das passiert wenn man neu tippt anstatt copy & paste zu machen.
Trotzdem danke für den Hinweis.
Gruss
  Tobi

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.