Hallo, ich bin ratlos ich habe mir den Frequenzzähler von http://www.sprut.de/electronic/pic/projekte/frequenz/freq_uni_628.htm nachgebaut. Leider bekomme ich den nicht zum laufen. PIC 16F628A, Quarz 10MHz, LCD NDM162(HD44780 Controller) Fehlerbeschreibung: Display zeigt nur eine Leiste mit schwarzen Rechtecken.Deutet drauf, dass es nicht Initalisiert wurde. Auch die LED für den ersten Eingang der geschaltet wird leuchtet nicht. Spannungen überprüft(mehrfach) --> OK (Auffälligkeiten der R/W Pin am LCD ist high sollte aber low sein oder? Pins am PIC die beim Start low sein sollten, sind es nicht. Er hängt sich warscheinlich schon vorher auf!MCRL high so wie es sein sollte!) Schaltung,Layout,Platine überprüft(mehrfach) --> OK Display getauscht --> ohne Erfolg; Controler getauscht --> ohne Erfolg; Quarz getestet/getauscht (schwingt) --> ohne Erfolg Display an ander Schaltung geht, Display mit selben Controller und anderer Software geht auch, Display und Controller Frequenzzählerplatine geht auch, Ich vermute das beim Initalisieren was schief läuft, könnte jemand sich mal den ASM Code anschauen damit kenn ich micht nicht aus. Der Fehler muss ja dort zu finden sein. Ich habe auch schon die Unterschiede zwischen dem 16F628A und dem eigentlich verwendetem 16F628 durchgelesen konnte aber nichts relevantes finden.Habe schon ne Mail geschickt an sprut, noch keine Antwort erhalten. Hat wohl viel zu tun! MfG Dave
Hallo Dave, Also, wenn Dein LCD eien schwarzen Balken zeigt, ist das schon mal ein gutes Zeichen. Nimm doch mit der Kontrasteinstellung die "Schwärze" so weit zurück dass diese gerade noch schwach erkennbar ist, damit die Zeichen sich aus der dann helleren Umgebung abheben. Möglicherweise stimmt lediglich Deine Initialisierung nicht. Bitte prüfe auch nach, ob die Pinbelegung von RS, RW und Enable zutrifft! Frägst Du das Busyflag ab? LcdE equ (Pin)0 ; RB0 1->0 (toggle) H->L moves Data into the LCD LcdRw equ (Pin)1 ; RB1 0/1 write to/read from LCd-Databus LcdRs equ (Pin)2 ; RB2 0/1 write data Data/Instruction to LCD Im Code ist das LCD korrekt als 2zeilig initialisiert. Ich selbst verwende seit langer Zeit die LCD-Initialisierung, OutLcdControl, OutLcdData und LcdBusy von sprut und hatte nie Probleme damit. Ich habe mir mal das Datenblatt NDM162 angesehen und es ist HD44780-konform. Prüfe Dein Display doch einfach so: movlw b'10000000' ;DDRAM-Adresse Zeile 1, Digit 0 Call OutLcdControl ;LCD-Instruction movlw "A" ;ASCII "A" zum LCD senden Call OutLcdDaten ;Zeichenausgabe Noch ein Tip: Wenn ich ein Programm mit LCD "bastele" gebe ich immer zuerst einen simplen LCD-Text "Hallo" aus, damit ich sicher gehen kann, dass wenigstens mein LCD funktioniert. mfG Ottmar
Hallo Ottmar, Die Pins am LCD und am Controller stimmen. RB0(Pin6)=Enable RB1(Pin7)=R/W RB2(Pin8)=RS Der Code ist von sprut nicht von mir. Ottmar K. schrieb: > Prüfe Dein Display doch einfach so: > > movlw b'10000000' ;DDRAM-Adresse Zeile 1, Digit 0 > Call OutLcdControl ;LCD-Instruction > > movlw "A" ;ASCII "A" zum LCD senden > Call OutLcdDaten ;Zeichenausgabe Das verstehe ich nicht ganz. Kannst du mir ein Assembler Programm Schnippsel zu kommen lassen, nur für das LCD? Ich versuche gerade das mal aus dem "sprut Code" heraus zu basteln mal sehen ob es geht.So das nur ein zeichen an das LCd gesendet wird als Test. Mit spruts Pin Belegung.
Hallo Dave, Habe den Code zur simplen LCD-Ausgabe für Dich passend gemacht und mal schnell auf einen 16F628 gebrannt. funktionert! Allerdings verwende ich eine andere Pin-Konfiguration, weil der RB0 so praktisch ist und einen Interrupt auslösen kann. Das kannst Du aber wie unter beschrieben ändern. Entpacke beiliegendes Zip-File in EINEN Ordner, eröffne darin ein neues Project. im Project-Fenster lädst Du das ASM-File und im selben Fenster unter "Header-Files" "HD44780.INC hinzu. Störe Dich bitte nicht am Label "LCD_LAT" diesem wird im ASM-File der Inhalt = "PORTB" zugewiesen. Das muss so sein, weil die LCD-Initialisierung mit HD44780.INC auch für andere Pics und nicht nur für den 16F628 verwendet werden kann. Der 16F628 hat nun mal kein LATB-Register Im ASM-File änderst Du nur noch die Labels RS equ 0 ;0/1 write data Data/Instruction to LCD RW equ 1 ;0/1 write tot/read from LCd-Databus E equ 2 ;1->0 enable H->L moves Dats into the LCD entsprechend Deiner Pin-Konfiguration um so zum Beispiel: E equ 0 ; enable Lcd RW equ 1 ; read Lcd (nicht write) RS equ 2 ; Daten Lcd (nicht control) Viel Erfolgt, bei Fragen meldest Du Dich nochmals, ich schau heute noch mal ins Forum rein mfg Ottmar
Ich hab den Code geändert, gebrannt aber das Display zeigt weiterhin nur die Schwarzen Rechtecke an.Zur Übersicht das geänderte Hexfile angehängt. Es ist zum verzweifeln. irgendwo ist ein Fehler drin. Ich mache gleich noch Fotos vom Aufbau und lade sie hoch!
Schreib mal die Pinbelegung des Displays auf, wo was angeschloßen ist. Und mit welcher Frequenz das ganze läuft. Schick dann mal ein File zum Testen.
Hallo Dave, Schade, dass es nicht geklappt hat. Also mein Code stimmt 100%ig, indem ich diesen wie schon mitgeteilt vor dem Versenden auf nen PIC 16F628 gebrannt und ausgeführt habe. Probleme sind da um gelöst zu werden. Schau Dir doch mal die Anschlüsse von und zum Display mit der Lupe an. Sind da irgendwelche Kurzschlüsse zwischen den Kontaktpins/Drähten? Ich teste immer meine Projekte mit einer der Sprut-18/28pin-Testplatinen. Anbei ein Bild vom funktionierenden LCD mfg Ottmar
Hallo Dave! Dein ASM-File "frq_uni_628.asm" habe ich jetzt mal gecheckt. Es enthält KEINEN Fehler, das Hexfile welches ich erzeugt und in den PIC gebrannt habe funktioniert! Es erscheint die Anzeige 00:00:00. Also - wie vermutet LCD-Anschlüsse prüfen!! mfG Ottmar PS: Ich schau mir jetzt mal die Eröffnung von Olymbia 2012 an.
Stefan schrieb: > Schreib mal die Pinbelegung des Displays auf, > wo was angeschloßen ist. Und mit welcher Frequenz > das ganze läuft. Schick dann mal ein File zum Testen. 16F628A Pinbelegung LCD 2x16 Zeichen (HD44780) Ansteuerung 4 Bit Modus RB0 Pin6 = Enable RB1 Pin7 = R/W RB2 Pin8 = RS RB4 Pin10 = D4 RB5 Pin11 = D5 RB6 Pin12 = D6 RB7 Pin13 = D7 Takt 10MHz (Quarz mit 33p Stützkondensatoren) Quarz schwingt mit 10.000042MHz Pk-Pk 500mV schöner Sinus. Ottmar K. schrieb: > Hallo Dave, > Schade, dass es nicht geklappt hat. Also mein Code stimmt 100%ig, indem > ich diesen wie schon mitgeteilt vor dem Versenden auf nen PIC 16F628 > gebrannt und ausgeführt habe. > Probleme sind da um gelöst zu werden. Schau Dir doch mal die Anschlüsse > von und zum Display mit der Lupe an. Sind da irgendwelche Kurzschlüsse > zwischen den Kontaktpins/Drähten? > Ich teste immer meine Projekte mit einer der > Sprut-18/28pin-Testplatinen. > Anbei ein Bild vom funktionierenden LCD > > mfg Ottmar Ich habe es pur also nur LCD,PIC,Quarz,MCRL + 10k Pullup und 10k Poti für Kontrast LCD auf einen Steckbrett aufgebaut!Kamera Akkus laden gerade Fotos folgen in 30 Minuten.
Jetzt funktioniert es auf dem Steckbrett! Fehler war: Im USburn habe ich unter Options das PIC Timing auf Slow(Regler ganz rechts) gestellt. Zuerst funktionierte der Code von Ottmar dann der von sprut. Auf der Platine funktioniert es immer noch nicht, der Grund wird noch erforscht! Bilder: http://www.bilder-hochladen.net/files/big/jsiq-1-c4ca.jpg http://www.bilder-hochladen.net/files/big/jsiq-2-c81e.jpg http://www.bilder-hochladen.net/files/big/jsiq-3-eccb.jpg http://www.bilder-hochladen.net/files/big/jsiq-4-a87f.jpg http://www.bilder-hochladen.net/files/big/jsiq-6-1679.jpg Ich bedanke mich erstmal für die Hilfe von euch Allen.
Hallo Dave, Beiliegend der Ausschnitt aus dem Datenblatt zur Pinblegung. Steckboard ist immer störanfällig, überhaupt wenn es älter ist und auch mal dickere Drähte /Bauteilanschlüsse gesteckt wurden. Kontaktprobleme sind da nie auzuschließen Mir ist da ein Testboard mit LED-Kontrolle der µC-Pins lieber. So müte Dein Konfiguration aussehen: LCD PIC 4 RS RB2 5 R/W RB1 6 E RB0 11 DB4 RB4 12 DB5 13 DB6 14 DB7 RB7 mfg Ottmar P.S.: Olympia-Eröffnungsfeier - very britishc!
OK, dann vergiss meinen letzten Beitrag. mfG Ottmar
Ich habe den gleichen Zähler gebaut. Er funktioniert ohne Probleme. Einzige Änderung: ich habe noch eine Verstärkungstuffe mit einem Transistor zusätzlich eingebaut für den Bereich bis 50 MHz. Beitrag "Sprut 2 Hz 1-GHz-Frequenzzähler"
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.