PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATtiny84 und mein neustart



mycroc
16.11.2012, 20:25
Hallo,
nach einer Ewigkeit habe ich wieder etwas Zeit zum basteln gefunden. Ich möchte einen ATtiny84V dazu überreden das einige seiner ausgänge blinken.


$regfile = "attiny84.dat"
$crystal = 1000000
$hwstack = 32
$swstack = 32
$framesize = 32

Pin 1 ist VCC
Pin 14 ist GND

Config Porta.0 = Input
Config Porta.1 = Input
Config Porta.2 = Input
Config Porta.3 = Output
'Config Porta.4 = SCK
'Config Porta.5 = MISO
'Config Porta.6 = MOSI
Config Porta.7 = Output

Config Portb.0 = Input
Config Portb.1 = Input
Config Portb.2 = Output
'Config Portb.3 = Reset

Do

Porta.7 = Pina.0
Porta.3 = 1
Portb.2 = 1

Wait 1

Porta.7 = Pina.0
Porta.3 = 0
Portb.2 = 0

Wait 1

Loop

End 'end program

Natürlich ist an den Pins kein Blinken vorhanden. Aber warum? Der Chip läst sich Programmieren. Wenn ich per Fuse den Takt auf PB2 (pin5) lege Taktet er auch mit 1Mhz.
Ich gehe mal davon aus das ich eine dämliche keinigkeit vergessen habe. Ich komme nur nicht darauf.

MfG
Ich:)

for_ro
16.11.2012, 20:37
Hallo mycroc,
wir sehen jetzt deine Beschaltung nicht, aber es könnte sein, dass du noch PullUps an die Eingänge machen musst. Entweder intern oder extern.

mycroc
16.11.2012, 20:56
Ich habe auch keine beschaltung. Ich messe mit einem Oszi. Ich habe mal die Interne Pullups eingeschaltet (ich meine mich zu erinnern das es so geht)

$regfile = "attiny84.dat"
$crystal = 1000000
$hwstack = 32
$swstack = 32
$framesize = 32

Config Porta.0 = Input
Porta.0 = 1
Config Porta.1 = Input
Porta.1 = 1
Config Porta.2 = Input
Porta.2 = 1
Config Porta.3 = Output
'Config Porta.4 = SCK
'Config Porta.5 = MISO
'Config Porta.6 = MOSI
Config Porta.7 = Output

Config Portb.0 = Input
Portb.0 = 1
Config Portb.1 = Input
Portb.1 = 1
Config Portb.2 = Output
'Config Portb.3 = Reset

Do

Porta.7 = Pina.0
Porta.3 = 1
Portb.2 = 1

Wait 1

Porta.7 = Pina.0
Porta.3 = 0
Portb.2 = 0

Wait 1

Loop

End 'end program

Es hat keine auswirkungen. Solten die unbeschalteten Pins mit internen pullups nicht ca. 5V haben?

Kampi
17.11.2012, 08:44
Hey,

Pull-Ups kannst du nur aktivieren wenn der Pin als Eingang geschaltet ist. Wenn du die unbeschalteten Pins nicht als Eingang deklarierst bringen auch die internen Pull-Up Widerstände nichts :)
Die Pins müssen nicht immer 5V führen wenn sie nicht benutzt werden, da sie einen undefinierten Zustand haben.
Du musst sie erst konfigurieren, damit sie entweder sicher einen High oder einen Low Pegel haben.
Fuses hast du auch nachgeguckt? Nicht das irgendwo ein falsches Fusebit gesetzt ist und er deswegen a) zu langsam taktet oder b) die Pins nicht verwenden kann (JTAG oder sowas z.B.).

Searcher
17.11.2012, 10:06
@mycroc: Ich sehe keinen Grund, warum der Porta.3 nicht im Sekundentakt auf high bzw low schalten soll.
Programm wirklich auf den ATtiny84 gelangt? Meßproblem mit dem Oszi? Eine Minimalbeschaltung wirst Du schon haben - mindestens Stromversorgung. Vielleicht hält auch ein nicht abgezogener Programmer den Reset Pin auf low?

@Kampi: Wenn Du die internen Pull-Up Widerstände meinst, kontrolliere Deine letzte Antwort nochmal ;)

Gruß
Searcher

Kampi
17.11.2012, 10:31
@Kampi: Wenn Du die internen Pull-Up Widerstände meinst, kontrolliere Deine letzte Antwort nochmal ;)


Autsch....durcheinander gekommen.
Danke für den Hinweis :D

