benötige Hex-Datei für PIC16F628A

OP #7542130
Lesenswert?

Hallo ich bin neu hier und Neuling mit Hex Programmierung. Ich habe ein PIC16F628A und benötige hierfür einen Hex-Code für folgende Anwendung: PIC 8 Taster Eingänge (PIN 1-4; 6-9) 8x Ausgang (PIN 10-13; 15-18) sobald ein Highsignal an Pin ankommt dauerhaftes Highsignal am Ausgang. Diese Steuerung soll als Tastenaggregat funktionieren.

Moderator Persönliche Seite #7542136
Lesenswert?

Naja, du verwechselst das Forum irgendwie mit einem Dienstleister. Aber selbst für den wäre dein "Lastenheft" vermutlich etwas dürftig.

Das Forum ist Hilfe zur Selbsthilfe. Wenn du also deine "Hex-Programmierung" (was auch immer das sei) angefangen hast und nicht mehr weiter kommst, kannst du hier dein Problem und deine bereits unternommenen Schritte schildern, dann können andere dir zeigen, wo's klemmt und wie du weiter kommst.

Moderator Persönliche Seite #7542221
Lesenswert?

H. H. schrieb:

Er will das wohl mit gegenseitiger Auslösung.

Naja, und dann noch eine ordentliche Entprellung dazu. Vielleicht auch noch mehr, was da noch nicht geschrieben ist? (Selbst die gegenseitige Auslösung ist ja nicht klipp und klar dokumentiert worden.)

Daher schrieb ich ja, dass das "Lastenheft" da oben (nennen wir es mal so) eher dürftig ist.

OP #7542618
Lesenswert?

Sorry, aber mein Problem ist, ich habe mir vor 6 Jahren eine Pumpenstation mit 16 Pumpen zusammengebastelt und hierfür über das Internet 3 Tastenaggregate (PIC16F628A) gekauft. Leider ist eins davon jetzt defekt und ich bekomme dieses Tastenaggregat nicht mehr. Wenn ich an einen Taster drücke (hi-Impuls an Pin Eingang 1) soll am Ausgang Pin 18 ein Hi Pegel sein und die anderen Ausgänge Lo-Pegel. Eingänge Pin 1-4, 6-9 Ausgänge Pin 10-13, 15-18 Siehe Bild

Angehängte Dateien:
Moderator Persönliche Seite #7542639
Lesenswert?

Roland G. schrieb:

Wenn ich an einen Taster drücke (hi-Impuls an Pin Eingang 1) soll am Ausgang Pin 18 ein Hi Pegel sein und die anderen Ausgänge Lo-Pegel. Eingänge Pin 1-4, 6-9 Ausgänge Pin 10-13, 15-18 Siehe Bild

Das ist zumindest schon mal eine konkretere Beschreibung als in der Einleitung. ;-)

Peter D. schrieb:

Man kann mal probieren, ob da 0x00 ausgelesen wird oder der Code.

Wenn man die existierenden auslesen könnte, wäre es natürlich der einfachste Weg. Da stellt sich natürlich sofort die nächste Frage, ob Roland denn überhaupt ein Programmiergerät besitzt …

Moderator Persönliche Seite #7542670
Lesenswert?

Gut, Erkennung von Mehrfach-Tastendruck wäre nochmal etwas mehr, aber nicht viel. Ist eh fraglich: eine der beiden Tasten war ja immer vor der anderen da, ist also nur eine Frage, innerhalb welcher Zeit man das als "2 Tasten gedrückt" auswertet.

Aber vielleicht gibt er ja auch die originale Hexdatei heraus, wenn er die Dinger schon nicht mehr vertreibt?

Beitrag #7542687 wurde von einem Moderator gelöscht.
OP #7542688
Lesenswert?

Jörg W. schrieb:

