Forum: Mikrocontroller und Digitale Elektronik ATtiny45 Ein- Ausgänge konfigurieren


von Mathias N. (elektronikschwachm)


Lesenswert?

Ich glaub ich habe mich jetzt für 'nen ATtiny 45 entschieden und
versucht mich schonmal ein wenig zu informieren. mir ist jedoch noch
nicht ganz klar geworden, wie ich einzelne pins entweder als ausgang
oder eingang konfiguriere.in den threads wird meistens nur beschrieben,
wie ich einen kompletten port(B,D) als ausgang oder eingang setze.
kann mir jemand ein paar Infos geben?
Danke vorerst!

von cdg (Gast)


Lesenswert?

> Ich glaub ich habe mich jetzt für 'nen ATtiny 45 entschieden

Also doch noch nicht

von Anselm 6. (anselm68)


Lesenswert?

in Bascom würde ich
PortD.5 = output
tippern :p
oder input ;)

von Engelchen (Gast)


Lesenswert?

PORTB |= (1<<PB0);

Schaltet bit0 an Port B ein, also auf 1(+5V)

PORTB &= ~(1<<PB0);

Wieder aus

von Kachel - Heinz (Gast)


Lesenswert?

Schau Dir mal im Datenblatt die Beschreibung der Register DDRB, PORTB 
und PINB an. Jedes dieser Register hat 8 Bit. Jedes Bit steht für einen 
Portpin (falls der Port auch vorhanden ist). Somit kannst Du jeden 
Portpin einzeln ansprechen.

Da nun BASCOM- und C-Befehle bereits genannt wurden, nenne ich auch noch 
die, die der Tiny25 auch implementiert hat: CBI und SBI, dazu noch OUT, 
wenn es mehrere Pins gleichzeitig sein dürfen.

KH

von Engelchen (Gast)


Lesenswert?

Dann gibt es auch noch das "Daten Richtungs Register"
mit dem werden die Ports auf eingang oder ausgang geschaltet.

DDRB = 255; // Port B ist ausgang
DDRB = 0;   // Port B ist aengang

Andere Ports entsprechend.

von Mathias N. (elektronikschwachm)


Lesenswert?

ok,danke euch vorerst. kann mir evtl. noch jemand etwas zu den fuses 
sagen. welche sind denn da bei default gesetzt.habe mir das datenblatt 
besorgt, aber zu den fuses leider nichts gefunden.
ich bin noch blutiger uC-anfänger und über jeden kleinen hilfreichen tip 
sehr dankbar.

von holger (Gast)


Lesenswert?

>aber zu den fuses leider nichts gefunden

Steht im Kapitel
Memory programming

von let (Gast)


Lesenswert?

Hat das einen besonderen Grund weshalb du mit dem tiny45
anfangen willst?
Kleiner bedeutet nicht das er einfacher ist als die anderen.
Und wie willst du den programmieren? Normalerweise verwenden
(Bastel-)µCs im eingebauten Zustand per ISP programmiert.
Die Pins die zum Programmieren verwendet werden lassen sich
dann aber nicht uneingeschränkt als IO-Pins verwenden.
Das hängt ein bischen vom Programmiergerät ab was man an diese
Pins sonst noch anschließen kann. Das AVRISP-mkII ist da etwas
pingelig und zeigt gerne mal einen Kurzschluß an.
Nur wenn dem Tiny45 etwas fehlt dann sind das IO-Pins.

Vielleicht solltest du dir mal den Tiny44 oder besser den
Mega48 ansehen. 28Pins sind noch gut beherrschbar und mit 1,20€
(Reichelt) ist er auch erfreulich preiswert.

Und falls du es noch nicht irgendwo gelesen hast: Vorsicht
mit den Fuse-Bits. Eine falsche Einstellung kann dazu führen
das der µC nicht mehr funktioniert.
Zwei Fallstricke gibt es da:
1. Reset-Pin als IO-Pin konfiguriert: Läßt sich danach per ISP
   nicht mehr ansprechen.
2. Oszillator: Wenn du keinen Quarz angeschlossen hast und auf
   "ext. Crystal" schaltest, läuft der Controller nicht mehr.
   Aber selbst wenn ein Quarz dran ist geht bei "ext. clock" (o.ä.)
   anschließend nichts mehr.

von Peter D. (peda)


Lesenswert?

let wrote:

> Kleiner bedeutet nicht das er einfacher ist als die anderen.

Er ist weder einfacher noch schwerer, da alle AVRs den gleichen 
Befehlssatz haben.


> Und wie willst du den programmieren?

Da empfiehlt sich ein Bootloader, braucht nur einen Pin und alle 6 IOS 
sind nutzbar.


> Nur wenn dem Tiny45 etwas fehlt dann sind das IO-Pins.

Nur, wenn man mehr als 6 benötigt.
Es schadet auch nichts, sich über die effektive Nutzung der IOs Gedanken 
zu machen. Gerade in Software ist eine Mehrfachnutzung leicht zu 
realisieren.
Man spart dann außerdem Zeit beim Platinenlayout, wenn man nicht 
hunderte Drähte separat ziehen muß.
Ich nehme lieber zusätzliche IO-Expander (74HC165, 74HC595), wenn 
dadurch das Layout einfacher wird.


Peter

von Mathias N. (elektronikschwachm)


Lesenswert?

