PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Atiny 85 Befehle-Anschlüsse



RoboterSindCool
04.04.2015, 08:23
Hallo Helfer,
Ich habe mir die Anleitung vom Atiny85 auf dieser Seite durchgelesen:
http://www.sachsendreier.com/asw/clernen/arduinoasisp/arduinoasisp.html
Hier steht das folgende Befehle für PB0 bis PB4 verfügbar sind:
pinMode()
digitalWrite()
digitalRead()
analogRead()
analogWrite()
shiftOut()
pulseIn()
millis()
micros()
delay()
delayMicroseconds()

Heißt das jetzt dass PB0 bis PB4:
Analoge Eingänge und Analoge Ausgänge(PWM),
Digitale Eingänge und digitale Ausgänge
sind?

Oder hat jeder Pin EINE Funktion

Danke für eure Hilfe

Roboter sind Cool

021aet04
04.04.2015, 12:31
Grundsätzlich haben die befehle nichts mit den Pins zu tun. Es steht auch das das der arduino Befehlsvorrat ist der beim attiny85 funktioniert. Was welcher Pin kann findest du im Datenblatt oder auf dieser Seite (Skizze des Controllers mit gesamter Beschriftung). ADC sind die analogeingänge, OCxx sind die PWM Ausgänge , genau steht das aber im Datenblatt.

MfG Hannes

RoboterSindCool
04.04.2015, 13:17
Vielen Dank ,
Aber zum Beispiel PB3 hat OC1B und ADC3. Ist dieser Pin dann ein Analogeingang und ein PWM Ausgang?
Was bedeutet den PCINT, XTAL, CLK und MISO?

Danke für eure Geduld

RoboterSIndCOOl

021aet04
04.04.2015, 13:51
Ja du kannst z.b. PWM oder ADC nutzen. Pcint ist der Pin change Interrupt, bedeutet das bei einem Flankenwechsel ein Interrupt auslöst, xtal ist der Anschluss für den Quarz, falls einer verwendet wird, clk ist der Takt Eingang bzw Ausgang (jenachdem ob Master oder slave) des spi, Miso ist ein datenanschluss des spi (und isp). Genaue Infos steht im Datenblatt. Man kann immer nur eine Funktion davon nutzen. Was man will bzw benötigt muss man immer konfigurieren, entweder per Software (z.b. Spi) oder den fuses (z.b. Quarz).

MfG Hannes

RoboterSindCool
04.04.2015, 15:47
Danke für die Schnellen Antworten.
Aber noch was: kann ich den die analogen Eingänge auch als digitale Eingänge verwenden und mit welchem Methodenaufruf deklarier ich ihn als digitalen Input? Mit "pinMode(3, INPUT);" ?
und wie deklariere ich ihn als Analogen Eingang? "pinMode(3, analogIn)" gibt es ja nicht!

Danke nochmals

RoboterSindCool

Geistesblitz
04.04.2015, 19:46
Alle Port-Pins sind bei AVRs grundsätzlich als digitale Input- bzw. Outputpins konfigurierbar, ich weiß allerdings nicht, wie das bei C geht. Da musst du dich wohl selber nochmal auf die Suche machn, ich bin mir aber sicher, dass das irgendwo steht.

White_Fox
04.04.2015, 19:59
Ich glaube, du solltest mal darüber nachdenken einen AVR in ASM zu programmieren oder dir da zumindest mal Einiges zu dem Thema anlesen. Schau dir mal das Tutorial auf mikrocontroller.net dazu an, das wird deinen Horizont erheblich erweitern.

RoboterSindCool
04.04.2015, 22:42
Danke Geistesblith und White_Fox,
Ich werd es mir mal ansehen!

RoboterSindCOol

021aet04
04.04.2015, 22:49
ASM ist nicht unbedingt nötig. Es schadet sicher nicht wenn man auch ASM kann.
Ich habe es bis jetzt noch nicht verwendet (außer vor kurzem mit inline ASM zum Test). Der Vorteil ist das man die Hardware etwas besser versteht.

Bei arduino kann ich dir leider nicht weiterhelfen, da ich die Controller direkt aus dem avr Studio programmiere.

MfG Hannes

oberallgeier
04.04.2015, 23:03
... die analogen Eingänge auch als digitale Eingänge verwenden und mit welchem Methodenaufruf deklarier ich ihn als digitalen Input ...Schade dass ich Dir das nicht mit der arduino-IDE erklären kann, in C ist das ganz simpel. Die für mich bestens lesbare Variante ginge etwa so, mit binärer Schreibweise für die Portdefinitionen (nur als Beispiel, die Einsen und Nullen sind natürlich frei wählbar UND der tiny85 hat nur PortB von Pinn PB0 bis PB5 - PB5 ist meist nur als /RESET in Funktion) :
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Ports+Pins als Ein- (0) od. Ausgänge (1) konfigurieren, Pull Ups (1) aktivieren
// - - - - - - - - - - - - - - - -
DDRA = 0b00000000; // Der komplette Port = alle Pinns, als Eingänge
PORTA = 0b00010000; // Pin PA4 ##>> MIT Pullup !!
//
DDRB = 0b11111011; // Pinne 0+1, 3-7 als Ausgänge, Pin PB2 als Eingang
PORTB = 0b00000010; // (LED auf) PB1 ist on, PB2 ohne Pullup