JoeM1978
17.11.2012, 10:40
Config Porta.0 = Input
Porta.0 = 1
Config Porta.1 = Input
Porta.1 = 1
Config Porta.2 = Input
Porta.2 = 1

Ich meine gelernt/gelesen zu haben, das man Eingänge mit PinX und Ausgänge mit PortX ansteuert/configuriert. ??

Kampi
17.11.2012, 10:43
Stimmt. Da hast du recht.
Inputs immer mit Pin (IN = Input) und Outputs immer mit Port (O = Output).
So merk ich es mir zumindest immer :P (auch wenn es hier nichts gebracht habe, da ich da nicht nach geschaut habe ^.^).

Searcher
17.11.2012, 11:18
Ich meine gelernt/gelesen zu haben, das man Eingänge mit PinX und Ausgänge mit PortX ansteuert/configuriert. ??
Kommt drauf an, was man möchte.
Mit CONFIG PORTx oder CONFIG PORTx.y konfiguriert man auf Output oder Input.
(Das auch CONFIG PINx.y zugelassen wird und auch funktioniert, finde ich verwirrend)
Ist der Portpin ein Ausgang und möchte man dessen Pegel ändern: Portx.y = 1 bzw 0
Möchte man beim Ausgang den Pegel toggeln, geht bei vielen AVR: Pinx.y = 1
Ist der Portpin ein Eingang, wird mit Portx.y = 1 der interne Pullup eingeschaltet und mit 0 augeschaltet. (ach ja, kommt auch noch auf das PUD Bit an, das aber defaultmäßig auf 0 ist. Wenn das auf 1 ist, kann der Pullup nicht eingeschaltet werden - Datenblatt unter "Ports as General Digital I/O")

Um den Zustand eines Portpins zuzuweisen: A = PINx.y

Nachzuvollziehen mit kleinem Testprogramm im Simulator und mit Datenblatt zum jeweiligen AVR, wobei ich mir nicht sicher bin, ob der Simulator beim Simulieren des Toggelns mit PINx.Y = 1 das immer richtig macht (V2.0.5.0)

Gruß
Searcher

Sauerbruch
17.11.2012, 11:49
Die ganze Verwirrung um die Konfiguration von Ein- und Ausgängen kann man aber auch auf ein Minimum reduzieren, indem man

1. die Tatsache nutzt, dass jeder I/O-Port nach dem Einschalten bereits als Eingang konfiguriert ist, und
2. gewünschte Ausgänge über das "DDR"-Register (Data Direction Register) als Ausgänge konfiguriert.

Die kann entweder einzeln geschehen, in diesem Falle also

DDRA.3=1
DDRA.7=1
DDRB.2=1

oder gleich byteweise:

DDRA = &b10001000
DDRB = &b00000100

mycroc
17.11.2012, 22:37
Ich hätte nie gedacht das so eine einfache frage gleich eine "Port Config" diskusion auslöst. Danke für die Tips die leider nichts geholfen haben. Ich habe noch ein bischen mir dem tiny84 probiert. Nachdem ich denn kaput geflasht habe](*,) muste ein zweiter daran glauben. Auch den und versuche mit einem tiny861 und einem tiny26 haben nicht zum erfolg geführt. Was leuft hier denn falsch? Es können nicht vier controller defekt sein. Ich habe mal bilder vom letztem versuch angehängt. Vieleicht sieht ja jemand den fehler.


2377523776237772377823779

MfG mycroc

Searcher
18.11.2012, 08:59
Wenn Du nicht direkt aus BASCOM IDE heraus flashst, fällt mir nur noch ein, daß irgendwie die falsche Datei ausgewählt wird und auf den Tiny geschoben wird.

Gruß
Searcher

peterfido
18.11.2012, 11:39
Wie geht denn "kaputt flashen"?
Wenn die Fuses nicht mehr passen, fehlt maximal der externe Takt, um ihn per Fuses wieder auf internen Takt "umzuschalten". Bascom kann mit den meisten Programmern selbst umgehen.
Wurde ein Reset-Pin "weggefuset", hilft ein "Hochvoltprogrammer".

Statt mit dem Oszi würde ich auch mal mit einer LED (inkl. Vorwiderstand) testen. Evtl. liegt es auch am Board. Nicht, dass ständig der Reset aktiv ist. Zum Üben würde ich die Fuses überhaupt nicht ändern. Der AVR läuft von Haus aus mit internem Takt und für eine blinkende LED braucht man da nichts verstellen.