PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Attiny12 - Probleme ohne Ende?



manu418
30.10.2010, 14:26
Hallo,
wie in der Überschrift geschrieben, verzeifle ich gerade an dem Attiny12. Gut, er hat keinen SRAM, aber das kann man umgehen. Viel schlimmer ist, das ich es nicht hinbekomme, auch nur einen Pin als Input zu nutzen! Das kann doch nicht sein. Ich habe es mit "Config Pinb.4 = Input" und "Config Portb.4 = Input" porbiert, ich habe den internen Pullup eingeschaltet und wieder ausgeschaltet, aber nichts funktioniert! Warum denn? Mit einem Chip, der keinen Input auslesen kann, kann man nichts anfangen! Im Datenblatt steht aber doch 6 I/O Pins ](*,) !

Über Hilfe wäre ich sehr dankbar.

MFG Manuel

Sauerbruch
01.11.2010, 01:01
Ich habe es mit "Config Pinb.4 = Input" und "Config Portb.4 = Input" porbiert, ich habe den internen Pullup eingeschaltet und wieder ausgeschaltet, aber nichts funktioniert!

Moin Manuel,

Ich frage mich gerade ob der Fehler nicht ganz wo anders liegt als beim Port B.4, denn die I/O-Ports sind beim Power-On-Reset automatisch als Eingänge konfiguriert - da muss man gar nix für tun!

Was funktioniert denn nicht??


Edit:
Könnte es vielleicht sein, dass Du dem "Klasssiker" aufgesessen bist, und den Eingangspin mit PORTB.4 abfragst und nicht mit PINB.4?

oberallgeier
01.11.2010, 09:30
... Könnte es vielleicht sein, dass Du dem "Klasssiker" aufgesessen bist ...Jedenfalls bist Du schon einem weiteren Klassiker aufgesessen: Softwarebezogene Fragen zu stellen ohne den eigenen Code, möglichst komplett, hier reinzustellen. Am aktuellen Code zeigen sich doch öfters mal die wirklichen Probleme. Wenn man das nicht macht, können die Ratgeber weniger be- als vielmehr nur rum-raten.

Wenn man ein einfaches Bildchen hier reinstellt, dann sind ziemlich schnell 100, eher 200 kB Platz, meist aber erheblich mehr belegt. Ein längeres Codebeispiel mit reichlich Kommentar braucht etwa 20 kB, selten mehr - also an der Rücksicht auf belegten Speicher im Forum kanns nicht liegen.

manu418
01.11.2010, 12:39
Hallo,
erstmal vielen Dank für die Antworten! Es liegt nicht daran, dass ich Portb.4 statt Pinb.4 geschrieben habe. Ich habe alles durchprobiert. Also hier dann der Code:


$regfile = "ATtiny12.DAT"
$crystal = 2000000
$tiny
$noramclear
$swstack = 0
$framesize = 0

Config Portb.0 = Output
Config Portb.2 = Output
Config Pinb.3 = Input
Config Pinb.5 = Input
Portb.3 = 1
Portb.5 = 1

Do
If Pinb.3 = 0 Then Portb.0 = 1
If Pinb.3 = 1 Then Portb.0 = 0
If Pinb.5 = 0 Then Portb.2 = 0
If Pinb.5 = 1 Then Portb.2 = 1
Loop


End

Aber es könnte genausogut dieser Code sein:


$regfile = "ATtiny12.DAT"
$crystal = 2000000
$tiny
$noramclear
$swstack = 0
$framesize = 0

Led alias Portb.3
Config Portb.3 = Output
Config Pinb.4 = Input

Do
Led1 = Pinb.4
Loop



Die genaue Fehlerbeschreibung:

Ich habe einen der oben genannten Codes in Bascom Compiliert. Dann Programmiere ich den Code auf den Chip. (Was für mich nur nervig und nicht zu verstehen ist, ist, dass ich jedes Mal, bevor ich das Programm auf den uC überspiele, in den Lockbits das LB21 von "No memory lock features enabled" auf "Further programming and verify of the Flash and EEPROM is disabled" ändern muss. Ich weiß, man soll nicht in den LBs rumspielen, aber wenn ich es nicht tue, kommt eine Fehlermeldung und der Prgrammiervorgang wird mittdendrin abgebrochen. Es kann doch eigentlich gar nicht sein, dass sich LBs von selbst wieder umändern, oder?) Also, ich programmiere den Code auf den uC und dann drücke ich den entsprechenden Taster zu Pinb.4 auf dem STK500. Es passiert - nichts. Inputs werden scheinbar nicht berücksichtigt. Ich kann Lauflichter und Ähnliches programmieren, aber keine Inputs. An Pullups liegt es nicht, die hat das STK500 integriert (Ich habe es trotzdem schon mit internem Pullup gemacht, geht auch nicht).