Gut, Erkennung von Mehrfach-Tastendruck wäre nochmal etwas mehr, aber nicht viel. Ist eh fraglich: eine der beiden Tasten war ja immer vor der anderen da, ist also nur eine Frage, innerhalb welcher Zeit man das als "2 Tasten gedrückt" auswertet.

Aber vielleicht gibt er ja auch die originale Hexdatei heraus, wenn er die Dinger schon nicht mehr vertreibt?

Nein wurde wegen Todesfall eingestellt

Gast #7542698
Lesenswert?

Peter D. schrieb:

H. H. schrieb:

Die paar Zeilen Code zu schreiben wäre ja kein Problem

Etwas tricky ist, daß die Pins nicht logisch zugeordnet sind, also RA0->RB0, RA1->RB1 usw., sondern wild durcheinander.

Da sehe ich kein Problem, man würde eh die 8 Eingänge sequentiell abfragen, ganz ohne besonderen Algorithmus.

Gast #7542706
Lesenswert?

Peter D. schrieb:

H. H. schrieb:

man würde eh die 8 Eingänge sequentiell abfragen, ganz ohne besonderen Algorithmus.

Ich würde die Eingänge in ein Byte sortieren, dann verarbeiten und dann auf die Ausgänge umsortieren. Damit ist garantiert, daß die Verarbeitung exakt gleich erfolgt. Fehler sind nur noch bei den Sortierungen möglich.

Es geht da um ein paar Pumpen!

#7542762
Lesenswert?

Wastl schrieb:

Die müssen auf die Mikrosekunde gleich bedient werden.

Wer fordert das?

Ich habe keinen PIC-Compiler. Auf einem AVR (ATtiny261) könnte das komplette Programm so aussehen.

1
#include <avr\io.h>
2

3
int main(void)
4
{
5
  DDRA = 0xFF;                  // Port A = 8 Outputs
6
  uint8_t mask = 0b10000000;
7
  do
8
  {
9
    if (mask == PINB )          // Port B = 8 Inputs
10
      PORTA = mask;
11
    if ( mask >>= 1 )           // rotate 1-Bit
12
      continue;
13
    mask = 0b10000000;
14
  }
15
  while(1);
16
}
#7542774
Lesenswert?

Jörg W. schrieb:

Gut, Erkennung von Mehrfach-Tastendruck wäre nochmal etwas mehr, aber nicht viel. Ist eh fraglich: eine der beiden Tasten war ja immer vor der anderen da, ist also nur eine Frage, innerhalb welcher Zeit man das als "2 Tasten gedrückt" auswertet.

Oder eher: das Programm akzeptiert einen Tastendruck nur, wenn nicht bereits eine andere Taste gedrückt ist.

#7542790
Lesenswert?

Peter D. schrieb:

Daher mein Vorschlag mit dem ATtiny261, da sind alle gleichwertigen Pins schön gegenüber. Es stören nur die zusätzlichen GND/VCC. Mit 2 Leitungen durchkratzen und 4 Drahtbrücken ist das aber zu lösen.

Problem: wie bringst Du einen 20-poligen IC in 18 Löcher 0auf dem PCB? Da brauchts noch eine Zwischenplatine. Das geht mit einem PIC schneller und einfacher.

Es stören nur die zusätzlichen GND/VCC. Mit 2 Leitungen durchkratzen und 4 Drahtbrücken ist das aber zu lösen.

Es müssen 10 Leitungen durchgekratzt und 8 Brücken gesetzt werden.

#7542797
Lesenswert?

Roland G. schrieb:

Hallo ich bin neu hier und Neuling mit Hex Programmierung. Ich habe ein PIC16F628A und benötige hierfür einen Hex-Code für folgende Anwendung: PIC 8 Taster Eingänge (PIN 1-4; 6-9) 8x Ausgang (PIN 10-13; 15-18) sobald ein Highsignal an Pin ankommt dauerhaftes Highsignal am Ausgang. Diese Steuerung soll als Tastenaggregat funktionieren.