also ich dachte an einen tiny, da mir in einem gehäuse nur sehr wenig 
platz zur verfügung steht.
ich habe mir bereits einen mysmart usb programmer besorgt. wollte mir 
zum programmieren 'ne kleine lochrasterplatine aufbauen und ihn dann auf 
einer seperaten platine betreiben.
programmieren wollte ich erstmal in assembler.
ich benutze linux ubuntu und wollte zum flashen avrdude benutzen, wofür 
ich leider keine gui installiert kriege. deswegen habe ich jetzt ein 
wenig angst vor falsch eingestellten fusebits usw..........
wie gesagt ich bewege mich gerade in einem völligen neuland und daher 
erschlagen mich gerade ein wenig die ganzen infos aus den verschiedenen 
foren usw.
ich wollte eigentlich nur ein ganz einfaches programm mit einer 
ausschaltverzögerung und einem getakteten ausgangssignal erzeugen. 
angeworfen werden sollte das ganze entweder per taster oder 
funksignal.......ich glaube das wird doch nicht so einfach, wie ich mir 
dachte?!?!?oder kann mich jemand mit sinnvollen tips etwas beruhigen?

von Peter D. (peda)


Lesenswert?

Mathias N. wrote:

> ich wollte eigentlich nur ein ganz einfaches programm mit einer
> ausschaltverzögerung und einem getakteten ausgangssignal erzeugen.

D.h. Du brauchst 2 IOs, dann bist Du doch mit 6 verfügbaren IOs voll im 
grünen Bereich. Also keine Sorge.


Peter

von Mathias N. (elektronikschwachm)


Lesenswert?

ja das dachte ich mir auch.ich wollte evtl. noch einen eingang als a/d 
converter betreiben,um die batteriespannung zu messen.
jetzt muß ich mich glaub ich noch ein wenig mit den data sheets befassen 
um ein wenig licht in's dunkel zu bringen. und dann muß ich mal sehen, 
ob ich mit gcc/avrdude zurecht komme oder rüber zu windows muß und 
avrstudio verwende.
ich danke euch allen vorerst für die infos.

von let (Gast)


Lesenswert?

Die Fuse-Bits brauchts du erstmal gar nicht anfassen.
Die werden dann interessant wenn dir 1Mhz Taktfrequenz nicht
reichen und/oder du etwas quarzstabiles brauchst.
Aber wenn du dabeigehst solltest du schon wissen was du tust.
Dieses Programmiergerät stellt offenbar einen Takt zu Verfügung
mit dem du auch bei einen vermurksten Oszillatoreinstellung
den Chip noch/wieder ansprechen kannst. Das dürfte der Fehler
sein der am häufigsten auftritt.

Ich weiß es grenzt ab Majestätsbeleidung Herrn Dannegger zu
widersprechen, doch würde ich dir dennoch empfehlen mit einem
größeren AVR zu beginnen und die ISP Leitungen ständig
angeschlossen zu lassen. Bevor nicht die erste LED blinkt und
du eine Taste abfragen kannst, ist es m.M.n. nicht an der Zeit
über Dinge wie Bootloader nachzudenken. Das ist zu viel auf
einmal.

von Kachel - Heinz (Gast)


Lesenswert?

Gerade die kleinen AVRs sind besonders gut für den Einstieg in Assembler 
geeignet. Man muss nicht immer mit Kanonen auf Spatzen schießen.

KH

von let (Gast)


Lesenswert?

O.k. ich wußte jetzt nicht das die Anzahl der IO Pins einen
Einfluß auf die Software hat.
Bislang bin ich einfach davon ausgegangen das die "großen"
AVRs (14, 20, 28Pins) lediglich mehr IO-Pins und bei den megas auch
mehr Peripherie bieten. Und was man davon nicht braucht,
ignoriert man.

Also Anfänger, beginnt mit dem kleinsten µC (Microchip hat
welche mit 6 Pins) und steckt fürs Erste nach jedem
Programmiervorgang das IC um. Das ist auch viel einfacher ist als
den ISP angesteckt zu lassen. Und wenn euch nach dem 34.
Steckvorgang der erste Pin abgebrochen ist, assembliert und flasht
euch doch einfach einen Bootloader. Das kann ein Anfänger schon nach
wenigen Minuten.
Vergesst auch das Tutorial hier im Forum denn das ist alles völlig
überdimensioniert. Falls dann doch durch einen dummen Zufall einige
IOs fehlen, ein Schieberegister (oder auch zwei falls man Ein- und
Ausgänge braucht) ist da schnell drangelötet.

Guck, da habe ich wieder etwas gelernt.

von Peter D. (peda)


Lesenswert?

let wrote:
> O.k. ich wußte jetzt nicht das die Anzahl der IO Pins einen
> Einfluß auf die Software hat.

Das nicht, aber nicht jeder hat extra ein teures Experimentierboard und 
will daher gleich den richtigen Zieltyp in die Schaltung einlöten.


> assembliert und flasht
> euch doch einfach einen Bootloader. Das kann ein Anfänger schon nach
> wenigen Minuten.

Stimmt.
Ich habe auch den Eindruck gewonnen, daß Anfänger damit klarkommen.
Karsten hat dafür mal ne Anleitung geschrieben:

http://www.mikrocontroller.net/articles/AVR_Bootloader_FastBoot_von_Peter_Dannegger


Peter

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.