Go Down

Topic: ATtiny Programmieren (Reset weg definieren) (Read 443 times) previous topic - next topic

SileNT443

Nabend,

wie definiere ich den Reset z.B. weg ?

Also ich brauche folgendes:
Pin0 als Digital Eingang
Pin1 als Digital Eingang
Pin2 als Digital Eingang
Pin3 als Digital Ausgang
Pin4 als Digital Ausgang
Pin5 als Digital Eingang

Ohne andere Funktionen. Als Interrupt etc auch deaktiviert.
Mir ist klar das ich danach den ATtiny nur über HIGH Voltage programmieren kann.

Im EEPROM kann ich ganz normal reinschreiben oder ?
Mit EEPROM.write und .read ?
Oder muss ich hier auch was beachten ?

Achja einen Bootloader habe ich über folgende Anleitung gebrannt: KLICK MICH
Das hat auch alles ohne Probleme funktioniert.

Grüße

Serenifly

Über die Fuses glaube ich:
http://www.engbedded.com/fusecalc/

Da gibt es RSTDISBL (Reset Disable)


Quote
Im EEPROM kann ich ganz normal reinschreiben oder ?
Mit EEPROM.write und .read ?
Oder muss ich hier auch was beachten ?
Den Datentyp musst du beachten. read() und write() arbeiten Byte-weise. Deshalb muss man größere Datentypen in Bytes aufteilen. Oder Funktionen verwenden die das erledigen

SileNT443

Über die Fuses glaube ich:
http://www.engbedded.com/fusecalc/

Da gibt es RSTDISBL (Reset Disable)
Und wo genau muss das eingetragen werden ?

Den Datentyp musst du beachten. read() und write() arbeiten Byte-weise. Deshalb muss man größere Datentypen in Bytes aufteilen. Oder Funktionen verwenden die das erledigen
Dort soll nur eine 1 oder eine 0 gespeichert werden ^^


Muss ich noch mehr deaktivieren damit der ATtiny so funktionieren soll wie ich das möchte ?

agmue

Und wo genau muss das eingetragen werden ?
Die Fuses werden beim Übertragen des Bootloaders gebrannt, wobei die IDE bei ATtinys normalerweise einen leeren Bootloader überträgt.

Serenifly

#4
Jan 28, 2016, 12:31 am Last Edit: Jan 28, 2016, 12:35 am by Serenifly
Oder per Hand mit avrdude:
http://savannah.nongnu.org/projects/avrdude

Vorher sollte man die Fuses auslesen. Dann ändern was man will und zurückschreiben.

Siehe hier allgemein mit einem Arduino UNO als Programmierer:
http://codeandlife.com/2012/03/21/using-arduino-uno-as-isp/
Und hier mehr Kommandos:
http://www.ladyada.net/learn/avr/avrdude.html
Da wird unten auch das Schreibkommando für die Fuses gezeigt. Mit r statt w liest man

