PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mini-Auftrag: Microcontroller als Zähler mit RS232



frank-findus
31.10.2006, 17:25
Hallo,

wer programmiert mir einen x-beliebigen Microcontroller, der am Ende folgende Funktion erfüllt:

- 5V Betriebsspannung
- 1 Pin als Zähler geschaltet
- 2 Pins als lowaktive Tasteneingänge
- Zählumfang mind. 16 Bit
- Zahlgeschwindigkeit bis 10 kHz
- an der RS232-Schnittstelle hört der Controller auf folgende Kommandos:

- "H" für Halt, es wird nicht gezählt
- "G" für Go, Zähler ist freigegeben
- "X" der Zählerstand wird zum Host gesendet
- "T" das Bitmuster der gedrückten Tasten wird zum Host gesendet
- "R" der Zähler wird auf Null gesetzt

Das Timing der Reaktion auf die Kommandos ist nicht kritisch, es wird keine Frequenzmessung, es soll nur ein Zähl-Geber aktiviert/deaktiviert werden.

Wenn es neben Windows- auch Mac-Treiber gibt, nehme ich auch eine USB-Lösung, ansonsten eben RS232, da brauche ich auf keiner Plattform gesonderte Treiber. Ich neheme den nackten Chip (DIL) oder als Mini-Platine, wenns SMD sein muss. Übertragungsparameter sollten fest auf 9600,8,1,N eingestellt sein. Biete 150 Euro. Interessiert?

Frank

CowZ
31.10.2006, 18:16
Passt eher ins Forum "Jobs/Hilfen/Stellen - Gesuche und Angebote" :)

Gruß, CowZ
PS: Die Anforderungen scheinen so ja nicht besonders hart zu sein...

askazo
31.10.2006, 18:19
Da hätte ich auf jeden Fall Interesse!
Eins ist mir noch nicht klar:
Du schreibst "Zählgeschwindigkeit bis 10 kHz"
Muss die Zählgeschwindigkeit auch über RS232 einstellbar sein, oder kann der Wert beliebig fest eingestellt werden?

Bis wann bräuchtest Du das Teil?

askazo

CowZ
31.10.2006, 18:21
@Zählgeschwindigkeit: Der Zählereingang liegt auf einem Pin, ist also wohl variabel. Die 10 kHz sind wohl das Maximum :)


edit: Bei den bisher genannten Anforderung (kein Handbuch, keine Garantie etc.) finde ich 150€ reichlich überzogen. Würde das auch mal "nebenbei" machen, wenn du ein bisschen Zeit hast.

Möchte hier natürlich meinem Vorredner nicht die 150€ weg nehmen :P

Gruß, CowZ

askazo
31.10.2006, 18:26
Ah ja, alles klar, der Zähler-Pin soll also Eingang sein.
Hatte gerade ein Brett vorm Kopf... ](*,)
Also, Angebot steht, ich würde es machen.
Und 150€ finde ich ehrlich gesagt für so eine Mini-Aufgabe ein wenig hochgegriffen - der Preis wäre also verhandelbar.

askazo

frank-findus
31.10.2006, 20:46
Hallo,

ja ... ähm - also ich sehe da jetzt ein Problem. Wie soll ich auswählen, wer es macht? Ich wollte auf gar keinen Fall irgendwie Zwietracht sähen ... Hauptsache, es tut, wie vorgegeben. Also bitte nochmal genau lesen, evtl. nachfragen.

Noch ein par Ergänzungen. Die 10 kHz müssen natürlich nicht live über die RS232. Nach dem Kommando "Go" soll der Zähler einfach so lange zählen, bis das Kommando "Halt" kommt. Der Zähler darf bei Frequenzen bis 10 kHz nicht aus dem Tritt kommen - bei beliebig niedrigeren Frequenzen natürlich auch nicht. Ein Überlauf darf nicht stattfinden, dann muss der Zähler beim Maximalwert von selber anhalten. Abgefragt wird für gewöhnlich nur im Halt-Zustand. Die Signale vom Sensor kommen in sauberem TTL-Rechteck, sind aber nicht unbedingt symmetrisch. Die vorgegebenen Kommandocodes können geändert werden, wenn das irgendwelche Vorteile bei der Entwicklung bringt. Fremde bzw. falsche Codes sollen ignoriert werden, keine Fehlreaktion auslösen.
Der Sensor (ein Barcode-Lesestift ohne Microcontroller) hat einen Open-Kollektor-Ausgang, die 2 Tasten sollen ihre Controller-Pins nach Masse ziehen. Wenn der verwendete Controller und die benutzte Software es zulassen (Interrups oder Multithreading), darf die RS232-Kommunikation als solche die Zählfähigkeit nicht beeinträchtigen ... mit einfachem Pin-Polling wird man da evtl. nicht weit kommen. Evtl. würde ich den Befehlssatz noch um zwei Kommandos erweitern: eine LED an- und ausschalten ("L" für light, "D" für dark o.ä.) Aber das war es dann wirklich. Ob bei LH- oder HL-Flanke gezählt wird, ist mir "wurscht".

