PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : atmega32 führt testprogramm nicht aus



exzoys
31.01.2011, 11:45
hallo,
ich verwende den atmega32u2 und flip3.41 zum schreiben (usb).
mit dem avrstudio kriege ich led´s problemlos zum leuchten jedoch mit bascom nicht.
ich habe folgenden quellcode versucht.
$regfile = "m32def.dat"

$crystal = 16000000

Config Pinb.0 = Output

Do
Portb.0 = 1
Loop

end

die hex datei habe ich danach auf den atmega32 gebracht aber die led leuchtet einfach nicht auf...

wo liegt mein problem?
grüße

hardware.bas
31.01.2011, 18:14
...
DDRB.0 = 1 Port auf Ausgang setzten
PORTB.0 = 1 Port auf H setzen
...
Vorsicht: Bei BASCOM wird der Ausdruck "PIN...."
in Verbindung mit dem Auslesen benutzt, also als Eingang. VG Micha

exzoys
31.01.2011, 20:27
$regfile = "m32def.dat"

$crystal = 16000000



Ddrb.0 = 1

Do
Portb.0 = 1
Loop

End

geht auch nicht:(

hardware.bas
01.02.2011, 05:56
Für Deinen Test brauchst Du keine Schleife.
Alternativ wäre:
...
DDRB = &B00000001 :Portpin B.0 auf Ausgang, B.1-B.7 auf Eingang
PORTB = &B11111111 :B.0 auf High, B.1-B.7 PullUp ein (Strom sparen)
END

exzoys
01.02.2011, 05:59
ich versuche das gleich mal, danke

Gento
01.02.2011, 06:02
$regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 20
$swstack = 20

Config Pinb.0 = Output

Do
Portb.0 = 1
Loop

end

sollte gehen.

Gento

exzoys
01.02.2011, 06:03
led leuchtet ebenfalls nicht.
ich denke ich mache einfach was beim bespielen falsch.
kann ich denn die von bascom erzeugte .hex einfach per flip auf den atmega32u2 aufspielen?

@gento mit deinem code leuchtet die led ebenfalls nicht...

Gento
01.02.2011, 06:15
ähhhmmm
Der sollte aber laufen.
Ich teste den mal Heute Nachmittags.
Gento

hardware.bas
01.02.2011, 06:22
Da ich ausschliesslich mit einen Eigenbau-Dongle auf Basis des
Tri-State-Treiber-ICs 74HC125 in Verbindung mit der LPT-Schnittstelle
arbeite, kenne ich andere (kompliziertere und teurere) Programmierum-
gebungen nicht (ausser myAVR-LPT, die ist nach o.g. Prinzip aufgebaut ist). Daher jetzt nur meine Erfahrungen. Auf Grund der Einfachheit des
Programmes vermute ich, dass es erst gar nicht in den AVR kommt.
Dass Du das erst mit einen einfachen Testprogramm versuchst (ich fahre
in neue Schaltungen auch erst meist ein Blinkprogramm) ist ok.
Bei meinem Programmer wird das Programm geladen, wieder ausgelesen
und verifiziert. Alles über die SPI. Checke mal alles andere erst ab.
Ist der Atmega richtig gefust, bei vielen ist erst nur der interne
RC-Oszillatot aktiv. Quäle Dich nicht mit HEX.Daten ab. Am besten
poste mal Deine Schaltung. VG Micha

exzoys
01.02.2011, 06:31
mein board ist das u2dil.
http://re.reworld.eu/de/produkte/u2dil/index.htm
mit avr-studio kriege ich die leds ja zum blinken.. nur mit bascom nicht:(

MagicWSmoke
01.02.2011, 08:45
Atmega32u2 <> Atmega32, andere Registerbelegung, ähnlich dem ATMega32U4.
Für das einfache Testprogramm wird m32U4def.dat gehen, alles andere könnte kompliziert werden, da dem U2 einiges an HW des U4 fehlt.

exzoys
01.02.2011, 08:49
Atmega32u2 <> Atmega32, andere Registerbelegung, ähnlich dem ATMega32U4.
Für das einfache Testprogramm wird m32U4def.dat gehen, alles andere könnte kompliziert werden, da dem U2 einiges an HW des U4 fehlt.

kann ich damit denn ganz normal programmieren, solange ich nur die hardware benutze die im u2 auch vorhanden ist?

das testprogramm funktioniert aufjedenfall

edit:

Soeben habe ich gelesen dass der 32u2 genauso zu programmieren ist wie der AT90USB162.
Stimmt das?
grüße

MagicWSmoke
01.02.2011, 09:52
kann ich damit denn ganz normal programmieren, solange ich nur die hardware benutze die im u2 auch vorhanden ist?
Man kann's versuchen, Datenblätter von Atmel runterladen und vergleichen.


Soeben habe ich gelesen dass der 32u2 genauso zu programmieren ist wie der AT90USB162.
Wenn man die Register-Summary im Datenblatt anschaut, sehen die außer kleiner Unterschiede sehr ähnlich aus, auch Interruptvektoren sind gleich, könnte also klappen. Nur hat der 162 weniger Flash, SRam und EEprom. Wenn man den U2 also ausnutzen möchte, müsste man eine Kopie der usb162.dat umschreiben und die größeren Speicher eintragen.

hunni
01.02.2011, 10:02
kann es vielleicht auch daran liegen, dass du die Fuses nicht richtig gesetzt hast? Wenn du nämlich versucht mit 16 MHZ zu arbeiten, brauchst du ja irgendwo den Takt her. Naja und wenn der nicht da ist, kann das schon mal fehler geben. Mach einfach mal folgendes:



$crystal = 1000000
$regfile = "m32def.dat"

Config PORTB.0 = Output

Do
Toggle PORTB.0
Waitms 100
Loop




Einfach copy past machen und ausprobieren, wennns nicht klappt, dann kannste dir sicher sein, dass es irgendwo an der Hardware liegt. Benutzt du ein Board oder selbstgelötete schaltung?
Gruß Hunni

exzoys
01.02.2011, 10:04
das thema ist erledigt danke

hunni
01.02.2011, 10:08
oh... merkt man das ich nicht immer bis zum Ende lese?