Forum: Mikrocontroller und Digitale Elektronik ATtiny43U und Reset als IO


von Nico H. (nico84)


Lesenswert?

Hallo,
Wie kann ich den ATtiny43U programmieren wenn ich den Reset Pin als io 
setze? Aus dem Datenblatt werde ich nicht so richtig schlau.

http://www.atmel.com/dyn/resources/prod_documents/doc8048.pdf

Hintergrund:
Ich möchte mit möglichst wenig Hardware eine 16Segmentanzeige ansteuern.

von (prx) A. K. (prx)


Lesenswert?

Nicolai H. schrieb:

> Wie kann ich den ATtiny43U programmieren wenn ich den Reset Pin als io
> setze? Aus dem Datenblatt werde ich nicht so richtig schlau.

Bootloader oder High Voltage Programmer.

von Nico H. (nico84)


Lesenswert?

A. K. schrieb:
> Bootloader oder High Voltage Programmer.

Das kann ich bestimmt nicht mit dem AVRISPmkII ?

von (prx) A. K. (prx)


Lesenswert?

Nicolai H. schrieb:

> Das kann ich bestimmt nicht mit dem AVRISPmkII ?

Yep. Und HVP=Parallelprogrammierung geht normalerweise auch nicht in der 
Zielschaltung.

von Nico H. (nico84)


Lesenswert?

Warum nicht?

von (prx) A. K. (prx)


Lesenswert?

Schau ins Datasheet unter "Parallel Programming". Du brauchst dann alle 
Pins für die Programmierung und 12V an Reset.

Wenn Reset erst einmal auf IO-Pin konfiguriert ist, dann kriegt man den 
Genossen nur noch mit HVP wieder da raus.

von Uwe (de0508)


Lesenswert?

Hallo,
- edit - da war ich nicht der Erste..

wenn der Reset belegt wurde, muss die Schaltung für

"Parallel Programming Parameter" 19.5 im Datenblatt angesprochen werden.

Dabei wird Reset auf +12V gelegt ! Das muss dann dein Schaltung 
"aushalten", ansonst würde ich den seriellen Bootloader Fastboot von 
PEDA verwenden!

Link: Beitrag "Re: Peter Danneggers Bootloader (fastboot) für AVR-GCC-Toolchain"

Aber warum muss es ein ATtiny43u sein ? die LED werden sicherlich nicht 
mit 1,5V funktionieren - oder ?

von Nico H. (nico84)


Lesenswert?

Weil die Schaltung aus Platzgründen nur mit einer AA Zelle betrieben 
werden soll. Am Ausgang stehen mir doch durch den Booster 3V zur 
Verfügung. Die einzelnen Segmente sollen per Multiplex angesprochen 
werden. Es leuchtet also immer nur eins. Ich werd mir das mit dem 
Bootloader mal anschauen. Eigentlich wird der µC nur einmal programmiert 
und soll dann laufen. Ich dachte nur ein eine eventuelle 
Wiederverwertung zu einem späten Zeitpunkt.

von Uwe (Gast)


Lesenswert?

Wieviel strom kann man denn aus dem Booster ziehen. Reicht das für den 
Strom der LEDs. Im Multiplex muß man ja doch schon mit ein höheren 
Strömen rechnen damit man auf die equivalente Leuchtstärke kommt wie im 
CW-Betrieb.

von (prx) A. K. (prx)


Lesenswert?

Nicolai H. schrieb:

> Eigentlich wird der µC nur einmal programmiert
> und soll dann laufen.

Programmentwicklung inklusive?

von Uwe (de0508)


Lesenswert?

Ich denke mal laut, ich finde gerade eine Aussagen im Datenblatt 8.1, 
p.36ff über den maximalen Strom den man einer so einfachen Schaltung 
entnehmen kann.

Läuft die Schaltung schon?

Welcher Strom wird aus der 1,5V Bat gezogen ?

von (prx) A. K. (prx)


Lesenswert?

Uwe schrieb:

> Wieviel strom kann man denn aus dem Booster ziehen.

30mA abzüglich Eigenverbrauch des Controllers, also um die 25mA.

von Nico H. (nico84)


Lesenswert?

Das sollte doch eigentlich reichen. Die Anzeige muss nicht auf voller 
Helligkeit laufen. Es reicht wenn man es bei normalen Lichtverhältnissen 
erkennen kann.  Die Laufzeit ist erstmal zweitrangig, da die Schaltung 
per Reed Schalter eingeschaltet wird und danach wieder aus ist.

von Nico H. (nico84)


Lesenswert?

Erstmal ist es wohl einfacher die 16Segmente durch 7 zu ersetzen und die 
Buchstaben ersatzlos zu streichen :D

Bevor ich Anfange:
Muss ich in AVRStudio etwas umstellen, oder reicht es
MOSI auf DO, MISO auf DI?

Kann mir jemand ein gutes Bootloader Tutorial empfehlen?

von Nico H. (nico84)


Lesenswert?