Das Angebot steht, keine Frage und ich bezahl' auch gerne weniger, aber auch die 150,- , gesagt is gesagt. Evtl. kann der Entwickler ja auch ein oder zwei Chips mehr liefern, wenn es sein Gewissen beruhigt, der Hauptaufwand liegt ja sicher bei der Software.

Wenn ich mir in den nächsten Tagen mit einem von euch einig werde, dann muss es aber zügig gehen, bitte nicht länger als 3..4 Tage.

Gruß, Frank

P.S. ich will übrigens keine Barcodes lesen, sondern kleine Objekte zählen. Die Barcode-Stifte gibts für wenig Geld bei Ebay und die enthalten ein komplettes optisches System, LED, Fototransistor und Impulsformer - einfach perfekt.

CowZ
31.10.2006, 21:06
Ich trete das gerne an askazo ab ;)

frank-findus
31.10.2006, 21:35
Da hätte ich auf jeden Fall Interesse!
Bis wann bräuchtest Du das Teil?
askazo

Sieht so aus, als wären wir nun unter uns. Also maximal 2 Wochen ab heute, sind Zeit. Noch Fragen? Willst du einen Vorschuss? Wie willst du das machen? Mit welchem Controller?

Gruß, Frank

shaun
31.10.2006, 23:00
Mach bloß einen nackten Chip, eine Platine ist ein Gerät. Und sieh' zu, dass Du den Controller explizit RoHS-konform einkaufst. Ansonsten viel Spaß, die Aufgabe ist nun wirklich schaffbar.

askazo
01.11.2006, 15:01
2 Wochen dürften kein Problem sein, vielleicht finde ich schon kommendes Wochenende die Zeit dafür..
Ich hatte zuerst überlegt, einen Atmel Tiny24 dafür zu nehmen. Allerdings weiß ich nicht, wei gut man mit dem USI eine UART hinbekommt.
Von daher fällt die Wahl wohl auf den Mega8. Die nötige Hardware zum Testen ist vorhanden. Den Mega8 muss ich allerdings noch bestellen - dürfte aber auch recht schnell gehen.

Im Moment habe ich eigentlich nur noch zwei Fragen:
1) In welchem Format soll der Zählerstand an den PC geschickt werden - ASCII oder Hex?
2) Soll der Controller auf die Kommandos H,G,R,L,D eine Antwort schicken? Wird manchmal zur Kontolle verwendet, ob der Befehl angekommen ist.

Vorschuss brauche ich nicht, über die Bezahlung können wir uns am Schluss einig werden.

askazo

frank-findus
01.11.2006, 22:21
Hallo,

gut, dass du es so bald machen kannst.

- wenn du vom Programmcode her wirklich sicherstellen kannst, dass ein Quittungssignal nur dann gesendet wird, wenn der vorherige Befehl wirklich korrekt ausgeführt wurde, dann wäre das ganz gut. Z.B. ein "+" für OK und ein "?" o.ä. für einen unbekannten Befehl oder was auch immer.

- der Zählerstand sollte immer eine feste Länge haben, ggf. mit führenden Nullen auffüllen. Ob Hex oder ASCII ist mit egal - was einfacher zu programmieren ist, und am Ende zusätzlich ein Zeichen zur sicheren Erkennung, dass die Übertragung jetzt beendet ist, z.B. eine binäre Null.

Weitere Details sollten wir vielleicht per Mail besprechen? Meine Adresse ist info-at-qualidat.komm (Korrekturen findest du selbst?).

Gruß, Frank

bluelight_electronic
07.11.2006, 08:32
die usi als uart zu nutzen is mehr aufwand als ne Software Uart ... schau dir mal die Appnote305.pdf von Atmel an .. nutze ich auch .. is fein ;) ohne Interrupts und so n mist und läuft sauber

Anatec
07.11.2006, 09:34
Die Entscheidung ist eh schon gefallen. Nur mal zur Info:
ein PIC 16F627/28 hat ne frei konfigurierbare Hartware RS232, einen Hartwarezähler im MHz Bereich an den man zur Not noch jede Menge Softwarezähler anhängen kann, Triggereingänge für "schlechte" Signalqualität, nen EEProm für Vergessliche, nur 18 Beinchen und kostet 2,50€ :-), also der ideale µC um stundenlang herumzuzählen.

73 Gerd H