Also z.B. Taste 1 wurde gedrückt, Ausgang nur Pin18 hat jetzt dauerhaft +5V? Dann läuft die entsprechende Pumpe, wie kann mann man diese wieder ausschalten?

#7542798
Lesenswert?

Stephan S. schrieb:

Das geht mit einem PIC schneller und einfacher.

Kannst Du ja gerne machen. Ich wollte nur schnell eine einfache Lösung präsentieren.

Stephan S. schrieb:

Es müssen 10 Leitungen durchgekratzt und 8 Brücken gesetzt werden.

Überleg nochmal, die Bitreihenfolge ist egal. Du mußt nur VCC/GND und die beiden äußeren neu verbinden. Bzw. GND ist intern verbunden, 3 Brücken reichen schon.

#7542803
Lesenswert?

Peter D. schrieb:

Überleg nochmal, die Bitreihenfolge ist egal. Du mußt nur VCC/GND und die beiden äußeren neu verbinden. Bzw. GND ist intern verbunden, 3 Brücken reichen schon.

Ich gehe davon aus, dass der PIC in einer Platine oder einer Fassung sitzt. Die Ports bei den Pins 7-10 und 11-14 sind um je 1 versetzt (die sind beim PIC an 6-9 und 10-12) und nur VCC an der richtigen Stelle ist.

#7542887
Lesenswert?

Joah, ich meinte auch eher dass nicht jede Taste einzeln entprellt werden muss.

Das ganze Konstrukt des Radiobuttons sollte aber einem sinnvollen Timing unterliegen und natürlich fängt man ja sowieso unlogische Zustände ab. Wenn man das macht, dann wird da nichts klappern was nicht auch bei einer Einzeltastenentprellung auch klappern würde...

#7542906
Lesenswert?

Stephan S. schrieb:

Das funktioniert nur, wenn der IC mit freien Drähten angeschlossen wäre. Er steckt aber in einem PCB oder einer Fassung.

Man kann sich aber auch umständlich anstellen. Einfach 2 Fassungen ineinander stecken, die zu trennenden Pins abknipsen und die Drahtbrücken löten. Gedrehte Fassungen lassen sich gut ineinander stecken.

Und wenn Peter K. ihm ein funktionierendes Programm schreibt, ist doch das Ziel erreicht. Mein Vorschlag war nur für den Fall, das sich sonst keiner findet. Auch wollte ich mich nicht mit dem nötigen Pin-Mapping rumärgern.

#7543008
Lesenswert?

Hab die Schaltung schnell auf das Steckbrett gebracht, hatte noch einen Fehler, der Taster-Eingang wird ja mit 5V hochgezogen der Taster geht auf GND, anbei noch die neue .C-Datei und das neue Hex-File, sorry. Die Schaltung funktioniert jetzt. J.P.S

Angehängte Dateien:
#7543023
Lesenswert?

H. H. schrieb:

Jochen-paul S. schrieb:

der Taster-Eingang wird ja mit 5V hochgezogen der Taster geht auf GND,

Gerade anders rum.

Beitrag "Re: benötige Hex-Datei für PIC16F628A"

Oh weh, ich habs verschlimmbessert. Habe es jetzt korrigiert, und noch Pin 18&17 getauscht, jetzt gilts definitiv, jetzt alles nochmal.

Angehängte Dateien:
OP #7546282
Lesenswert?

Hallo zusammen ich habe den PIC in ein Steckboard gesetzt Vom PICit3 habe ich PIN 1 (MCLR) auf PIN 4 des PIC gelegt PIN 2 (VCC) auf PIN 14 des PIC gelegt PIN 3 (GND) auf PIN 5 des PIC gelegt PIN 4 (Data) auf PIN 13 des PIC gelegt PIN 5 (Clock) auf PIN 12 des PIC gelegt und dann versucht die hex-Datei einzulesen. Habe PIC eingebaut wenn ich einen Taster drücke machen alle Relais für die Pumpen nur einen kurzen Impuls und dann nichts mehr auch nicht wenn ich weiteren Taster betätige.

