Hallo, Ich habe das Problem das ich jedesmal wenn ich versuche in Bascom ein Programm auf einen Attiny12 zu übertragen beim Überprüfen die Fehlermeldung:"Difference at 00026" erhalte. Ich verwende diesen Programmer: http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=161 Er funktioniert schon seit mehreren Jahren Problemlos. Ich würde mich sehr über eure Hilfe freuen. Gruß Jonas
Der Attiny12 hat keinen SRAM. Das macht das Programmieren in Bascom einigermaßen schwierig. Du könntest in der Not versuchen, Variablen mit IRAM zu definieren. IRAM benutzt die Register als "künstlichen" RAM. Beispiel: Dim Horst as IRAM BYTE Besser ist es, sich einen Kontroller mit SRAM auszusuchen. MfG Paul
Hallo Paul Baumann, schonmal danke für die Antwort. Davon habe ich schon gelesen und mich auch sonst an diese Anleitung gehalten: http://www.mitchsoft.de/Tips/BascomIDE/ATtiny_ohne_SRAM/Start.html Das Problem besteht aber darin das ich das Programm garnicht erst auf den Controller bekomme und auch garkeine Variablen definiert habe. Hier mein Bascom-Programm:
1 | $regfile = "attiny12.dat" |
2 | $crystal = 1000000 |
3 | $tiny |
4 | $swstack = 0 |
5 | $hwstack = 0 |
6 | |
7 | Config Portb.1 = Output |
8 | |
9 | Do |
10 | Portb.1 = 1 |
11 | Waitms 100 |
12 | Portb.1 = 0 |
13 | Waitms 100 |
14 | loop |
15 | end |
Die Attinys 12 habe ich leider gekauft als ich von dem Problem noch nicht wusste und ich bin der Meinung das man sich solchen Problemen dann einfach stellen muss. Gruß Jonas
Hallo Spess, normalerweise nicht. Ich habe es aber jetzt mal manuell gemacht und das Programm lies sich glatt Problemlos übertragen. Es sieht aber so aus als wenn das Programm nicht ausgeführt wird. In 5 Minuten kann ich dir sag was das Ozi anzeigt. Gruß Jonas
Hab mich auch schonmal mit Bascom und tiny12 versucht. Mei Tipp --> lass es. Wait funktioniert IMHO nicht
Hallo Spess, das Programm wird nicht ausgeführt. Weiss vielleicht jemand wieso? Gruß Jonas
Nimm mal die beiden Wait-Befehle raus und hänge Dich mit dem Oszillographen an den PB1. Dann siehst Du, ob es daran liegt. Wait scheint hier mit dem Tiny12 nicht zu funktionieren. In der Simulation bleibt er da hängen. In der Hilfe steht: When you like to program in ASM you can use BASCOM with the $TINY directive. Some BASCOM statements will also already work but the biggest part will not work. (Manche Befehle werden funktionieren, die meisten nicht) MfG Paul
Hallo Paul Baumann, das mit der Simulation ist mir auch schon aufgefallen, dachte aber die Simulation geht auch nicht. Zur Hilfe: In welcher Hilfe hast du nachgeschaut und unter welchem Stichwort? Was bedeutet der Befehl ASM? Der Attiny macht übrigens trotz des herausgenommenen Wartebefehls nichts. Gruß Jonas
>Zur Hilfe: In welcher Hilfe hast du nachgeschaut und unter welchem >Stichwort? Du stellst Dich mit dem Kursor auf ein Schlüsselwort (Hier "$TINY") und drückst die Taste F1 Dann bekommst Du die Hilfe zum jeweiligen Befehl angezeigt. >Was bedeutet der Befehl ASM? $ASM bedeutet, daß nun ein Stück Assembler-Programm anfängt. Du kannst in der Bascom-Oberfläche auch ganz normal in Assembler programmieren. Wenn Du damit fertig bist, folgt dann $End ASM. >Der Attiny macht übrigens trotz des herausgenommenen Wartebefehls >nichts. Des Befehls? Beide Wartebefehle sollst Du mal herausnehmen. Der Tiny12 hat doch einen Timer0. Damit kannst Du Dir doch selber Wartezyklen basteln. MfG Paul
Hallo Paul, schonmal danke für deine Hilfe. Ich habe beide Wartebefehle rausgenommen. Ich habe sogar den Befehl abschalten herausgenommen sodass der Ausgang ständig High sein sollte. Ist er aber nicht. Das mit dem Timer0 währe dann die nächste stufe. Gruß Jonas
>Das mit dem Timer0 währe dann die nächste stufe.
Ja, besser ist das. Wenn man einen Timer zur Verfügung hat, kann man
sich
damit dann in dessen Interrupt noch zur Not eine Variable hochzählen
lassen, damit man auf entsprechend lange Zeiten kommt.
Ich selbst gehe jetzt in den Sleep-Modus...
;-)
MfG Paul
Hmm, habs gerad mal ausprobiert:
1 | ' Initialisierung MCU = ATTiny12 ohne SRAM |
2 | |
3 | $regfile = "attiny12.dat" ' Controller = ATtiny12 |
4 | $crystal = 1000000 ' Takt 1MHz |
5 | $noramclear ' RAM nicht initialisieren |
6 | $tiny ' Stack nicht initialisieren |
7 | '$hwstack = 32 ' Stackinitialisierung wird durch $TINY unterdrückt |
8 | $swstack = 0 ' Software 0 |
9 | $framesize = 0 ' Framesize = 0 |
10 | |
11 | Config Timer0 = Timer , Prescale = 8 |
12 | Start Timer0 |
13 | |
14 | On Timer0 Tog Nosave |
15 | Enable Timer0 |
16 | |
17 | Config Pinb.1 = Output |
18 | Led Alias Portb.1 |
19 | |
20 | |
21 | |
22 | |
23 | Do |
24 | nop |
25 | Loop |
26 | |
27 | |
28 | Tog: |
29 | Toggle Led |
30 | Return |
im Sim funktioniert es nicht, irgendwie springt er nicht in die ISR... Vielleicht gehts ja im Chip.
Hallo snowfly Das Programm funktioniert so wie du es mir gegeben hast nicht. Ich habe es ein bisschen verändert und jetzt geht es:
1 | Config Pinb.1 = Output |
2 | Led Alias Portb.1 |
3 | |
4 | |
5 | Led = 1 |
6 | |
7 | Do |
8 | Toggle Led |
9 | Loop |
10 | |
11 | |
12 | Tog: |
13 | Toggle Led |
14 | Return |
Komicherweise funktioniert das Programm auf Port PB3 nicht. Ich habe auch nocheine Frage: Und zwar was bedeutet der Befehl nop und was hat es auch mit Tog aufsich? Gruß Jonas
NOP heisst N(o)OP(eration), also "mache nichts" es verbrät einfach einen taktzyklus mit nichtstun.
1 | Config Timer0 = Timer , Prescale = 8 |
2 | Start Timer0 |
3 | |
4 | On Timer0 Tog Nosave |
5 | Enable Timer0 |
hier wird der Timer initialisiert, gestartet und die Abweisung gegeben "wenn der Timer überläuft springe zur Sprungmarke Tog". Er sollte also den Timer0 durchzählen und bei überlauf den Pin toggeln. Sowie du das jetzt gemacht hast toggelt der tiny den Pin mit maximaler geschwindigkeit ohne verzögerung.
Hallo snowfly, danke das du mir soweit geholfen hast, danke an die anderen. Ich denke das ich jetzt mein Projekt durchziehen kann. Bei Bedarf werde ich mich melden. Gruß Jonas
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.