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.
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.
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.Code:$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
Ich gehe mal davon aus das ich eine dämliche keinigkeit vergessen habe. Ich komme nur nicht darauf.
MfG
Ich
Rechtschreibung war, ist und wird wohl immer eine schwäche von mir sein. Bitte nicht kommentieren!
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.
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)
Es hat keine auswirkungen. Solten die unbeschalteten Pins mit internen pullups nicht ca. 5V haben?Code:$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
Rechtschreibung war, ist und wird wohl immer eine schwäche von mir sein. Bitte nicht kommentieren!
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.).
Geändert von Kampi (17.11.2012 um 10:38 Uhr) Grund: Denkfehler
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
@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
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Weg zu einigen meiner Konstruktionen
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Ich meine gelernt/gelesen zu haben, das man Eingänge mit PinX und Ausgänge mit PortX ansteuert/configuriert. ??Config Porta.0 = Input
Porta.0 = 1
Config Porta.1 = Input
Porta.1 = 1
Config Porta.2 = Input
Porta.2 = 1
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 ^.^).
Schaut ruhig mal auf meiner Homepage vorbei :
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
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
Geändert von Searcher (17.11.2012 um 12:04 Uhr)
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Weg zu einigen meiner Konstruktionen
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
Lesezeichen