Forum: Mikrocontroller und Digitale Elektronik PIC 16F628A Problem (Frequenzzähler von sprut)


von Dave (Gast)


Angehängte Dateien:

Lesenswert?

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

von Ottmar K. (wil1)


Lesenswert?

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

von Dave (Gast)


Lesenswert?

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.

von Ottmar K. (wil1)


Angehängte Dateien:

Lesenswert?

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

von Dave (Gast)


Angehängte Dateien:

Lesenswert?

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!

von Stefan (Gast)


Lesenswert?

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.

von Ottmar K. (wil1)


Angehängte Dateien:

Lesenswert?

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

von Ottmar K. (wil1)


Lesenswert?

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.

von Dave (Gast)


Lesenswert?

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.

von Dave (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Ottmar K. (wil1)


Angehängte Dateien:

Lesenswert?

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!

von Ottmar K. (wil1)


Lesenswert?

OK,
dann vergiss meinen letzten Beitrag.
mfG Ottmar

von skorpionx (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.