Ich frage mich gerade ob der Fehler nicht ganz wo anders liegt als beim Port B.4, denn die I/O-Ports sind beim Power-On-Reset automatisch als Eingänge konfiguriert - da muss man gar nix für tun!

Aber hieße das nicht, dass ich gar keine Outputs programmieren könnte?

MFG Manuel

Richard
01.11.2010, 13:38
Hmm, ich habe gerade kein Datenblatt, kann der Tiny 12 tatsächlich 20 MHz und sind diese auch in den Fuses eingestellt?

Gruß Richard

Richard
01.11.2010, 13:41
Hmm, ich habe gerade kein Datenblatt, kann der Tiny 12 tatsächlich 20 MHz und sind diese auch in den Fuses eingestellt?

Ach und ich mußte außer den Quarz einstellen noch NIE etwas an den Fuses ändern. Allerdings stelle ich die nicht unter Bascom ein, dafür benutze ich Studio 4. Ist (für mich) einfach übersichtlicher.

Gruß Richard

manu418
01.11.2010, 13:52
Hallo,
nein, er kann bis zu 4 Mhz oder so, aber ich habe es auch schon mit viel weniger probiert; es geht auch nicht! Ja, kann ja gut sein, dass du an den Lock- und Fusebits nichts ändern musst, das ist ja das Komische, ich muss es halt :-k ! Ich verstehe es selbst nicht, es ist ja auch unlogisch. Aber wenn ich es nicht mache, kann ich nicht programmieren. Wie meinst du das hier:


kann der Tiny 12 tatsächlich 20 MHz und sind diese auch in den Fuses eingestellt?

Wie stellt man denn in den Fusebits die Frequenz ein :-s ?

MFG Manuel

Sauerbruch
01.11.2010, 14:52
Ich kann Lauflichter und Ähnliches programmieren


...das heißt also, Du kannst z.B. LEDs über die verschiedene Ausgänge korrekt ansteuern? Das würde ja beweisen, dass es in der Tat nicht an den Ausgängen liegt...

manu418
01.11.2010, 15:18
Hallo,
ja, genau, ich kann alles programmieren, solange ich nur nicht einen Eingang brauche.

MFG Manuel

Richard
01.11.2010, 15:43
Hallo,
nein, er kann bis zu 4 Mhz oder so, aber ich habe es auch schon mit viel weniger probiert; es geht auch nicht! Ja, kann ja gut sein, dass du an den Lock- und Fusebits nichts ändern musst, das ist ja das Komische, ich muss es halt :-k ! Ich verstehe es selbst nicht, es ist ja auch unlogisch. Aber wenn ich es nicht mache, kann ich nicht programmieren. Wie meinst du das hier:


kann der Tiny 12 tatsächlich 20 MHz und sind diese auch in den Fuses eingestellt?

Wie stellt man denn in den Fusebits die Frequenz ein :-s ?

MFG Manuel

OK ich hatte falsch gelesen 20 anstatt 2 MHz. :-)

Fuses:

https://storage.driveonweb.de/dowdoc/1867b7c1f4c118737028b028e9e81c28.JPG

Gruß Richard

manu418
01.11.2010, 15:57
Hallo,
hä, so viele Auswahlmöglichkeiten habe ich gar nicht :-s ! Mache ich was falsch?

Ich öffne das AVR Studio, schalte das STK500 mit eingebautem Attiny12 an und öffne das Fenster, das in deinem Bild gezeigt wird. Wenn ich dann beim entsprechenden LB schaue, kann ich nur einstellen ob internen oder externen Quarz!

MFG Manuel

Richard
01.11.2010, 16:55
Ich habe keinen Tiny 12 kann das also nicht nachvollziehen, ich hatte bei dem Bild einen Mega16 im STK500.Da das Studio vor der Anzeige den Chip ausliest, zeigt es wahrscheinlich auch nur die Fuses an welche der Chip tatsächlich hat. Du kannst die Fuses aber im Studio setzen und gleich wieder lesen. Dann solltest Du überprüfen können ob sie wirklich gesetzt sind/bleiben. Natürlich ist im Studio auch der Richtige Chip gesetzt?

