Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe für Bascom-Einsteiger!!
Hallo,
ich versuche gerade in die Welt der Mikrocontroller zu kommen. Nun gibt es anfänglich schon wieder ein paar schwierigkeiten. Anfangs habe ich mit Assembler rumprobiert, nun will ich Bascom testen.
Nun habe ich mit Bascom versucht das selbe Programm zu schreiben als mit Assembler. Nur das funktioniert nicht.. was mache ich falsch? Will eigentlich nur mal eine LED zum leuchten bringen.. mit Assembler klappt es.. mit bascom nicht ..
Assemblercode:
;test.asm: Rote LED an Pin PD3, gelbe an Pin PD4, grüne an PD5
;--------------------------------------------------------------
.include "m8def.inc"
ldi r16, 0b00100000 ; ins Arbeitsregister r16 laden
out DDRD, r16 ; Inhalt von r16 ins IO-Register DDRD ausgeben
ldi r16, 0b00100000 ; in r16 laden
out PORTD, r16 ; r16 ins IO-Register PORTD ausgeben
loop:
sbi PORTD, 5
rjmp loop
Bascomcode:
'test.BAS: Rote LED an Pin PD3, gelbe an Pin PD4, grüne an PD5
'--------------------------------------------------------------
$regfile = "m8def.dat" 'ATMega8
$crystal = 16000000 'Quarz: 16 MHz
Ddrd = &B00001000 'Pin PD3 als Ausgang konfigurieren
Portd = &B11111111 'PD0...PD7 auf High setzen
Do
Loop
End
wäre super wenn ihr mir helfen könntet![/code]
Also mit der Bascom Version 1.11.8.1 funktioniert Dein Basic-Code ohne Probleme.
Mit dem Bascom-Code müßte PD.3 auf HIGH gehen. Sicher das da was drann ist. Sind deine LEDs gegen Masse oder Versorgungsspannung geschalten?
Hi sm4ck,
oben im ASM setzt du PD.5 und im Bascom PD.3 .. ist das Absicht? Hängen da überall LED´s?
Ansonsten kenn ich mich mit dem Bascom nicht aus, bin C-User :)
Viele Grüße
CsT
Hallo,
ja, an den ausgängen sind nur LED´s.. aber bei bascom leuchtet gar keine.. bei asm jedoch schon..
die led´s sind auf +5V geschalten.
gruß sm4ck
Torsten_G
07.07.2007, 21:28
...
die led´s sind auf +5V geschalten.
...
Ah... wenn ich Dich recht verstehe, mit einem Pullup auf Vcc?
Dann solltest Du den Port auf "0" setzen, damit der Pin auf Gnd schaltet, sonst geht die LED nicht an.
Ich kann aber kaum glauben, dass es so einfach sein sollte.
Bist Du Dir überhaupt sicher, dass Dein Programm richtig im µC angekommen ist?
Grüße
Torsten
peterfido
08.07.2007, 01:52
Probier mal folgendes:
'test.BAS: Rote LED an Pin PD3, gelbe an Pin PD4, grüne an PD5
'--------------------------------------------------------------
$regfile = "m8def.dat" 'ATMega8
$crystal = 16000000 'Quarz: 16 MHz
config portd.3 = output 'Pin PD3 als Ausgang konfigurieren
config portd.4 = output
config portd.5 = output
Do
set portd.3
wait 1
set portd.4
wait 1
reset portd.3
reset protd.4
set portd.5
wait 1
reset portd.5
set portd.4
wait 1
reset portd.4
Loop
End
Hi, also ich habe das jetzt probiert.. leider funktioniert es auch nicht..
ich benutze die Bascom Version 1.11.8.7 ich denke aber nicht das es damit was zu tun hat :-(
Und Ponyprog meldet mir auch immer "Verify successful"
Die Led´s sind gegen Masse.. hab da falsch geschaut :-) sind über einen 270Ohm auf Masse geschalten
CharlyMai
08.07.2007, 15:30
LEDs falschrum angeschlossen ??
Annode an PortPin, Kathode-- Widerstand -- Masse ...
Greetz
CharyMai
nein, also mit AVR-Studio funktioniert es ja einwandfrei.. nur eben mit bascom nicht.. könnte da an bascom irgendwas schief gelaufen sein?
gruß
Testman3000
08.07.2007, 20:22
Hallo,
ich habe zwar keine Hilfe aber eine andere Frage zum Theme Bascom-Einstieger. Und zwar gibt es eine Möglichkeit mit Basecomp unter Linux zu Programmieren??
MFG
peterfido
08.07.2007, 20:59
Was für einen ISP Adapter hast du? Kannst du nicht direkt per Bascom das Programm zum Chip übertragen?
Hi,
ich nutze das Atmel Evaluations-Board..
kann ich das per Bascom denn?
peterfido
09.07.2007, 18:54
Das von Pollin? Das habe ich auch. Ich nutze dafür die ISP Pfostenleiste per Parallelport ISP Adapter mit dem 74LS244 IC..
hmm ich nutze den 9.pol Sub-D Anschluss... damit müsste es doch auch gehen.. schon komisch wieso bascom nicht funktioniert
hmm ich nutze den 9.pol Sub-D Anschluss... damit müsste es doch auch gehen.. schon komisch wieso bascom nicht funktioniert
Am programm das ich geschrieben habe, liegt es nicht oder?
Was wird denn von Bascom angezeigt wenn Du den Programmer startest (Taste F4)? Kommt hier eine Fehlermeldung?
Die Meldung
"Selected chip and target chip do not mach AT90S2313 <> ATmega8"
??
Hi,
config portd.3 = output 'Pin PD3 als Ausgang konfigurieren
einzelne Pins setzt man mit Config PIN.
Aus der Bascom Hilfe:
Syntax:
CONFIG PORTx = state
CONFIG PINx.y = state
Gruß
Christopher
darwin.nuernberg
12.07.2007, 11:52
Die Meldung
"Selected chip and target chip do not mach AT90S2313 <> ATmega8"
??
Ja was hast Du für einen Chip dran... hm?
schau mal im Quelltext nach:
hast Du den Chip definiert, welchen Du auch programmieren willst?
Mit folgender Zeile am Anfang des Sources, teilstz Du dem Compiler mit für welchen Chip der Code erstellt werden soll.
$regfile = "m8def.dat" ' specify the used micro
Oder Du stellt jedesmal VOR dem Compilieren den Chip ein, für welchen der Code generiert werden soll:
Options/Compiler/Chip -> dort den passenden Chip-Type einstellen.
Dann darf aber im Source auch nicht das "$regfile" vorhanden sein.
Bascom erkennt vor dem Flaschen für welchen Code der Compiler eingestellt ist und welcher Chip sich am ISP meldet.
Offenbar hast Du einen 2313 angeschlossen aber für mega8 compiliert.
verwende "2313def.dat" oder "attiny2313.dat", dann müsste es klappen.
$regfile = "2313def.dat" ' specify the used micro
oder
$regfile = "attiny2313.dat" ' specify the used micro
NOCHWAS:
LED's sollten nicht vom Port mit Spannung versorgt werden, da könnte der Prozessor darunter leiden.
Der Chip kann weitaus weniger Strom liefern als gegen Masse ableiten.
Entweder du schaltest die LED über einnen Vorwiderstand (180R) nach VCC und die Katode wird vom Port nach Masse geschaltet
(Die Led leiuchtet bei Port-Pin=0)
oder noch besser
Du verwendest einen Schalttransistor (BC546 o.ä) welcher die LED bedient (1k als Basisvorwiderstand zum Port und natürlich auch den Vorwiderstand für die LED nicht vergessen).
Dann hält dein Chip länger.
Torsten_G
12.07.2007, 12:35
...
hmm ich nutze den 9.pol Sub-D Anschluss... damit müsste es doch auch gehen.. schon komisch wieso bascom nicht funktioniert
...
Ich mag mich irren, aber ist bei den Pollin-Boards die 9-pol. Sub-D nicht die serielle ISP?
Dann wird das nichts - seriell kann Bascom nämlich nicht.
Entweder per LPT direkt aus Bascom, oder das HEX-File per PonyProg (oder einen anderen geeigneten Programmer) seriell übertragen.
@Darwin:
...
Der Chip kann weitaus weniger Strom liefern als gegen Masse ableiten.
...
Hab ich auch immer gedacht, aber das war einmal. Datenblatt Mega 8 Seite 239ff.:
...
VOL
Output Low Voltage(3)
(Ports A,B,C,D)
IOL = 20 mA, VCC = 5V
IOL = 10 mA, VCC = 3V
Output High Voltage(4)
(Ports A,B,C,D)
IOH = -20 mA, VCC = 5V
IOH = -10 mA, VCC = 3V
...
Mittlerweile scheine die PIN´s symmetrisch zu sein.
Grüße
Torsten
vielen dank für die antworten.. ich werde es gleich mal probieren und mich nochmal melden..
gruß sm4ck
Der_Anfänger
13.07.2007, 14:20
Hi,
benutzt du das richtige Kabel? Kein Nullmodemkabel sondern ein ganz normales serielles Verlängerungskabel. Und die richtige Buchse?? Ich bin fast verzweifelt, bis ich gemerkt habe das mein Kabel in der Buchse für die RS232-Kommunikations steckt und nicht im ISP-Anschluss ;-). Ja was man nicht im Kopf hat ...
Mit Bascom kann man das Atmel-Board nicht proggen, das musst du mit Pony Prog machen.
Gruß Felix
PS: Ich habe bei Mir 2 LED's direkt vom Port an die Masse und es funktioniert einwandfrei seit ca. einem Monat^^
EDIT: Achja Testman3000 für deine Frage gibt es auch ne Antwort: Probiers mal mit dem Programm WINE, mit dem kann man Windows Programme unter Linux-Distributionen ausführen. Keine Ahnung wie es funktioniert aber es müsste eigentlich funktionieren.
hi, sorry.. aber irgendwie funktioniert bascom bei mir einfach nicht..
ich bring es nicht mal auf die reihe so eine besch... LED am ausgang zum leuchten zu bringen. :-)
'-----------------------------------------------------------
' Funktion : LED einschalten
' Schaltung : PD5 an LED
'-----------------------------------------------------------
' Prozessor : ATmega8 3,6864 MHz
' Sprache : BASCOM-AVR
'----------------------------------------------------------
$regfile = "m8def.dat" 'Prozessortyp ATmega8
$crystal = 8000000 'Taktrate
Ddrd = &B00100000 ' PortD.5 auf Ausgang
Do ' BeginnMainloop
Portd.5 = 1 ' PB0 LED an
Loop 'Ende Mainloop
End 'Programmende
'----------------------------------------------------------
kann mir einer sagen was daran nicht stimmen kann?
gruß sm4ck
Christopher1
01.08.2007, 16:50
Also ich wüsste nichts was an dem Code falsch sein sollte.
Hast du die LED mit einem Widerstand an den Richtigen Pin angeschlossen und an GND ?
Ist die LED richtig angeschlossen ?
Zeigt BASCOM einen Fehler an beim Programmieren ?
Schaltung schon überprüft ?
Hi, also Bascom meldet keinen Fehler,
Die Schaltung funktioniert.. Wenn ich das selbe mit Assembler programmiere, dann funktioniert das auch...
gruß sm4ck
stefan_Z
02.08.2007, 03:48
Versuchs doch mal mit
do
toggle portd.5
waitms 300
loop
Dann passiert auf jeden Fall immer was, egal wierum die LED angeklemmt ist...
Hallo,
leider funktioniert das auch nicht. Könnte das sein, das irgend etwas am Bascom nicht passt? ich habe jetzt folgendes programm auf dem uC
$regfile = "m8def.dat"
Config Portd.5 = Output
Do
Toggle Portd.5
Waitms 300
Loop
End
stefan_Z
03.08.2007, 01:09
hast du denn einen Mega8 angeschlossen?
Ansonsten kann da nichtmehr viel falsch sein! Hast du dich vielleicht an den Ports verzählt oder vertan?
Hi,
also der mega8 ist angeschlossen.. mit assembler funzt alles prima.. an den ausgängen hab ich mich nicht verzählt.. hab mehrere ausprobiert..
Echt seltsam.. ich glaub ich installier mal bascom neu oder sowas
gruß
stefan_Z
03.08.2007, 16:03
Ansonsten schau dir einfach mal den Assembler Code an, des Bascom produziert...
stefan_Z
03.08.2007, 17:11
da gibts oben irgendwie nen Knopf für in der Leiste...
keine ahnung.. hab da nix gefunden
stefan_Z
03.08.2007, 18:35
Woops - vielmals Sorry! Hätte schwören können, dass es die Funktion gibt - aber anscheinend doch nicht :-(
Ansonsten binde doch mal Inline-Assembler in Bascom ein. Gehts dann auch noch?
Wenns mit Toggle nicht geht, dann schein Bascom da wirklich was falsch zu machen - sonst schalte mal den gesamten Port um und schau, ob die anderen Pins sich auch so komisch verhalten.
darwin.nuernberg
04.08.2007, 21:07
Probiers doech erst mal im Simulator aus...
Da gibt es auch eine Hardware-Simulation (LCD und Port LED's)
wenn es schon da nicht geht, brauchst Du erst garnicht mit exter Hardware anfangen.
Tipp $SIM am Code-Anfang mcht die Simulation schneller (muss natürlich für reellen betrieb wieder raus)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.