mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom: Difference at 00026


Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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/pr...
Er funktioniert schon seit mehreren Jahren Problemlos.

Ich würde mich sehr über eure Hilfe freuen.

Gruß Jonas

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Löscht du den AVR vor dem Programmieren?

MfG Spess

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

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:
$regfile = "attiny12.dat"
$crystal = 1000000
$tiny
$swstack = 0
$hwstack = 0

Config Portb.1 = Output

Do
Portb.1 = 1
Waitms 100
Portb.1 = 0
Waitms 100
loop
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

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: snowfly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mich auch schonmal mit Bascom und tiny12 versucht.
Mei Tipp --> lass es.

Wait funktioniert IMHO nicht

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Spess,

das Programm wird nicht ausgeführt.
Weiss vielleicht jemand wieso?

Gruß Jonas

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: snowfly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit dem Timer sollte die warterei auch machbar sein

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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

Autor: snowfly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, habs gerad mal ausprobiert:
' Initialisierung MCU = ATTiny12 ohne SRAM

$regfile = "attiny12.dat"                                   ' Controller = ATtiny12
$crystal = 1000000                                          ' Takt 1MHz
$noramclear                                                 ' RAM nicht initialisieren
$tiny                                                       ' Stack nicht initialisieren
'$hwstack = 32                                              ' Stackinitialisierung wird durch $TINY unterdrückt
$swstack = 0                                                ' Software 0
$framesize = 0                                              ' Framesize = 0

Config Timer0 = Timer , Prescale = 8
Start Timer0

On Timer0 Tog Nosave
Enable Timer0

Config Pinb.1 = Output
Led Alias Portb.1




Do
nop
Loop


Tog:
Toggle Led
Return

im Sim funktioniert es nicht, irgendwie springt er nicht in die ISR...
Vielleicht gehts ja im Chip.

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo snowfly

Das Programm funktioniert so wie du es mir gegeben hast nicht.
Ich habe es ein bisschen verändert und jetzt geht es:
Config Pinb.1 = Output
Led Alias Portb.1


Led = 1

Do
Toggle Led
Loop


Tog:
Toggle Led
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

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehme was zurück: Ed funktioniert auch an Port 3.

Gruß Jonas

Autor: snowfly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
NOP heisst N(o)OP(eration), also "mache nichts" es verbrät einfach einen 
taktzyklus mit nichtstun.
Config Timer0 = Timer , Prescale = 8
Start Timer0

On Timer0 Tog Nosave
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.

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.