Weiter oben auch:
Quote
-U <memtype>:r|w|v:<filename>[:format]: OK this one is the important command. Its the one that actually does the programming. The <memtype> is either flash or eeprom (or hfuse, lfuse or efuse for the chip configuration fuses, but we aren't going to mess with those). the r|w|v means you can use r (read) w (write) or v (verify) as the command. The <filename> is, well, the file that you want to write to or read from. and [:format] means theres an optional format flag. We will always be using "Intel Hex" format, so use i
Beachte dabei den Programmer. Der erste Link ist für den ArduinoISP. Der zweite ist für einen richtiges Programmier-Gerät. Entsprechend ändert sich der Anfang des Kommandos etwas.

SileNT443

Die Fuses werden beim Übertragen des Bootloaders gebrannt, wobei die IDE bei ATtinys normalerweise einen leeren Bootloader überträgt.
Ich bin ja nach der obigen Anleitung vorgegangen.
Das Bsp. Programm Arduino as ISP auswählen
Auf den Uno Laden
Anschließend den Tiny verbunden
Bootloader gebrannt
Fertig

Wo genau muss ich diesen nun füllen ?
Ist das eine Programmzeile im Bsp Programm Arduino as ISP ?!


Oder per Hand mit avrdude:
http://savannah.nongnu.org/projects/avrdude

Vorher sollte man die Fuses auslesen. Dann ändern was man will und zurückschreiben.
Das geht aber nur über eine RS232 Schnittelle oder ?
Und dann halt mit CMD arbeiten.
Das sehe ich als schwierig an.
Siehe hier allgemein mit einem Arduino UNO als Programmierer:
http://codeandlife.com/2012/03/21/using-arduino-uno-as-isp/
Und hier mehr Kommandos:
http://www.ladyada.net/learn/avr/avrdude.html
Da wird unten auch das Schreibkommando für die Fuses gezeigt. Mit r statt w liest man

Weiter oben auch:
Beachte dabei den Programmer. Der erste Link ist für den ArduinoISP. Der zweite ist für einen richtiges Programmier-Gerät. Entsprechend ändert sich der Anfang des Kommandos etwas.
Richtiges Programmiergerät habe ich leider nicht.

agmue

IDE: In der Datei \hardware\tiny\avr\Boards.txt kannst Du einen neuen Abschnitt anlegen, wo dann die Parameter entsprechend Deinen Vorstellungen gesetzt werden. Als Programmiergerät fungiert der UNO.

SileNT443

IDE: In der Datei \hardware\tiny\avr\Boards.txt kannst Du einen neuen Abschnitt anlegen, wo dann die Parameter entsprechend Deinen Vorstellungen gesetzt werden. Als Programmiergerät fungiert der UNO.
Alles klar werde ich heute Abend mal nachschauen was ich dort finde.
Danke !

agmue

Wenn Du schon mal schauen möchtest, das steht für ATtiny 86 mit 8 MHz:
Quote
attiny85at8.name=ATtiny85 @ 8 MHz  (internal oscillator; BOD disabled)

attiny85at8.upload.tool=arduino:arduinoisp

attiny85at8.upload.maximum_size=8192
attiny85at8.upload.maximum_data_size=512

# Default clock (slowly rising power; long delay to clock; 8 MHz internal)
# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value
# Brown-out detection disabled; [BODLEVEL=111]
# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]

attiny85at8.bootloader.low_fuses=0xE2
attiny85at8.bootloader.high_fuses=0xD7
attiny85at8.bootloader.extended_fuses=0xFF

attiny85at8.bootloader.path=empty
attiny85at8.bootloader.file=empty85at8.hex
attiny85at8.bootloader.tool=arduino:avrdude

attiny85at8.build.mcu=attiny85
attiny85at8.build.f_cpu=8000000L
attiny85at8.build.core=tiny
Anstelle attiny85at8 dann einen eigenen Namen.

SileNT443

Wenn Du schon mal schauen möchtest, das steht für ATtiny 86 mit 8 MHz:Anstelle attiny85at8 dann einen eigenen Namen.
Sooo langsam steige ich dahinter :D

Quote
attiny85at8.bootloader.low_fuses=0xE2
attiny85at8.bootloader.high_fuses=0xD7
attiny85at8.bootloader.extended_fuses=0xFF
Das müsste ich anpassen in

Quote
attiny85at8.bootloader.low_fuses=0xE2
attiny85at8.bootloader.high_fuses=0x57
attiny85at8.bootloader.extended_fuses=0xFF
Weil ich ja den Reset disabled haben möchte
Richtig ?

Dann kann ich die Eingänge so verwenden wie ich möchte ?

Muss ich den Interrupt auch abschalten ?
Oder ist dieser aus wenn ich ihn nicht verwende ?

agmue

#10
Jan 28, 2016, 12:18 pm Last Edit: Jan 28, 2016, 12:19 pm by agmue
Was Du mit dem Reset vorhast, habe ich noch nicht gemacht! Aber nach dem Rechner müßte high_fuses=0x57 stimmen.
Dann kann ich die Eingänge so verwenden wie ich möchte ?
Die Verwendung der I/Os wird im Sketch festgelegt, ebenso der Interrupt.

Mein Tipp: Schreibe doch erstmal einen Blinksketch, um ein Gefühl für den Umgang mit dem ATtiny zu bekommen. Und nur zur Sicherheit: Es gibt auch ATtinys mit mehr Beinchen, ich verwende beipielsweise ATtiny 4313.

SileNT443

Was Du mit dem Reset vorhast, habe ich noch nicht gemacht! Aber nach dem Rechner müßte high_fuses=0x57 stimmen. Die Verwendung der I/Os wird im Sketch festgelegt, ebenso der Interrupt.

Mein Tipp: Schreibe doch erstmal einen Blinksketch, um ein Gefühl für den Umgang mit dem ATtiny zu bekommen. Und nur zur Sicherheit: Es gibt auch ATtinys mit mehr Beinchen, ich verwende beipielsweise ATtiny 4313.
Es sollen dort 4 Eingänge verarbeitet werden und 2 Ausgänge.
Nix besonderes nur digitale Signale.
Der ATtiny4313 ist zu groß die Platine steht schon  ::)

Serenifly

Richtiges Programmiergerät habe ich leider nicht.
Dann verwende einen UNO und ArduinoISP

Go Up