Hallo liebe Mikrocontroller.net-Gemeinde, dies ist seit Jahren mal wieder ein µC-Projekt von mir, also seid bitte nachsichtig bei doofen Fragen ;-). Zur Vorgeschichte : Ich kenne mich ganz gut im Bereich Hardwarentwicklung aus, bin aber (leider) kein Programmierer. Deshalb suche ich einen freundlichen Helfer, der mir das benötigte Programm schreibt. Also wer Lust, Zeit und Ahnung davon hat, bitte ein Angebot an mich richten! Zum Projekt : Es soll ein ATtiny4 (ggf. ATtiny9) zum Einsatz kommen. Sein Job ist recht überschaubar und auch nicht sonderlich zeitkritisch. Ein Pin wird als Eingang konfiguriert und auf Pegelwechsel überwacht, während zwei weitere Pins als Ausgang konfiguriert werden und einen Impuls bzw. eine Impulsfolge ausgeben sollen. Konkret heisst das: Wechselt der Pegel am Eingang von High auf Low, soll ein Ausgang einen kurzen Low-Impuls ausgeben. Der zweite Ausgang ist immer die invertierte Version des ersten Ausgangs, gibt also einen kurzen High-Impuls ab. Wechselt der Pegel am Eingang von Low auf High, soll der eine Ausgang zwei kurze Low-Impulse ausgeben. Der zweite Ausgang dann entsprechend zwei kurze High-Impulse. Soweit zur Hauptfunktion. Zusätzlich soll der Eingang noch von einem Timer überwacht werden. Wechselt der Pegel am Eingang nach einem ersten Pegelwechsel innerhalb einer definierten Zeitspanne wieder zurück, wird dieser zweite Pegelwechsel ignoriert. D.h. es werden keine Impulse an den Ausgängen ausgegegen. Das alles spielt sich im 100ms-Bereich ab. Ein Flow-Chart mit Timing-Diagramm habe ich als Anhang beigelegt. Besonderheiten : Primäres Ziel ist ein extrem geringer Stromverbrauch. Dafür gibt es so Einiges zu beachten. Folgende Maßnahmen sind vorgesehen: - Versorgungsspannung 1,8V - Taktung über den internen 128 kHz Oszillator - Abschalten aller internen Pull-Ups - Erlauben des externer Interrupts - Erlauben des Timerintterupts - Idle Mode während des Wartens auf einen externen Interrupt durch Pegelwechsel bzw. Erreichen eines Timerwertes Laut Datenblatt sollte der Stromverbrauch im Idle Mode bei etwa 3µA liegen, was während der meissten Zeit der Fall wäre. Nach Wechsel in den aktiven Mode (also nach Auftreten eines Pegelwechsels am Eingang bzw. eines abgelaufenen Timers) kurzzeitig bei ca. 35...40µA. Weiterhin soll der ATtiny über das Tiny Programming Interface (TPI) In-System programmierbar sein. Die drei Anschlüsse + Stromversorgung werden später als Testpoints auf dem PCB herausgeführt. Ich bin alle Register durchgegangen und hoffe, dass ich nichts übersehen habe. Aber wenn sich ein erfahrener Programmierer der Sache annimmt, weiss der eh besser was zu tun ist. Mit welchem Tool bekomme ich das Programm eigentlich in den ATtyni, wenn dieser schon auf dem PCB sitzt?
:
Bearbeitet durch User
Du kennst du doch mit den Registern usw ganz gut aus. So schwer kann es eigentlich nicht sein, sich das Programmieren für so ein Kleinstprogramm beizubringen.
Ich habe vor 25 Jahrem mal mit Assembler "experimentiert" und mich immer mal wieder aufgerafft, daran anzuschließen. Bekomme es aber nicht auf die Reihe :-(. Aber es wird sich doch hier jemand finden .... hoffe ich!
Was ich mich frage, warum man sich mit einem ATtiny4 so einschränkt ?! Ein ATtiny10 wäre schon mal etwas "größer" und hat einen ADC. Ein ATtiny4/5/9/10 muss über das TPI protocol programmiert werden, ISP muss man doch noch etwas mehr machen, so dass man die I/O Pins frei bekommt. Aber ein attiny85 ist viel einfacher zu programmieren, in zweifacher Hinsicht. Ich verpasse ihm immer einen seriellen Bootloader, evtl. nutze ich auch einen 1-Wire Bootloader. Für einen attiny85 findet man dann auch viel mehr Leute, die einem eine Programm schreiben würden.
Als programmoeradapter bietet sich ein avrisp mk2 an. Dein Code ist ja fast fertig. Schreib den halt in Assembler um und teste ob er tut was er soll...
Max D. schrieb: > Als programmoeradapter bietet sich ein avrisp mk2 an. Aha, OK, danke! Der Rest sind nett gemeinte Ratschläge, die mich aber nicht weiter bringen. Die Nachfrage steht nach wie vor: Wer schreibt mir gegen Aufwandsentschädigung das notwendige Programm?
> Wer schreibt mir gegen Aufwandsentschädigung das notwendige Programm?
Erfahrungsgemäß funktioniert die Sache in der Schaltung oft doch nicht
so, wie in theorie geplant. Wenn du ein Ablaufdiagramm und einen
Prototypen der gesamten Schaltung bereitstellst, mache ich Dir ein
Angebot.
Ansonsten: So im Blindflug nur auf Bassis von so ein paar Zeilen Text
traue ich mich nicht heran. Nachher vervielfacht sich womöglich der
Aufwand und wir streiten uns um die Kosten.
>Taktung über den internen 128 kHz Oszillator
Der schnellere interne Oszillator bringt dich schneller wieder in den
Sleep-Modus, ist daher sparsamer. Gruß J
Du hast das doch schon fast komplett aufgedrösselt. Ich würde ein Board mit Debugmöglichkeit wählen, einmal alles implementieren und mich dann mit Hilfe des Debuggers den Denkfehlern / Syntaxfehlern stellen. Gruß J
Ich glaube, du hast da was übersehen. Der ATtiny4 ist "In System programmable at 5V only", du willst ihn aber im System bei 1,8V programmieren.
Stefan U. schrieb: > Ich glaube, du hast da was übersehen. > > Der ATtiny4 ist "In System programmable at 5V only", du willst ihn aber > im System bei 1,8V programmieren. Nein, ich will ihn nur mit 1,8V betreiben. Nach der Bestückung wird er mit 5V programmiert, bevor das PCB dann verbaut wird. Da keine weitere Peripherie on Board ist, die mit 5V ein Problem hätte, ist das kein Thema. > Erfahrungsgemäß funktioniert die Sache in der Schaltung oft doch nicht > so, wie in theorie geplant. Wenn du ein Ablaufdiagramm und einen > Prototypen der gesamten Schaltung bereitstellst, mache ich Dir ein > Angebot. Ich könnte ein STK600 + ATSTK600-ATTINY10 als Entwicklungsumgebung zur Verfügung stellen. Aufgabe wäre dann, das Programm in dieser Umgebung zum Laufen zu bekommen. Wenn es denn bei der Portierung auf mein eigenes PCB zu Problemen kommt und die Software noch mal angepasst werden müsste, müsste ich das halt extra zahlen. Wäre das OK? Vielleicht kannst Du mir mal auf dieser Grundlage ein Angebot machen....
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.