mikrocontroller.net

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


Autor: Mathias N. (elektronikschwachm)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: cdg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich glaub ich habe mich jetzt für 'nen ATtiny 45 entschieden

Also doch noch nicht

Autor: Anselm 68 (anselm68)
Datum:

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

Autor: Engelchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PORTB |= (1<<PB0);

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

PORTB &= ~(1<<PB0);

Wieder aus

Autor: Kachel - Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Engelchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mathias N. (elektronikschwachm)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>aber zu den fuses leider nichts gefunden

Steht im Kapitel
Memory programming

Autor: let (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mathias N. (elektronikschwachm)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mathias N. (elektronikschwachm)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: let (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Kachel - Heinz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: let (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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_Bootlo...


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.