Erledigt Hilfe einstellung Bascom

Thorsten_Sch

Mitglied
31. Okt. 2010
152
0
16
47
HH
Sprachen
  1. BascomAVR
Hallo habe mein rechner neu gemacht und nui bascom 2.0.7.8Version (voll)
wenn man ganz einafach anfängt im code zu schreiben wie:


CodeBox BascomAVR
Config Portb.1 = Output
Config Timer1 = Timer , Prescale = 64
On Timer1 Timer_isr
Enable Timer1
Enable Interrupts
Const Timerstartwert = 57724
Timer1 = Timerstartwert

Timer1_isr:
Timer1 = Timerstartwert
Toggle Portb.1
Return

also "config" da kommt ne kleine tabelle wie timer und und das hab ich nicht mehr aber er nimmt den code
so nicht an wenn ich in combremire???
Hier meine einstellungen bitte um Hilfe.....

Editer onstellung.PNG
IDE einstellungen.PNG

Bitte echt um hilfe BITTTEEEEEE
 
Was für'ne Fehlermeldung haut er Dir denn um die Ohren?

Muß man bei Bascom eigentlich den verwendeten Controller im Code definieren ($regfile), oder gibts dafür auch 'ne default-Voreinstellung (wie das ja bei den Buffern, Baudrate und Co. der Fall ist?

(beim AVR-Assembler muß der Controller ja inzwischen bereits beim Erstellen des Projektes gewählt werden, also ohne weiteres inkludieren der Definitionsdatei)