Gruß Richard

manu418
01.11.2010, 17:39
Hallo,
ja, auch wenn ich direkt wieder einlese, ist alles so wie vorher. Das geht also schon.

Mann, wo liegt denn da nur das Problem? Kann es denn sein, dass man den uC nur mit Assembler proggen kann? So was blödes.

MFG Manuel

Richard
01.11.2010, 17:44
Hallo,
ja, auch wenn ich direkt wieder einlese, ist alles so wie vorher. Das geht also schon.

Mann, wo liegt denn da nur das Problem? Kann es denn sein, dass man den uC nur mit Assembler proggen kann? So was blödes.

MFG Manuel

Kann ich mir nicht vorstellen, versuche einmal die von Bascom erstellte Hex Datei mit Studio 4 zu Übertragen, nur um zu sehen was dann Passiert.

Gruß Richard

Hubert.G
01.11.2010, 18:20
Im AVR-Studio kann man den Tiny12 nur in Assembler verwenden.
Bei C kommt eine Fehlermeldung.

Richard
01.11.2010, 18:49
Im AVR-Studio kann man den Tiny12 nur in Assembler verwenden.
Bei C kommt eine Fehlermeldung.

??? Wenn mit dem Studio 4 ein Hec File übertragen wird ist das egal ob Basic oder C , Maschinensprache und sollte deshalb unabhängig davon sein welche Quellcode verwendet wird.

Gruß Richard

oberallgeier
01.11.2010, 19:14
??? Wenn mit dem Studio 4 ein Hec File übertragen wird ...
Im Prinzip richtig . . ..
Aber es gibt (http://www.mikrocontroller.net/topic/51570)
natürlich (http://www.mikrocontroller.net/articles/AVR-Studio_Bugs#ATtiny12)
Ausnahmen. (http://www.avrfreaks.net/index.php?module=Freaks%20Devices&func=displayDev&objectid=15) Nicht nur in Russland.

manu418
01.11.2010, 19:21
Hallo,
danke für den Tipp, das geht zwar, aber das Problem ist immernoch da. Er reagiert nicht auf Inputsignale.


Im AVR-Studio kann man den Tiny12 nur in Assembler verwenden.
Bei C kommt eine Fehlermeldung.

Heißt das jetzt, ich kann das mit Bascom nicht hinkriegen?

MFG Manuel

Besserwessi
01.11.2010, 19:41
Theoretisch könnte man wohl auch beimTiny12 C benutzen. Das sollte mit einer 3.xx Version von GCC noch gehen, aber mit einigen Einschränkungen.

Das Übertragen des .hex Files in AVRStudio ist dazu gedacht, sich den von BASCOM erszeugten Code anzuschauen, als Assembler. Alternativ könnte man auch einen anderen Disassembler nutzen. Das Programm ist ja noch recht übersichtlich und Fehler sollte man da schon noch finden können.

Hubert.G
01.11.2010, 21:43
Es stimmt im Programm etwas nicht.
PinB5 gibt es nicht, das ist der Reset.

Hubert.G
01.11.2010, 21:47
Abgesehen davon würde die Simulation mit einer Taste funktionieren.

manu418
13.11.2010, 14:54
Hallo,
vielen Dank für die ganze Hilfe. Ich habe mir jetzt ein paar ATTINY13 gekauft, mit denen geht es einwandfrei (warum wird der ATTINY12 ei. noch verkauft? Der kann doch nix :-$ ). Das Problem hatte seinen Ursprung wohl darin, dass Bascom bei Tinys ohne RAM nur begrenzt Befehle verarbeiten kann. Ich wusste zwar, dass die Befehlsmenge eingeschränkt ist, dass aber selbst die Inputs nicht mehr funktionieren, hätte ich nicht gedacht.

Naja, meine Fazit aus der ganzen Geschichte: Kauf´ dir keinen ATTINY12, das hat keinen Sinn. Ein ATTINY13 kann mehr und kostet nicht viel mehr (wenn nicht sogar gleichviel).

MFG Manuel

Besserwessi
13.11.2010, 18:30
Die Tiny12 sind vor allem noch weiter verfügbar für alte Schaltungen, oder wenn man in Assembler ohne RAM auskommt. In ASM kann man auch ohne RAM noch einiges machen - die 32 Register sind schon einiges an Speicherplatz.