Natürlich brauchst Du das nicht in binärer Schreibweise zu machen, es geht auch in Hex oder sogar dezimal (für mich dann weniger gut lesbar).

White_Fox
06.04.2015, 14:36
ASM ist nicht unbedingt nötig. Es schadet sicher nicht wenn man auch ASM kann.
Ich habe es bis jetzt noch nicht verwendet (außer vor kurzem mit inline ASM zum Test). Der Vorteil ist das man die Hardware etwas besser versteht.
Ich will ihn ja nicht dazu bekehren, in Zukunft seine AVRs in ASM zu programmieren. Der gefettete teil war mein Ziel. Eigentlich lernt man Programmieren ja nur durch Programmieren, aber das ASM-Tutorial vermittelt schon durch das Lesen viel über die Funktionsweise.

RoboterSindCool
08.04.2015, 13:08
Also gut :

ich habe alle verbindungen vom arduino getrennt. Dann : "Datei - Beispiele - Arduino ISP" aufgerufen und hochgeladen. Hat funktioniert.
Danach habe ich alles nach dieser Anleitung verbunden: http://www.sachsendreier.com/asw/clernen/arduinoasisp/arduinoasisp.html
Dann "Werkzeuge - Programmer - Arduino as Isp" ausgewählt . Als ich dann blinki hochladen wollte kahm diese Fehlermeldung:
"Die ausgewählte Platine benötigt den 'arduino'-Kern (nicht installiert)."


Was habe ich falsch gemacht ?
bin über jede Hilfe erfreut

RoboterSindCool

RoboterSindCool
11.04.2015, 18:11
Also nach langem probieren habe ich es nun geschafft den Attiny85 mit dem Arduino zu programmieren.
Ich habe alles gemacht wie in diesem Video beschrieben:
https://www.youtube.com/watch?v=5-UsmGDPdak

ABER WICHTIG:
Bei mir konnte ich das SPI Beispiel erst hochladen, nachdem ich den KONDENSATOR VON GND ZU RESET entfernt habe. Als das SPI Beispiel hochgeladen war habe ich den kondensator wieder verbunden und den Sketch
für den Attiny85 hochgeladen. (programmer usw. natürlich noch davor umgestellt)


Vielen Dank an alle die an diesem Thrad beteiligt waren.


RoboterSindCool

021aet04
11.04.2015, 18:36
Welchen kondensator hast du verwendet? Ich verwende immer einen kondensator am reset und hatte noch nie Probleme. Hatte nur Probleme mit den signalleitungen, dort habe ich die Kondensatoren entfernt.

MfG Hannes

RoboterSindCool
11.04.2015, 19:04
Die Hier:
http://www.amazon.de/gp/product/B00IS6J4PK?psc=1&redirect=true&ref_=oh_aui_detailpage_o01_s00

welche kondensatoren an der signalleitung?
Ich habe es so wie im video oben gemacht, und im internet waren auch nirgends kondensatoren an der Signalleitung!
Du meinst warscheinlich was anderes! Ich habe Atinny mit Arduino ISP Programmiert.

021aet04
11.04.2015, 19:36
Die sind zu groß. Bewährt hat sich 10k Pullup Widerstand und 100n Keramik Kondensatoren.

In deiner Schaltung hast du keine Kondensatoren an den signalleitungen. Ich habe bei einer selbst entwickelten Schaltung mit attiny44 solche 100n Kerkos (Keramik Kondensatoren) an den signalleitungen verwendet. Habe die Anschlüsse gleichzeitig als Eingänge genutzt, wie die reset Schaltung die ich oben beschriebenen habe ( 10k R und 100n kerko) und diese wurden mittels Optokoppler auf Masse gezogen. Das gab beim flashen Probleme. Ich habe diese ausgelötet und es hat funktioniert.

MfG Hannes

White_Fox
11.04.2015, 19:39
@RoboterSindCool:
Zum Filtern von Störungen solltest du lieber Keramik- oder Folienkondensatoren wie die hier z.B. verwenden:
http://www.reichelt.de/X7R-2-5-100N/3/index.html?&ACTION=3&LA=446&ARTICLE=22853&artnr=X7R-2%2C5+100N&SEARCH=100n

Elektrolytkondensatoren sind zum Filtern und Abblocken schlecht bis gar nicht geeignet.