www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 4094 mit 16F628 ansteuern


Autor: Marcel Klug (sunny198828)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich versuche einen 4094 mit einem PIC 16F628 anzusteuern!
beschaltung habe ich mit in das asm-file geschrieben!
Ich bin noch anfänger und würde gern mal wissen wo mein fehler liegt...
wäre supernett wenn mir jemand helfen könnte!,
und mir eventuell sagt wo mein fehler in der programiereung liegt!
am 4094 leuchten die led's undefinierbar

mfg sunny

Autor: Wilhelm F. (ferkes-willem)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir ist im Code ne Kleinigkeit aufgefallen, das könnte es schon sein. 
Wie schnell ist denn der PIC? CLK wird gesetzt, und mit dem nächsten 
Befehl schon wieder gelöscht. Das könnte zu schnell sein, da müßte unter 
Umständen ein nop-Befehl zur Verzögerung dazwischen. Man muß mal ins 
Datenblatt des 4094 schauen, wie die Schaltzeiten definiert sind, ich 
habs gerade nicht zur Verfügung.

Autor: Marcel Klug (sunny198828)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber sonst müsste es klappen?
der prozessor läuft momentan auf 4mhz intern.
Im Datenblatt habe ich nicht viel über die zeiten gefunden.
ich habe jetzt nochmal den code verändert angehängt.
meintest du es in etwa so?

Autor: Marcel Klug (sunny198828)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier der code
ganz vergssen^^

Edit:
ich habs ebend mal durch den simulator laufen lassen und gesehen das auf 
Data garkeine implse kommen....
woran könnte das denn jetzt liegen?

Autor: Wilhelm F. (ferkes-willem)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcel Klug schrieb:

>ich habs ebend mal durch den simulator laufen lassen und
>gesehen das auf Data garkeine implse kommen....

Und was machen die anderen Signale?

Autor: Wilhelm F. (ferkes-willem)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah ja, OK. Wenn die Variable cdsend leer ist, wird D nie aktiv.

Autor: Claus P. (claus_p)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. cdsend scheint nicht initialisiert zu sein
2. wo kommt denn Ini_opt her?
3. auch RB1 ist als Output definiert (im Widerspruch zum Kommentar ...)

Grüße
Claus

Autor: Marcel Klug (sunny198828)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die anderen signale laufen
Den kommentar habe ich schon bei mir geändert!
keine ahnug wie ich daruf kam....
okay und wie bekomme ich es jetzt hin das ich mit zb
 movlw B'00000001' den ersten ausgang des 4094 auf high schalte?

ich stehe da n bissl aufm schlauch.
aber schonmal danke für die reichlich vielen antworten!
hier wird echt schnell geholfen!

Autor: Wilhelm F. (ferkes-willem)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcel Klug schrieb:

>okay und wie bekomme ich es jetzt hin das ich mit zb
>movlw B'00000001' den ersten ausgang des 4094 auf high
>schalte?

Da müßtest du wohl das W-Register mal in die Variable cdsend kopieren.

Autor: Marcel Klug (sunny198828)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm und wie bekomme ich das genau hin?

entschuldigung das ich da so blöd frage

Autor: Claus P. (claus_p)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
movlw B'00000001'
movwf cdsend

www.sprut.de (Grundlagen!)

Grüße
Claus

Autor: Wilhelm F. (ferkes-willem)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So sollte es klappen:

main
  movlw  B'00000001' ; lade W mit Konstante
  banksel .....      ; Bank, in der cdsend liegt
  movwf  cdsend      ; kopiere W in Variable cdsend
  banksel .....      ; ursprüngliche Bank, wenn nötig
  call  cd4094_send  ; Funktionsaufruf
  goto  main         ; und wieder von vorne

Autor: Marcel Klug (sunny198828)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
alles klar das war das was ich gesucht hatte!
jetzt verstehe ich es auch...

Besten Dank!

Autor: Marcel Klug (sunny198828)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure hilfe!!
das funktioniert super!
habe nochmal den code angehängt funktioniert super
jetzt kann ich ja zu meinem eigentlichen projeckt starten.
muss nur noch schauen wo ich 512 LED's herbekomme^^

Autor: K. J. (theborg0815) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

du kannst natürlich auch cdsend in der Routine gegen W tauschen was ein 
schiebebefehl spart

Autor: juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Muß denn OE mitgeschaltet werden?
Kann das Byte CDSend nicht mit dem Schiebebefehl
in einer 8ter Schleife ausgegeben werden.
Danach Str H/L und Ende.
Sonst wirst du mit deiner Programmstruktur mit 512
einzeln anzusteuernden Dioden ein wenig Schreibarbeit leisten müssen.

Gruß

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.