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!
> Ich glaub ich habe mich jetzt für 'nen ATtiny 45 entschieden
Also doch noch nicht
in Bascom würde ich PortD.5 = output tippern :p oder input ;)
PORTB |= (1<<PB0); Schaltet bit0 an Port B ein, also auf 1(+5V) PORTB &= ~(1<<PB0); Wieder aus
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
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.
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.
>aber zu den fuses leider nichts gefunden
Steht im Kapitel
Memory programming
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.
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
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?
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
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.
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.