Xline schrieb:
> Wow @PWM.
> Ich hatte eigentlich daran gedacht den Pin einfach in eine Schleife zu
> hängen und die sleep / delay - Zeit abhängig vom Widerstand zu machen :P
>
> Bei <5 Ohm hätte ich die Schleife dann 'genullt'...
>
> Scheint da doch nicht ganz so einfach zu sein, wie ich es mir erhofft
> hatte. Danke schonmal für die Links. Da hab ich heute Abend wohl noch
> genug zu tun. ;)
Das würde und wird auch so funktionieren. Allerdings misst der ADC nicht
den Widerstand am Pin sondern die Spannung in Relation zu entweder der
Spannung an ARef oder VCC. Es wäre deshalb besser dein Poti zwischen VCC
oder ARef und GND zu schalten um einen Spannungsteiler zu bauen und den
Schleifer (meist der mittlere Pin des Potis) an den ADC zu hängen. So
kannst du die Spannung ziemlich genau zwischen 0 und dem maximum
einstellen und mit dem ADC abgreifen.
Die Schleife mit der variablen Pause wird wie schon erwähnt so
funktionieren, nur musst du aufpassen daß der erzeugte Code nicht zu
groß wird. Das kann nämlich passieren, wenn du z.B. _delay_ms(adc_wert);
schreibst, weil dann der komplette Fließkommateil der delay-Routine mit
auf den Controller geschrieben werden muss. Falls es nur darauf ankommt
eine unterschiedliche Blinkzeit zu erzeugen und nicht darauf, eine
möglichst genaue Zeit zu warten, kann man um Platz auf dem µC zu
sparen statt _delay_ms(adc_wert) aufzurufen einfach eine Schleife bauen
in der _delay_ms(1); adc_wert-mal aufgerufen wird. Wenn dein Controller
allerdings eh über genug Flash verfügt kannst du auch einfach delay mit
der Variable aufrufen. Zum ausprobieren kann man schonmal 2k oder so für
delay verpulvern :)
Grüße aus Hannover,
Christian