was mache ich nur Falsch? oder passt an der Hex Datei von Jochen Paul etwas nicht habe versucht den PIC auszulesen (siehe Hex-Datei)

Jochen-paul S. schrieb:

Gerade anders rum.

Beitrag "Re: benötige Hex-Datei für PIC16F628A"

Oh weh, ich habs verschlimmbessert. Habe es jetzt korrigiert, und noch Pin 18&17 getauscht, jetzt gilts definitiv, jetzt alles nochmal.

Angehängte Dateien:
#7546384
Lesenswert?

Das Hex-File sieht recht seltsam aus

Das Programm srecord https://srecord.sourceforge.net/ gibt diese Info aus:

srec_info Tasteraggregat.hex -Intel Format: Intel Hexadecimal (MCS-86) srec_info: Tasteraggregat.hex: 274: warning: data records not in strictly ascending order (expected >= 0x4300, got 0x400E) Data: 0000 - 0FFF 4000 - 4007 400E - 400F 4200 - 42FF

#7546429
Lesenswert?

Roland G. schrieb:

diese Antwort kommt kurz und dann kommt Selected device not detected

d.h. das PICkit3 sieht den PIC nicht, überprüfe Deine Verkabelung und mache einen 100nF-Kondensator zwischen Vdd und Vss

Du musst folgendes Bild sehen, bei Device muss PIC16F628A stehen (ich hatte gerade nur einen PIC16F88 zur Hand, der hat das gleiche Pin-Layout), das PICkit3 muss den PIC automatisch erkennen.

Angehängte Dateien:
#7546442
Lesenswert?

Zum Programmieren würde ich die Verbindungen zum "Rest" der Schaltung trennen. Nur Pickit mit Pic über kurze Kabel verbinden.

Bei LVP (Low Voltage Programming) oder HVP (High Voltage.....) ist auch das PGM-Pin entsprechend zu verschalten. Möglicherweise gibt's Probleme weil einer deiner Widerstände einen falschen Pegel erzeugt. https://www.sprut.de/electronic/pic/icsp/icsp.htm#lvp

#7546463
Lesenswert?

"hex file sucessefully imported" heist, dass die hex Datei nun in den Programmer geladen wurde. Nun muss es mit einer neuen Aktion in den Pic geflasht weden(wie schon richtig beschrieben, sollte danach ein grünes Fenster im Fenster erscheinen). Das mit dem Blockkondensator versteht sich von selbst, ich nehme an, dass auf der vorhandenen alten Platine eine ist.- Ich gebe zu, dass ich auf meinem Steckbrett keinen habe, funzt trotzdem.

#7546505
Lesenswert?

Pics habe ich fast nur mit dem BeeProg der Firma programmiert, da kenne ich keine Einzelheiten. Zu Hause ganz am Anfang mal den 16F84, weiß nicht mehr wie. LVP: Low-Voltage Programming Enable bit 1 = RB4/PGM pin has PGM function, low-voltage programming enabled 0 = RB4/PGM is digital I/O, HV on MCLR must be used for programming

https://ww1.microchip.com/downloads/en/devicedoc/40044e.pdf Datenblatt Seite 98 von 178

OP #7546891
Lesenswert?

Roland G. schrieb:

HJabe jetzt den PIC erhalten. Habe die VDD Direkt mit dem PICKIT3 verbunden dies funktioniert jetzt. Habe aber jetzt noch diese Fehlermeldung beim Einlesen der Hex-Datei siehe Bild

Hurra - vielen Dank habe jetzt mein Problem gefunden. VDD muss genauso wie VSS direkt an den PIC Hatte beide oben an der Steckerleise da kamen die Fehlermeldungen - Direkt am PIC funktioniert alles!!! Vielen Dank

Jochen-paul wie kann ich mich für die Programmierung erkenntlich zeigen

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren