Ja Servus!
Hab grad die Elektronik fertig gebastelt, Billig-Programmer schnell gebaut, Software war ja schon fertig.
Jetzt schnell Datei rüberschieben und testen - und? Blöd... (S+c+h+e+i+s+s+e wurde zensiert...)
Probleme:
1. Hab ihm programmiert, dass er beim einschalten beide LEDs für 1 sek. anmacht, so als funktionstest der LEDs sozusagen. Aber die LEDs leuchten so locker 3-4 sek. Timing-Problem. Fuses? Externer Quarz mit 2 Kondis sind dran.
2. Ich starte, nachdem der DST "gebootet" hat, das Programm 1. OK, Status-LED Grün geht aus, dafür die Rote an. Passt. Aber kommt was am Drucker raus? Nein.
Hier mal die Software:
Im Anhang gibts auch nochmal das Programm zum downloaden.Code:$regfile = "m8def.dat" $crystal = 16000000 Ddrb = &B00000000 'Port B komplett als Eingang Ddrc = &B00001111 'Am Port C PC0 bis PC3 Ausgang, Rest Eingang Ddrd = &B11111111 'Port D komplett als Ausgang Portb = &B00011110 'Pullup für PB1 bis PB4 aktivieren (Taster) Portc = &B00001111 'Beim starten auf 0 setzen Portd = &B00000000 'Beim starten auf 0 setzen Portc.0 = 0 'LED Grün an Portc.1 = 0 'LED Rot an Wait 1 'Test, ob beide LEDs funktionieren Portc.1 = 1 'LED Rot aus Do If Pinb.1 = 0 Then 'Taster 1 gedrückt Gosub Dst1 End If If Pinb.2 = 0 Then 'Taster 2 gedrückt Gosub Dst2 End If If Pinb.3 = 0 Then 'Taster 3 gedrückt Gosub Dst3 End If If Pinb.4 = 0 Then 'Taster 4 gedrückt Gosub Dst4 End If Loop Dst1: 'Programm 1: Statusseite 1 und 2 Portc.0 = 1 'Grüne LED aus Portc.1 = 0 'Rote LED an Gosub Drucker_init Portd = 33 '! Gosub Drucker_senden Portd = 82 'R Gosub Drucker_senden Portd = 33 '! Gosub Drucker_senden Portd = 32 'Leerzeichen Gosub Drucker_senden Portd = 83 'S Gosub Drucker_senden Portd = 84 'T Gosub Drucker_senden Portd = 65 'A Gosub Drucker_senden Portd = 84 'T Gosub Drucker_senden Portd = 59 '; Gosub Drucker_senden Portd = 83 'S Gosub Drucker_senden Portd = 84 'T Gosub Drucker_senden Portd = 65 'A Gosub Drucker_senden Portd = 84 'T Gosub Drucker_senden Portd = 49 '1 Gosub Drucker_senden Portd = 59 '; Gosub Drucker_senden Portd = 69 'E Gosub Drucker_senden Portd = 88 'X Gosub Drucker_senden Portd = 73 'I Gosub Drucker_senden Portd = 84 'T Gosub Drucker_senden Portd = 59 '; Gosub Drucker_senden Portd = 12 'Form Feed Gosub Drucker_senden Portc.0 = 0 'Grüne LED an Portc.1 = 1 'Rote LED aus Return Dst2: Return Dst3: Return Dst4: Return Drucker_senden: Portc.3 = 1 'Stobe aktivieren Waitus 10 '10 mikrosekunden warten Portc.3 = 0 'Daten übernommen Return Drucker_init: Portc.2 = 0 'Init-Signal auf Low zum initialisieren Waitus 50 '50 mikrosekunden warten Portc.2 = 1 'Drucker ist initialisiert Return End
BITTE HELFT MIR ! ! !
mfg,
cap.
EDIT:
Mir ist grad aufgefallen, dass ich zwar BUSY angeschlossen habe, aber ich irgendwie in meiner programmierung nicht auftaucht. Kann das ein/das Problem sein?
Wegen Fuses setzen hab ich bissl Angst, davor mir den uC zu schießen. Ich benutz zum "brennen" PonyProg. Bitte helft mit da, das mein erstes richtiges AVR Projekt ist. Hatte bis jetzt noch keine wirklichen Erfolge mitm AVR, will das endlich mal ein AVR-Projekt klappt!
EDIT2:
Wie sieht des eigentlich aus wegen dem Strobe-Signal? High oder Low? In meiner Programmierung gebe ich auf das Strobe-Signal 10 usek. ein High-Signal, nach dem ersten Byte - usw... Kann es auch daran liegen?







Zitieren

Lesezeichen