Hallo,
das meiste sollte so passen, allerdings stimmt bei den PORT- und PIN-Registern manches nicht.
Das ist so gedacht:
Das DDRx-Register legt fest, ob ein Anschluss Eingang(0) oder Ausgang(1) sein soll.
Ist der Anschluss als Ausgang eingestellt, kannst du den mit dem PORTx-Register auf High oder Low setzen.
Ist der Anschluss als Eingang eingestellt, kannst du mit dem PORTx-Register die Pullup-Widerstände aktivieren/deaktivieren.
Willst du einen Eingang abfragen, musst du das PINx-Register auslesen.
So müsste das meiner Meinung nach aussehen:
Vermutlich wird man noch die while-Schleifen anpassen müssen, in der verlinkten Seite wird bei der zweiten while-Schleife das ACK abgefragt, ist bei dir an PF4 ?Code://---------------------------------------------------------------------- #define F_CPU 16000000 // Taktfrequenz des myAVR-Boards #include <avr\io.h> // AVR Register und Konstantendefinitionen #include <util/delay.h> //---------------------------------------------------------------------- void init_io(void); void strobe(void); int main(void) { init_io(); unsigned char string[12] = "Hello World!"; //Text string PORTF = (1<<PF2); //Setzt Strobe auf high while(PINK == 255); //Wartet auf einen Tastendruck for (unsigned char i = 0; i <= 12; i++) //Liest alle Stellen des String { PORTA = string[i]; //Legt die Zeichen an den Datenausgang strobe(); //Sagt dem Drucker, dass Daten anliegen while(PINF == 1); //Wartet auf die Bestätigung des Druckers, dass Daten empfangen wurden } return 0; } void init_io(void) { DDRE = 0b11111111; //Datenleitungen DATA0-7 DDRF = 0b10100111; //Steuerleitungen vom/zum Drucker //PF0: nc Out //PF1: nc Out //PF2: Strobe Out //PF3: Busy In //PF4: ACK In //PF5: INIT Out //PF6: ERROR In //PF7: Autofeed Out DDRK = 0b00000000; //An alle Pins sind Taster angeschlossen PORTK = 0; //Pull-Up nicht setzen PORTF |= (1<<PF7); //Schaltet Autofeed ein } void strobe(void) { PORTF = ~(1<<PF2); //Setzt Stobe auf low = Drucker soll empfangen _delay_ms(1); PORTF = (1<<PF2); //Setzt Strobe wieder auf high } //----------------------------------------------------------------------
Grüße, Bernhard







Zitieren

Lesezeichen