Hallo,
dies ist meine erster Beitrag hier =) Sorry, wenn die Frage doof ist,
aber kann ich bei einem ATtiny85 den Reset-Pin erst ganz normal für ISP
beschalten und dann nach dem Programmieren den Pullup-Widerstand
rauslöten, um ihn als normalen Ausgang zu benutzen?
Liebe Grüße,
Meike
Jain. Du kannst in den Fuses den Pin umstellen. Aber danach funktioniert
der ISP nicht mehr.
Du musst also wissen was du tust und in welcher Reihenfolge :)
Grundsätzlich schon. Es ist aber nicht zu empfehlen.
Man muss wissen das PB5 deutlich weniger Strom liefert. Und bei
Programmieren hat man nur einen Versuch, weil ISP danach nicht mehr
möglich ist. Das Testen kann sehr Zeitaufwändig werden. Besser ist es
einen größeren Kontroller zu nehmen.
Solltest Du dich trotzdem entscheiden, den Pin PB5 als IO-Pin zu
verwenden, benötigst Du den Pull-Up am RESET nicht. Der Pull-Up wird nur
gebraucht um nicht ungewollt einen Reset auszulösen. Für das
Programmieren wird er nicht benötigt.
Meike schrieb:> um ihn als normalen Ausgang zu benutzen?
Wie schon geschrieben, ist der Pin als Ausgang etwas schwach auf der
Brust. Eigentlich ist der dafür gar nicht zu gebrauchen, sondern taugt
nur als Eingang.
Ein Taster lässt sich aber auch abfragen, ohne den Reset zu
deaktivieren.
Wenn der Taster über einen Spannungsteiler angeschlossen ist und bei
Betätigung ein bißchen am Pin wackelt, lässt sich das mit dem ADC
abfragen. Per ADC ist der Reset-Pin immer einlesbar, auch wenn er Reset
ist. Damit sparst du dir das Deaktivieren und Aussperren.
Vielleicht lässt sich die Schaltung ja entsprechend abändern.
Wenn überhaupt, sollte man PB5 höchstens als Eingang benutzen.
Ansonsten kann es Probleme geben, wenn im serial HV-Programming Mode das
STK500 gegen den Ausgang auf Low ankämpfen muß.
PB5 läßt sich außerdem als analog Eingang abfragen, ohne das ISP
deaktivieren zu müssen.
>PB5 läßt sich außerdem als analog Eingang abfragen, ohne das ISP>deaktivieren zu müssen.
Ist ja interessant!
Hast du da ein Beispiel? Wie verhindert man da einen RESET?
Viele Grüße
eggi schrieb:> Wie verhindert man da einen RESET?
Indem man über der High-Schwelle bleibt.
Z.B. ein Taster mit Spannungsteiler zieht PB5 von 5,0V auf 4,5V.
Hmm so in der Art dachte ich mir das....hast du das schon real
gemacht(ist das zuverlässig?)? Gibt es irgendein Referenzprojekt im Netz
(Link)?
Viele Grüße
eggi schrieb:> hast du das schon real> gemacht(ist das zuverlässig?)?
Ja.
Als Spannungsteiler habe ich 10k+1k genommen.
Lt. Datenblatt dürfen 0,9*VCC nicht unterschritten werden.
Man kann auch Vcc über eine Diode anschliessen und diese Diode mit einem
Taster überbrückbar machen. Den Spannungsanstieg kann man dann mit der
Bandgap-Messung mit dem ADC detektieren.
Mein grosses V. schrieb:> Man kann auch Vcc über eine Diode anschliessen und diese Diode mit> einem> Taster überbrückbar machen. Den Spannungsanstieg kann man dann mit der> Bandgap-Messung mit dem ADC detektieren.
Und der Strom zerschießt dann die Diode ?
One-Wire-Shot...
Hey super, dann muss ich nur meine Schaltung noch ein bisschen anpassen
und alles wird funktionieren!
Ich hätte noch eine Frage, wo hier schon so viele "Profis" antworten:
Aus vielen AD-Wandlungen muss ich viele Daten zwischengespeichert und
auswerten.
Das bisherige Variablenarray sieht folgendermaßen aus:
uint16_t temp_i16[1024][3];
Bei einer 16-Bit-Interger Variable bleibt dann einfach zuviel Speicher
ungenutzt.
Eine uint10_t Variable wäre mir am liebsten =)
Gibt es sowas?
Meike schrieb:> Das bisherige Variablenarray sieht folgendermaßen aus:> uint16_t temp_i16[1024][3];
Das Array ist 6KB lang. Du wirst also einen Atmega1284 nehmen müssen.
Dann haben sich die Probleme mit deinen I/Os auch gleich erledigt.
Meike schrieb:> Eine uint10_t Variable wäre mir am liebsten =)>> Gibt es sowas?
Nein.
Meike schrieb:> Aus vielen AD-Wandlungen muss ich viele Daten zwischengespeichert und> auswerten.
Mal überlegen, ob man bestimmte Berechnungen gleich nach der
ADC-Wandlung durchführen kann.
Meike schrieb:> Eine uint10_t Variable wäre mir am liebsten =)
Prüfe mal wohlwollend, ob auch 8Bit-ADC reichen.
Meike schrieb:> Das bisherige Variablenarray sieht folgendermaßen aus:> uint16_t temp_i16[1024][3];
Dann sagt Dir der Compiler 1200% RAM Auslastung.
Büsschen viel oder?
Mein grosses V. schrieb:> Ein Taster lässt sich aber auch abfragen, ohne den Reset zu> deaktivieren.>> Wenn der Taster über einen Spannungsteiler angeschlossen ist und bei> Betätigung ein bißchen am Pin wackelt, lässt sich das mit dem ADC> abfragen. Per ADC ist der Reset-Pin immer einlesbar, auch wenn er Reset> ist. Damit sparst du dir das Deaktivieren und Aussperren.
Meinst du so wie im Anhang?
TBI schrieb:> Meinst du so wie im Anhang?
Ja. Aber mit kleineren Widerständen.
Peter D. schrieb:> Als Spannungsteiler habe ich 10k+1k genommen.
Stellt sich aber die Frage, ob alle Programmer den 1K runterziehen
können. Aber so gewaltig ist das auch wieder nicht. Atmel-Programmer
können das. DebugWire funktioniert damit allerdings nicht.
Mein grosses V. schrieb:> Ja. Aber mit kleineren Widerständen.
Ich bin von dem allseits üblichen 10k gegen VCC ausgegangen und von da
aus auf den 0,5V Spannungsabfall gegen GND. Warum kleinere Widerstände?
Ich hatte mal eine Schaltung mit LED's und 90 Ohm Vorwiderständen. Sogar
die konnte der ATmel Programmer mit ansteuern. Was mich angenehm
überrascht hat.
Die Idee, den Reset Pin analog abzufragen, finde ich sehr interessant.
Ich habe nämlich noch eine Menge dieser 8 Beiner in der Bastelkiste und
oft fehlte mir nur ein Pin. Jetzt nicht mehr. Danke!
Eine eigene Frage?
Dieser Thread ist über 10 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.