Halli hallo an Alle... hab da ein Problem bei mir festgestellt. Ich benutze PORTB bei mir als Ausgang. Dabei entspricht PB0->CLK, PB2->/CLK, PB3->/WE, PB4->/CAS, PB5->/RAS, PB6->/CS, PB7->CKE und PB1 ist nicht belegt. So jetzt habe ich folgende Funktionen: void CLK_send(int cycle) { int i=0; for(i=0;i<cycle;i++) { PORTB(0x04 & 0x05); PORTB(0x01 & 0x05); } } void SetCommandPins (uint8_t cmd) { PORTB = (cmd & 0xf8); } So rufe ich nun zuerst CLK_send auf und danach SetCommandPins, werden PB0->CLK und PB2->/CLK mit auf "NULL" gesetzt. Und umgekehrt das gleiche, wenn ich erst SetCommandPins aufrufe und dann CLK_send, dann werden meine Daten "NULL" gesetzt. Das will ich natürlich nicht. Gibt es da einen Ausweg? Dennnoch möchte ich aber das Daten bzw. der Takt ohne Zeitversatz gesetzt werden.... Wie kann man das machen??? Habe auch nicht die Möglichkeit einen anderen Port zu benutzten. Es muss mit einem funktionieren! Bitte helft mir...! Danke Thomas
Hmm, einen (S)DRAM via Portpins ansteuern? ... PORTB(0x04 & 0x05); ist, zumindest mit der Standard-Definition von PORTB, sinnloser Code. Was soll das bezwecken? Ansonsten solltest Du Dir die Bitoperatoren von C nochmal ansehen. Ist schon x-fach hier drüber diskutiert worden. Nur kurz: PORTB |= (1 << 4); PORTB = (PORTB & ~0xf8) | (cmd & 0xf8); usw. usf.
Hi Jörg, danke für den tip...jetzt hauts hin... Ciao Thomas
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.