Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Attiny 13A-PU
Der Einsteiger
22.01.2013, 17:54
Hallo Leute,
wollte mal einen neuen Controller ausprobieren, doch er wollte nichts machen.Doch weiß ichnicht woran es liegt??
Das Beispiel habe ich aus Youtube doch leicht verändert. Wahrscheinlich liegt es an den Standardeinstellungen ??
Vielen Dank schon mal für eure Hilfe. :)
Hier der Code:
$regfile = "attiny13.dat"
$crystal = 4800000
$hwstack = 24
$swstack = 10
$framesize = 16
Config Portb.3 = Output
Config Portb.4 = Output
Do
Portb.3 = 0
Portb.4 = 0
Wait 1
Portb.3 = 1
Portb.4 = 1
Loop
End
nun lässt er sich programieren? fusebits geändert?
Do
Portb.3 = 0
Portb.4 = 0
Waitms 100
Portb.3 = 1
Portb.4 = 1
waitms 100 'sonst sind die pins nur ein paar takte an
Loop
mfg thomas
Der Einsteiger
22.01.2013, 18:32
Vielen Dank für den Hinweis,doch hat er leider noch nicht mein Problem gelöst.
nun lässt er sich programieren?
Ja ,ich denke schon.
fusebits geändert?
Für diesen habe ich noch nichts eingestellt.Muss man denn auch da was umändern?? Wenn,was???
Kann es auch an der Quarzfr... liegen ?? Ist die richtig (ich verwende keinen Externen) ???
radbruch
22.01.2013, 19:13
Hallo
Wenn ich mich recht erinnere takten die Tiny13 intern mit 9,6MHz und werden mit aktiviertem internen /8-Vorteiler ausgeliefert. Deshalb müßte die Taktangabe für Bascom so lauten:
$crystal = 1200000
Gruß
mic
HeXPloreR
22.01.2013, 19:19
$regfile = "attiny13.dat"
$crystal = 1200000 'Auslieferungszusatnd?
$hwstack = 24
$swstack = 10
$framesize = 16
Config Portb.3 = Output
Config Portb.4 = Output
Do
Portb.3 = 0
Portb.4 = 0
Wait 1
Portb.3 = 1
Portb.4 = 1
Wait1
Loop
End
Baue doch mal das "wait" ein, und schaue ob sich was im entsprechenden Takt tut. Wenn nicht kommt das Programm möglicherweise garnicht am µC an.
LED's (?) richtig angeschlossen - von PIN(+) zu GND(-) - wenn,wie hier, Ports als Ausgang. LED defekt-prüfen.
Viele Grüße
Der Einsteiger
22.01.2013, 20:41
Hallo,
habe jetzt mal den crystal angepasst,doch es funktioniert nicht!
Die Leds sind richtig.Es kann nur am Controller selber liegen.
Habt ihr vielleicht ein funktionierendes einfaches Prog. für den Attiny ????
Was ist zum Beispiel mit den $framesize Werten und so weiter??
hast du das mit 2. wait mal probiert ?
http://halvar.at/elektronik/kleiner_bascom_avr_kurs/speicher_hwstack_swstack_frame/ ...
HeXPloreR
22.01.2013, 20:52
Es kann nur am Controller selber liegen.
Nein, das denke ich nicht. Es kann noch so vieles mehr sein. Deine angesprochenen frame und stack Werte, benötigst Du glaube ich nicht mal im Programm weil du keine Variablen benutzt.
Im übrigen ist Dein Programm ein einfaches, was auch funktionieren sollte. Wenn man es compiliert? << das tust Du doch, oder?
Spannung okay?
Welcher Programmer?
Über ISP hoffe ich?
Woher weißt du denn das das Programm auf dem µC ankommt?
Viele Grüße
EDIT: welche signatur liest Bascom aus: tiny13A - dann könntest da noch versuchen den regfile mit Attiny13A zu ergänzen.
Der Einsteiger
22.01.2013, 21:14
hast du das mit 2. wait mal probiert ?
Ja.
Im übrigen ist Dein Programm ein einfaches, was auch funktionieren sollte. Wenn man es compiliert? << das tust Du doch, oder?
Hat alles funktioniert, wurde mir angezeigt.
Spannung okay?
Welcher Programmer?
Über ISP hoffe ich?
Ja. Usb-isp.Ja.
Woher weißt du denn das das Programm auf dem µC ankommt?
Weil mir das Programm sagt, dass alles gut ist???
EDIT: welche signatur liest Bascom aus: tiny13A - dann könntest da noch versuchen den regfile mit Attiny13A zu ergänzen.
Was meinst du damit ??
welcher programmer nutzt du?
mach bei Options-->Programmer-->autoverfy
ich hatte in letzterzeit häufig das problem das er fehler beim übetragen gab so erkennt bascom den fehler selber
Der Einsteiger
22.01.2013, 21:40
welcher programmer nutzt du?
Usb-isp von robotikhardware
mach bei Options-->Programmer-->autoverfy
Hab ich schon. :)
Hier noch ein Bild. Vielleicht hilft es.
24336
du hast die Leds auch an den richtigen pins dran?
sonst wird es langsam echt schräg
oder werden die pins durch irgendeine doppelbelegung gesperrt? wobei mir nach dem datenblatt nichts auffälliges dort wäre clk könnte höchstens mit angestecktem programmer probleme machen
Sauerbruch
22.01.2013, 23:48
Also, da Dir die Fusebits so problemlos angezeigt werden, scheint die Kommunikation zum Controller schon mal ganz gut zu laufen. Und man sieht in dem Screenshot ja auch, dass die Taktfrequenz 9,6 MHz mit einem Vorteiler von 8, also 1,2 MHz beträgt. So weit, so gut.
An welcher Stelle hast Du denn das 2. Wait 1 eingebaut? Ohne diesen Befehl kann´s nämlich wirklich nicht funktionieren. Hier nochmal Dein erster Code:
Do
Portb.3 = 0
Portb.4 = 0
Wait 1
Portb.3 = 1
Portb.4 = 1
Loop
PORTB.3 und PORTB.4 werden ja nur für ein paar einzelne Taktzyklen auf 1 gesetzt werden - sofort danach kommt das Loop, und beide wieder am Anfang der Schleife auf 0 gesetzt. Kannst Du nochmal den ganzen Code posten?
Hast Du den Controller in einer Steckfassung? Dann könntest Du ihn mal rausnehmen und die leeren Fassungen der Anschlüsse B.3 und B.4 mal mit ´ner Drahtbrücke auf +5V und GND legen und schauen, ob Deine LEDs überhaupt leuchten. Vorwiderstände sind ja hoffentlich dran, oder?
Der Einsteiger
23.01.2013, 07:26
Also ,ich habe jetzt einfach die an und ausseiten vertauscht. Das müsste ja auch funktionieren .
Muss ich eigentlich am Reset was beschalten???
HeXPloreR
23.01.2013, 09:44
Das dieser Mensch auch nicht mal einen Tipp korrekt nacharbeiten kann :(
...mach bitte die Pause da zwischen rein damit du überhaupt siehst ob etwas passiert was dem was Du machen möchtest ähnelt.
Und ändere nicht den kompletten Code - so wirst Du den Fehler schwer bis garnicht finden.
Viele Grüße
Der Einsteiger
23.01.2013, 11:23
Aber ich habe doch das gemacht was ihr gesagt habt. Die Pause habe ich ergänzt.Aber es funktioniert trotzdem nicht.
Ich wollte ja nur anmerken ,dass es theoretisch egal ist.
Jetzt noch mal die Frage : Muss ich den Reset irgendwie beschalten???? z.B. Pullup oder so ???
Sauerbruch
23.01.2013, 15:46
Die Pause habe ich ergänzt.Aber es funktioniert trotzdem nicht.
Ich wollte ja nur anmerken ,dass es theoretisch egal ist.
Theoretisch ist diese Pause absolut NICHT egal, sondern absolut notwendig dafür, dass die LEDs blinken. Aber wenn es praktisch auch mit dieser Pause nicht funktioniert, dann muss noch ein anderes Problem vorliegen! Vorausgesetzt, Du hast das zweite Wait 1 an der richtigen Stelle eingefügt - aber darüber können wir ja leider nur spekulieren...
Zu Deiner Frage: Der Reset-Pin braucht keine externe Beschaltung.
Und nun zu meiner Frage: Was passiert denn nun, wenn Du die zweiten LED-Anschlüsse nicht mit den Controller-Pins, sondern per Drahtbrücke mit +5V oder GND verbindest? Leuchten sie oder leuchten sie nicht???
Der Einsteiger
23.01.2013, 16:10
Theoretisch ist diese Pause absolut NICHT egal
Das ist mir schon klar. Habe es auch anders gemeint! :
Ob ich es jetzt nun so mache :
$regfile = "attiny13.dat"
$crystal = 12000
$hwstack = 32
$swstack = 5
$framesize = 20
Config Portb.3 = Output
Config Portb.4 = Output
Do
Portb.3 = 1
Portb.4 = 1
Wait 1
Portb.3 = 0
Portb.4 = 0
Loop
End
oder so:
$regfile = "attiny13.dat"
$crystal = 12000
$hwstack = 32
$swstack = 5
$framesize = 20
Config Portb.3 = Output
Config Portb.4 = Output
Do
Portb.3 = 0
Portb.4 = 0
Wait 1
Portb.3 = 1
Portb.4 = 1
Wait 1
Loop
End
aber darüber können wir ja leider nur spekulieren...
Der Obere ist der aktuelle Code, den ich meine!
Leuchten sie oder leuchten sie nicht???
Ja ,sie leuchten. Das hatte ich aber irgendwo schon glaube ich geschrieben.
Sind jetzt alle Missverständnisse beseitigt???
HeXPloreR
23.01.2013, 16:50
$regfile = "attiny13.dat"
$crystal = 12000000
$hwstack = 32
$swstack = 5
$framesize = 20
Config Portb.3 = Output
Config Portb.4 = Output
Do
Portb.3 = 1
Portb.4 = 1
Wait 1
Portb.3 = 0
Portb.4 = 0
Wait 1
Loop
End
Naja...mach das mal so. Dann lass den Code in Ruhe, denn der Code ist wohl nicht das Problem.
ISP-Kabel abnehmen - LED's anschliessen.
Spannungsversorgung am µC richtig angeschlossen? Wieviel Volt bekommt der?
Der µC hat nur 8 Pins... da kann man soo viel nicht falsch machen.
Viele Grüße
Der Einsteiger
23.01.2013, 17:12
ISP-Kabel abnehmen - LED's anschliessen.
Wenn du damit testen willst ,ob der Prog funktioniert, der funktioniert. Dies kann ich dir mit Sicherheit sagen,da ich neben bei auch einen Atmega 32 progge,der ja funktioniert.
Spannungsversorgung am µC richtig angeschlossen?
Ja, bei VCC, 5 V und bei GND ,GND.
Der µC hat nur 8 Pins... da kann man soo viel nicht falsch machen.
Das stimmt wohl ,aber an irgendwas muss es ja liegen ???
Muss ich eigentlich am Reset was beschalten???
Mach mal einen Plan und zeig ihn her.
Ansonsten gehts das Rätsel raten noch ewig weiter.
HeXPloreR
23.01.2013, 17:55
Am Ende ist eben der µC schon defekt.
wenn er defekt wäre würde er sich wohl kaum programieren lassen
edite:
sck = portb.2
und nicht portb.3 hier also kann der pin tatsächlich auch kaputt sein wenn der µC sich programieren lässt
--> leds an portb.2 und portb.1 verlegen und diese pins schalten da diese noch gehen sollten
:edite
wie sieht die betriebsspannung aus? (Oszi)
reset kann man pullup anschließen aber da sind intern schon 30-80kohm vorhanden
http://halvar.at/elektronik/lauflicht_attiny13_8leds/ hier haben sie 10Kohm zusätzlich dran
programmer anschliesend abgezogen und über trennen betriebsspannung resetet?
oberallgeier
23.01.2013, 18:17
wenn er defekt wäre würde er sich wohl kaum programieren lassen ...Jein. Ich hatte schon mindestens einen Controller, der sich programmieren ließ, bei dem ich aber einen oder mehrere Ports nicht mehr zu der Funktion brachte, die ich haben wollte - volkstümlich ausgedrückt - ein paar Pinns hatte ich eben schon geschossen.
HeXPloreR
23.01.2013, 18:19
oh ja entschuldigung. Völlig unmöglich das PINS defekt sind. Und der Rest funktioniert.
EDIT: Danke oberallgeier, so meinte ich das auch - habe selbst nen Atmega8 hier liegen wo zwei pins nicht mehr richtig OUTPUTen.
ich hatte auch mal einen Pin zerschossen.
edite: sck portb.2 und nicht 3 versehen meinerseitzs ....
Im zweifel ein Bild vom Aufbau oder einen anderen µC testen.
Der Einsteiger
23.01.2013, 20:23
Mach mal einen Plan und zeig ihn her.
Unten in diesem Post. :) als Anhang.
wie sieht die betriebsspannung aus? (Oszi)
5V. Oszi hab ich nicht.
programmer anschliesend abgezogen und über trennen betriebsspannung resetet?
Hää ??
Im zweifel ein Bild vom Aufbau oder einen anderen µC testen.
Bild vom Aufbau: Den willst du gar nicht sehen! Mit vielen losen Kabeln auf Steckbrett. Aber muss es ja einigermaßen funktionier haben ,da Bascom mir ja angezeigt hat,dass alles gut ist.
Meinst du einen anderen Attiny 13 oder einen ganz anderen ?? Wenn einen ganz anderen : Den habe ich schon getestet und hat funktioniert.
"Fliegender" Aufbau macht die Fehlersuche meist nicht einfacher ;)
"programmer (http://www.shop.robotikhardware.de/shop/catalog/index.php?cPath=88) anschliesend abgezogen und über trennen betriebsspannung resetet?"
µC mit Programm Flashen, anschliesend Programmerstecker abziehen, und dann vom µC kurz die Betriebspannung trennen (hatte schon das Problem das er ohne Betriebsspannungs reset nichts getan hat)
vermutlich 7805 Festspannungsregler und keine 100nF am µC?
Aber das wichtigste wurde im Wiki schon erklärt http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht aber das wirst du sicherlich schon kennen
Einen Anderen Attiny13 um einen defekten µC vollständig ausschliesen zu können.
Der Einsteiger
23.01.2013, 21:11
µC mit Programm Flashen, anschliesend Programmerstecker abziehen, und dann vom µC kurz die Betriebspannung trennen (hatte schon das Problem das er ohne Betriebsspannungs reset nichts getan hat)
Mach ich immer so.
vermutlich 7805 Festspannungsregler und keine 100nF am µC?
Festspannungsregler :ja. Das andere habe ich dran.
Einen Anderen Attiny13 um einen defekten µC vollständig ausschliesen zu können.
Hab ich schon.
"Fliegender" Aufbau macht die Fehlersuche meist nicht einfacher
Deshalb werde ich jetzt die Schaltung auf Lochraster löten und mich in ein paar Tagen zurückmelden. :)
Sauerbruch
23.01.2013, 23:54
Deshalb werde ich jetzt die Schaltung auf Lochraster löten und mich in ein paar Tagen zurückmelden.
Bevor Du das tust hätt´ ich vielleicht noch einen:
Versuch doch mal, die beiden I/O-Ports direkt über das DDR-Register als Ausgänge zu konfigurieren. Auf der Bascom-Ebene ist das ja manchmal etwas verwirrend (zumindest gibt´s hier im Forum mindestens einmal pro Monat eine Frage dazu...)
Also
Config Portb.3 = Output
Config Portb.4 = Output
ersetzen durch
DDRB.3 = 1
DDRB.4 = 1
Ist nur so ´ne allerletzte Idee...
Der Einsteiger
23.05.2013, 19:53
Hallo Leute,
ich habe mal heute die Schaltung zum Testen aufgebaut. Sie funktionierte. :) :) :) Doch leuchtet die LED nicht 1 sec. und ist danach 1 sec. aus ,sondern sie ist jeweils ca.11 sec. an und dann aus ( habe es nicht genau gemessen ,sondern nur gezählt) . Woran liegt das ???
Hier noch mal der Code :
$regfile = "attiny13.dat"
$crystal = 12000000
$hwstack = 32
$swstack = 5
$framesize = 20
Config Portb.4 = Output
Do
Portb.4 = 1
Wait 1
Portb.4 = 0
Wait 1
Loop
End
Wenn ihr mir noch dazu eine Antwort geben würdet ,könnte ich endlich mal ein ERLEDIGT in die Überschrift schreiben.
Also : Über eine Antwort würde ich mich wie immer sehr freuen. :)
- - - Aktualisiert - - -
Kann es daran liegen ,dass ich eine 0 zu viel bei $crystal geschrieben habe ?? Denn bei dem : http://halvar.at/elektronik/lauflicht_attiny13_8leds/
ist da auch eine Null weniger .
Den Unterschied zwischen 1,2 MHz und 12 MHz(die der Tiny ohne Quarzoszillator gar nicht kann)
herauszufinden überlass ich Dir.
MfG
Rone
Der Einsteiger
23.05.2013, 20:13
Das bedeutet ,dass ich eine falsche Zahl eingegeben habe ?? Wie ist der Auslieferungszustand denn ??
Ist dann der Attiny jetzt verfranzt ??
Sauerbruch
24.05.2013, 02:01
Wie ist der Auslieferungszustand denn ??
Das kannste für jeden Controller hier erfahren:
http://www.engbedded.com/fusecalc/
Eine supernützliche Seite für alles, was mit dem Thema "Fusebits" zusammenhängt.
Ist dann der Attiny jetzt verfranzt ??
Nein - er läuft weiterhin mit den 1,2 MHz, auf die er im Auslieferungszustand eingestellt ist. Wenn Bascom irrtümlicherweise davon ausgeht dass er mit 12 MHz läuft ($Crystal = 12 000 000), dauert alles halt genau zehn mal so lange.
Mit $Crystal veränderst Du nicht die Taktfrequenz des Controllers, sondern teilst Bascom lediglich mit, mit welcher Taktfrequenz er läuft! Schreib einfach $Crystal = 1200000, und alles wird gut \\:D/
Der Einsteiger
19.07.2013, 16:39
Gut habe ich gemacht und jetzt funktioniert es richtig, danke. :)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.