Uwe S. schrieb:
> ansonst würde ich den seriellen Bootloader Fastboot von
> PEDA verwenden!
>
> Link: Beitrag "Re: Peter Danneggers Bootloader (fastboot) für AVR-GCC-Toolchain"
>
> Aber warum muss es ein ATtiny43u sein ? die LED werden sicherlich nicht
> mit 1,5V funktionieren - oder ?

Der ATtiny43u ist da nicht mit aufgelistet. geht das trotzdem?

von Uwe (de0508)


Angehängte Dateien:

Lesenswert?

Servus,

ja ich habe mir gerade ein "demo" Makefile gebaut, da muss man nur den/ 
die Ports anpassen und die Frequenz richtig wählen.

Verwende ich zum Testen Q=8MHz und den 1-Wire Mode an PB0.

Und über http://www.engbedded.com/fusecalc/ die richtigen Fuse-Bits 
setzen.

Ich verwende avrdude zum programmieren.

von Nico H. (nico84)


Lesenswert?

Danke für die schnelle Antwort. Ich probiere es mal.

von Uwe (de0508)


Lesenswert?

Du benötigst noch den WinOS oder Linux Client für den fastboot loader.

Unter http://avr.8b.cz/inc/ hole ich mir immer die benötigten INC 
Dateien, die dann unter "fastboot-2.9/atmel/" gespeichert sind.

Also hier wird noch die Datei |tn43Udef.inc| benötigt.

von Nico H. (nico84)


Angehängte Dateien:

Lesenswert?

Ich muss doch dann die Fuse BOOTRST und BOOTSZ änderen? Beim ATMega gibt 
es die. Beim ATtiny43U leider nicht.

Im Datenblatt steht:

The device has no separate boot loader section. The SPM instruction is 
enabled for the whole
Flash, if the SELFPROGEN fuse is programmed (“0”), otherwise it is 
disabled.

Kann ich also kein bootloader flashen?

von Uwe (de0508)


Lesenswert?

Hallo Nicolai,

der Bootloader ist super und läuft betimmt bei dir.

Quarz auf 8 Mhz, bei dir läuft der noch mit 1 MHz.

ich komme dann auf :

-U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xfe:m

einfach mal so testen !

von Nico H. (nico84)


Lesenswert?

Geht das auch ohne Quarz?, denn dann würden mir ja wieder 2 Pins fehlen.

von Uwe (de0508)


Lesenswert?

Sorry, der RC Oszillator läuft mit 8MHz schauf auf die Fuse Bits !

von Nico H. (nico84)


Lesenswert?

Ja, aber was würde dagegen sprechen den internen 1Mhz zu verwenden? im 
makefile natürlich F_CPU = 1000000 dann angeben?

von Uwe (de0508)


Lesenswert?

Nicolai, wenn du die Quellen selbst übersetzt, dann hast du alle 
Möglichkeiten !

Also mach mal und gib uns bitte eine Rückmeldung, was du gelernt hast.

cu.

von Nico H. (nico84)


Lesenswert?

Ok, ich danke dir ;)

von Nico H. (nico84)


Lesenswert?

So hier nun die Rückmeldung:

Ich habe den Bootloader angepasst. Das war ganz einfach. im Makefile 
F_CPU = 1000000 angegeben und die Ports angepasst. Mit fboot kann man 
natürlich aufgrund der 1Mhz nicht mehr die 115.200 Baut erreichen aber 
mit 2.400 oder 4.800 geht es. Den Bootloader finde ich auch. Ich kann 
auch etwas flashen. Blöderweise startet das das Programm dann nicht. 
Muss ich evtl. doch noch eine Fuse setzen? Auf dem Bootloader komme ich 
weiterhin drauf. Er muss also in der Bootloader endlos Schleife hängen.

von Uwe (de0508)


Lesenswert?

Hallo Nicolai,

kopiere bitte deine Fuse Bits hier hin und auch ein Bildschirmfoto vom 
Ladervorgang.

Danke.

von Nico H. (nico84)


Angehängte Dateien:

Lesenswert?

Hier die Bilder. fboot nutze ich auf einem anderen xp Rechner da es 
unter x64 nicht läuft.

von Uwe (de0508)


Lesenswert?

Hallo,

damit ist mir klar du hast dir nicht die Fuse Bits, die ich oben 
angegeben habe, angesehen !

Also es fehlt:

Self Programming enable; [SELFPRGEN=1]

von Nico H. (nico84)


Lesenswert?

komme ich dann trotzdem noch mit dem isp drauf wenn die gesetzt ist? 
Oder ist es ab dann vorbei?  denn dann müsste ich vorher noch den reset 
pin ändern.

von Uwe (de0508)


Lesenswert?

Ändere bitte nur diese Bit auf 1.

die restlichen Erkenntnisse kommen dann schon.

Alles save !

von Nico H. (nico84)


Lesenswert?

Fuse gesetzt. Nun läuft es. ISP geht auch noch. Klasse. Ich danke dir.

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
Noch kein Account? Hier anmelden.