PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe für Bascom-Einsteiger!!



sm4ck
07.07.2007, 01:40
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]

Windi
07.07.2007, 10:24
Also mit der Bascom Version 1.11.8.1 funktioniert Dein Basic-Code ohne Probleme.

Rofo88
07.07.2007, 10:26
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?

CsT
07.07.2007, 10:41
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

sm4ck
07.07.2007, 21:08
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

sm4ck
08.07.2007, 15:10
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

sm4ck
08.07.2007, 15:35
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?

sm4ck
09.07.2007, 16:50
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..

sm4ck
10.07.2007, 17:05
hmm ich nutze den 9.pol Sub-D Anschluss... damit müsste es doch auch gehen.. schon komisch wieso bascom nicht funktioniert

sm4ck
10.07.2007, 17:05
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?

Windi
10.07.2007, 17:18
Was wird denn von Bascom angezeigt wenn Du den Programmer startest (Taste F4)? Kommt hier eine Fehlermeldung?

sm4ck
11.07.2007, 15:58
Die Meldung

"Selected chip and target chip do not mach AT90S2313 <> ATmega8"

??

chr-mt
12.07.2007, 09:50
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

sm4ck
12.07.2007, 20:00
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.

sm4ck
01.08.2007, 15:07
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 ?

sm4ck
01.08.2007, 18:17
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...

sm4ck
02.08.2007, 19:20
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?

sm4ck
03.08.2007, 15:54
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...

sm4ck
03.08.2007, 16:09
wie mache ich das?

stefan_Z
03.08.2007, 17:11
da gibts oben irgendwie nen Knopf für in der Leiste...

sm4ck
03.08.2007, 17:55
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)