P.S.: Nachdem Dein Programm den ganzen Krempel initialisiert und den Timer gestartet hat, rennt es irgendwann in die Timer_ISR rein (also ohne den Rücksprungwert durch ein Call bzw einen erfolgten Interrupt auf den Stack gepackt zu haben), und springt am Ende der ISR mit dem Return dahin, was grad im Stack steht. Irgendwann ist der ganze restliche Flash durchgelaufen, und es geht von vorn los, wobei der Stackpointer jetzt eine Adresse (Word) höher zeigt(*) (Return/Return from Interrupt incrementiert den Stackpointer (nimmt einen Wert vom Stack, aber der wächst von hinten nach vorn).

(*) Bascom wird den Pointer auf RAMEND initialisieren, mit dem Inkrement landet man dann sehr wahrscheinlich in nicht existentem Speicher, ggf bei bestimmten Controllern im externen SRAM, wenn der Pointer überläuft in den Rechenregistern ... in den I/O-Registern...

Bei einigen Controllern könnten auch andere Speicher (Flash etc...) an diese Adresse remapped sein.

Also... möglicherweise steht dort irgendwas drinn, was das Return als Rücksprungadresse (verschieden von 0) interpretiert...
 
mir ja schon klar hier der ganze code


CodeBox BascomAVR
'LED mit 1Hz (Blinken lassen)
$regfile = "m8def.dat"
$crystal = 1000000

Config Portb.1 = Output
Config Timer1 = Timer , Prescale = 64
On Timer1 Timer_isr
Enable Timer1
Enable Interrupts
Const Timerstartwert = 57724
Timer1 = Timerstartwert


Timer1_isr:
Timer1 = Timerstartwert
Toggle Portb.1
Return


so habe schon mit 4 ATmega8 auspropiert nichts es blinkt nicht an PORTB.1 null weder steckboard oder eine platine
 
Da ich mich mit Bascom nicht so auskenne, kann es sein dass ich hier nicht richtig liege:


Irgendwo zwischen der Initialisierung oben und der ISR unten müsste sowas wie eine do-loop Schleife hin, auch wenn da kein Code in der Schleife ist.
 


CodeBox BascomAVR
$regfile = "m8def.dat"
$crystal = 8000000

Config Portb.2 = Output

Config Timer0 = Timer , Prescale = 1024
Enable Timer0

On Timer0 Timer_interrupt
Enable Interrupts

Do
Loop

Timer_interrupt:
  Toggle Portb.2
Return


hab ich schon propiert ich glaube es liegt in der einstellung
 
Du hast jetzt den Takt und den Prescaler geändert, den Timer und auch der Portpin für die LED ist geändert.
Ist der Systemtakt denn 8MHz?

Die LED sollte nun mit einer Frequenz von etwa 15Hz blinken.

Hast du denn in der Do-Loop Schleife schon einmal "manuell" die LED blinken lassen, mit bekannter Pause, so dass du erkennst, dass der Systemtakt da ist und stimmt?
 
Also...
in den ersten beiden Codes (#1 und #3) gabs 'ne Inkonsistenz bezüglich des Namens der ISR und der Zuweisung in der IVT (On Interruptquelle ISR-Name). Da meckert Bascom beim kompilieren, deswegen meine Frage nach der Fehlermeldung;)

In #5 stimmts, Bascom sollte compilieren.
Läßt man das ganze durch den Simulator laufen, wird das Toggle ca alle 33ms ausgeführt -> paßt also zu @Dirk s 15Hz. Wobei ich bei 15Hz mit dem bloßen Auge eher von Flimmern sprechen würde...

Irgendwo zwischen der Initialisierung oben und der ISR unten müsste sowas wie eine do-loop Schleife hin, auch wenn da kein Code in der Schleife ist.
Da BASCOM 'ne Hochsprache ist, macht man das natürlich nicht selbst, sondern verwendet

CodeBox BascomAVR
Stop
Stop generiert 'ne leere Endlosschleife.
Die globale Interrupteinstellung (I-Flag) wird dabei nicht verändert.
Im Gegensatzt dazu deaktiviert

CodeBox BascomAVR
End
vorher noch die IRQs global.

Zum selberlesen hier klicken.
 
Zuletzt bearbeitet:
Hallo Forum und die mir geschrieben haben

also wie gesagt habe ich 4x atmega8 auspropiert nichts
dann habe ich es mit einen ATtiny2313 Propiert nichts, dann habe ich diesen code genommen


CodeBox BascomAVR
$regfile = "attiny2313.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32

 Config Portb = Output

Do

wait 1
portb = &b01111111
wait 2
portb = &b00000000
wait 2

Loop

und ob zu sehen ist ob sich was in ATtiny2313 was tut .................... nöööö? fehler keine ahnung

nehme ich ein code der fertig als HEX datei ist den ich sowohl auch in BAS habe sehe FUNKTIONIERT DAS. aber im CODE da sehe ich kein unterschied.
also nach mein adam und riese liegt es wohl in der einstellung von bascom wie im 1 artikel beschrieben habe.....

geht doch bitte eure einstellungen mal durch um zu schauen wo drahn das liegt bitte DANKE
 
was mich auch ein bischen komisch vorkommt ist das im blauen greis wie bekommt man das den weg (verzeichnisbaum ).
Code blau eingekreist.PNG
 
Die Do..Loop, bzw den Code darin wirst Du mit einem Klick auf das Minus-Kästchen einklappen können. Also nur die Darstellung ausblenden. Meiner Meinung nach gabs das bisher in BASCOM nicht, in anderen Programmier-IDEs (Visual Basic..?) hab ich sowas schon gesehen.

Irgendwie verstehe ich nicht ganz, was Du uns mit #8 sagen willst...

Du hast ein neues Programm für einen Tiny2313 erstellt, welches den gesammten B7 auf Gnd legt (Lo, Ausgang), alle anderen B-Beine schalten 2s lang auf Vcc (Hi, Ausgang) und dann 3s auf Gnd, und das in einer Endlosschleife...

Bis dahin komme ich mit, aber den Rest verstehe ich nicht.
Du hast den Code vermutlich irgendwie fehlerfrei kompiliert, und dann wie/über welchen Programmer in den Tiny2313 geflasht?

Ein irgendwoher gezaubertes .hex kannst Du erfolgreich flashen?

Und wenn Du das beim Compilieren erzeugte .hex versuchst, auf demselben Weg zu flashen?


P.S.: als ich damals mit Bascom gearbeitet habe, hab ich das eigentliche Flashen trotzdem immer über das AVR-Studio laufen lassen, insofern kann ch Dir also nicht wirklich helfen...
 
was mich auch ein bischen komisch vorkommt ist das im blauen greis wie bekommt man das den weg (verzeichnisbaum ).

Die Do..Loop, bzw den Code darin wirst Du mit einem Klick auf das Minus-Kästchen einklappen können. Also nur die Darstellung ausblenden. Meiner Meinung nach gabs das bisher in BASCOM nicht, in anderen Programmier-IDEs (Visual Basic..?) hab ich sowas schon gesehen.

Korrekt, gibt es im Visual Studio (also VB.Net und C#), aber mittlerweile auch in diversen Text Editoren. Und das ist auch ganz gut so. Manchmal hat man über 1000 Zeilen in einer Datei, da würdest du dir sonst n Wolf scrollen bis du dahin kommst wo du hin willst, wenn du dich überhaupt noch zurecht findest. So kannst du (optisch, verändert nicht den Code ansich) ganze Code Teile ausblenden die dich grade nicht interessieren. Erst Recht wenn man kein Intending verwendet wie in deinem Beispiel (die Leerzeichen am Anfang einer Zeile) hilft das sehr, auch wenn man das trotzdem immer machen sollte. In manchen Programmiersprachen (wie Python) sind die sogar Pflicht! Also so in etwa:


CodeBox BascomAVR
…
Do
    wait 1
    portb = &b01111111
    wait 2
    portb = &b00000000
    wait 2
Loop


Beispiel aus VB.Net (man beachte die Sprünge in den Zeilennummern):
Collapse.png
Der obere Teil interessiert grade nicht, daher eingeklappt. So hab ich die Funktion an der ich arbeiten will wesentlich schneller im Blick. Außerdem, selbst wenn ich es nicht nutzen würde, es stört doch nicht…
 
was mich auch ein bischen komisch vorkommt ist das im blauen greis wie bekommt man das den weg (verzeichnisbaum ).

Du kannst das Feature "Code Folding" bei den Einstellungen von Bascom deaktivieren.
Options -> Environment -> IDE -> Editor
http://avrhelp.mcselec.com/index.html?options_environment.htm
http://avrhelp.mcselec.com/index.html?edit_fold_all_subs_and_functions.htm

(@LotadaC , @TommyB: Code Folding oder auch Collapse Functions gibt es eigentlich inzwischen bei allen Entwicklungseditoren, bei Atmel Studio seit wenigstens Version 5 auch, in Verbindung mit Assembler wahrscheinlich nicht)
 
(@LotadaC , @TommyB: Code Folding oder auch Collapse Functions gibt es eigentlich inzwischen bei allen Entwicklungseditoren, bei Atmel Studio seit wenigstens Version 5 auch, in Verbindung mit Assembler wahrscheinlich nicht)
Kein Wunder, da es auf Microsoft's Visual Studio basiert ;)
Kenne aber auch noch genug IDE's die so was nicht unterstützen.
 
hallo liebe leut die mir schon geschrieben haben oder ein komentar abgegeben haben

also fehler beim combriemiren gibt es keine, er läft durch und ist fertig.....
wenn ich den code hier


CodeBox BascomAVR
$regfile = "attiny2313.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32

Config Portb = Output

Do

Portb = &B11110000
Wait 1
Portb = &B00001111
Wait 2

Loop

End

dann schickeich die HEX Datei von Ponypro2000 zu den ATtiny2313 passiert nichts schicke ich einen code den
ich vor den rechner installliert habe hier beispiel:


CodeBox BascomAVR
$regfile = "2313def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32

Config Portb = Output

Do
Portb = &B00001001
Wait 2
Portb = &B00001011
Wait 1
Portb = &B00001100
Wait 10
Portb = &B00001100
Wait 2
Portb = &B00001010
Wait 2
Portb = &B00001001
Wait 10
Portb = &B00011001
Wait 1
Portb = &B00100001
Wait 10
Portb = &B00100001
Wait 2
Portb = &B00010001
Wait 2
Portb = &B00001001
Wait 10
Loop

End

läuft der code den ich mit PonyPro2000 zu den Chip gesendet habe läuft einwandfrei ab......

kann es irgend noch ein fehler sein in bascom bin die dinger abgegangen die hacken soweit ok, irgendwoe ist ein Drehwurm drin.....

Bitte immer noch um hilfe....
 
Die $regfile ist ne Andere. kA ob das so korrekt ist. Sonst ist eigentlich nichts anders (ok, 2. Routine setzt die Bits anders, klar)…

Teste doch einfach mal ne ältere Bascom Version wenn du vermutest dass da ein Fehler drin ist… Der Code (1. Zitat aus #14) sieht für mich ok aus. Zu $regfile kann ich nichts sagen, außer dass die unterschiedlich ist.
 
Hallo Thorsten Sch_

Auch wenn dein Problem wieder ziemlich nebulös ist, hätte ich eine Anmerkung zu deinem letzten Post. Läuft das erste Programm auf deinem Controller nicht, das zweite aber schon, liegt es nahe, dass du keinen Attiny2313 verwendest, sondern einen alten AT90s2313 ( siehe Auszug aus der Datei 2313DEF.DAT). Das war der Vorgänger des Attiny.


Auszug 2313DEF.DAT

[DEVICE]

FILE=2313DEF.DAT ; file name

pdf=at90s2313.pdf

atmelpdfurl=http://www.atmel.com/Images/DOC0839.PDF

pdfurl=http://www.mcselec.com/atmelpdf/at90s2313.pdf

device =AT90S2313
 
Meckert Bascom beim Flash-Versuch denn nicht, wenn die vom Regfile vorgegebene Device-Signatur von der vor dem Flashen zurückgelesenen Signatur des tatsächlichen Chips abweicht?
Dann gilt: "Wer lesen kann, ist klar im Vorteil."
 
Hallo Forum und Bastler

Also alle ATtiny2313 die ich habe sind Aktuell Neu keine alten......

Mir ist heute was aufgefallen wenn ich in bascom ein neues blatt öffne und in der einstellung CHIP SETTING den Controller angebe und dann okay klicke kommt
volgende FEHLMELDUNG
IMG_20160712_192451.jpg
ähm was heist das jetzt ist irgendwie ein fehler drin oder ein fpad falsch?

zum code komm ich erst heirnach wenn der fehler weg ist danke erst mal......
 
Da steht, daß er die Konfigurationsdatei nicht schreiben kann. Haste mal unter dem Pfad nach der Datei geschaut?
Was steht denn bei Details?

Abgesehen davon ist der dort gewählte Controller nur eine Voreinstellung. Wenn im Code ein anderer Controller mit der Regfile-Direktive vorgeschrieben wird, gilt dieser. Gilt auch für die Baudratendirektive.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)