PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : atmega8 für stromabsenkung



erfolgstyp
09.08.2009, 23:34
hallo zusammen
hab volgendes problem und zwar möcht ich mit nem atmega8 meine
frässteuerung erweitern. im moment wär ich schon froh wenn ich das mit
der stromabsenkung hinbekommen würd. hab zwei transistoren einer für den
ganz normalen strom (Vref beim l297) und einen für den haltestrom (ich
nenn den mal Vhalt). Von PCNC bekomm ich ja 5V wenn die motoren laufen
und 0V wenn sie stehen (oder umgekehrt wenn mans invertiert). hab dazu
folgendes programm gschrieben das einfach nur die tansistoren umschalten
soll je nach dem ob 5V oder 0V am eingang sind.

.include "m8def.inc"

ldi r16, 0b00111111 ;Datenrichtung PortD
out ddrD, r16 ;Datenrichtung PortD

ldi r16, 0b11101111 ;Datenrichtung PortC
out ddrC, r16 ;Datenrichtung PortC

ldi r16, 0b11111100 ;Datenrichtung PortB
out ddrB, r16 ;Datenrichtung PortB

loop:
sbic portC, 4 ;Wenn Stromabsenkung inaktiv
cbi portC, 6 ;Rücksetzte "Vref"
sbic portC, 4 ;Wenn Stromabsenkung inaktiv
sbi portD, 0 ;Setze "Vhalt"

sbis portC, 4 ;Wenn Stromabsenkung aktiv
cbi portD, 0 ;Rücksetzte "Vhalt"
sbis portC, 4 ;Wenn Stromabsenkung aktiv
sbi portC, 6 ;Setze "Vref"
rjmp loop

das will aber ums verrecken nicht laufen also an den fusebits liegts
nicht und an der beschaltung auch nicht (will den internen takt
verwenden) weil wenn ich alle pins im prog einfach high setz kann ich
überall 5V messen also schlussfolger ich draus dass was an meim programm
ned stimmt. die restliche DI/DO konfiguration is später für voll und
halbschritt
bin in sachen controller n blutiger anfänger vllt sieht jemand den
fehler ich bin echt n bisschen ratlos.

danke im vorraus mfg

Hubert.G
10.08.2009, 10:13
Bekommst du auch sicher 0V oder sind die 5V nur abgeschalten, dann hast du keine sicheren 0V. Es könnte auch sein das es ein OpenKollektor Ausgang ist, dann brauchst du einen PullUp. Du kannst das ja mal testen indem du einen PullUp an PC4 anschaltest, etwa 10k.

erfolgstyp
10.08.2009, 11:23
also ich hab jetz mal die internen pullup widerstände aktiviert das ergebnis is immer noch das gleiche. war aber ne gute idee danke =D> programm sieht jetz so aus

.include "m8def.inc"


ldi r16, 0b00111111 ;Datenrichtung PortD
out ddrD, r16 ;Datenrichtung PortD
ldi r16, 0b11000000
out portD, r16 ;Pullupwiderstände

ldi r16, 0b11101111 ;Datenrichtung PortC
out ddrC, r16 ;Datenrichtung PortC
ldi r16, 0b00010000
out portD, r16 ;Pullupwiderstände

ldi r16, 0b11111100 ;Datenrichtung PortB
out ddrB, r16 ;Datenrichtung PortB
ldi r16, 0b00000011
out portd, r16 ;Pullupwiderstände

;Stromabsenkung
loop:
sbic portC, 4 ;Wenn Stromabsenkung inaktiv
cbi portC, 6 ;Rücksetzte "Vref"
sbic portC, 4 ;Wenn Stromabsenkung inaktiv
sbi portD, 0 ;Setze "Vhalt"

sbis portC, 4 ;Wenn Stromabsenkung aktiv
cbi portD, 0 ;Rücksetzte "Vhalt"
sbis portC, 4 ;Wenn Stromabsenkung aktiv
sbi portC, 6 ;Setze "Vref"

rjmp loop

wem noch was einfällt ich wär echt enorm dankbar
mfg

Hubert.G
10.08.2009, 11:34
Das Problem ist das ich dein PCNC nicht kenne, es wäre auch möglich das von dort nur 5V kommen und keine 0V, dann müsstest du PullDown nehmen.

erfolgstyp
10.08.2009, 11:47
du glaubst also dass es nicht am programm ligt sondern an meinen pegeln am eingang

Hubert.G
10.08.2009, 12:00
Ich bin kein Assemblerspezialist, aber soweit denke ich schon das es OK ist. Leg doch einfach an die Eingänge fixe Pegel an und schau was heraus kommt, dann weisst du es sicher.

erfolgstyp
10.08.2009, 12:55
ok die pegel an den eingängen sind sauber 0,01V low und 4,97V high
könnts vllt doch an den fuse bits ligen?
könnt mir das nochmal einer erklären weil ich das ziemlich verwirrend find

danke

Hubert.G
10.08.2009, 13:54
Nein, wenn der Mega8 läuft sind die Fuses fürs erste egal.
Wenn du den Eingang auf GND legst tut sich am Ausgang nichts, und wenn du ihn dann auf 5V legst auch nicht?

erfolgstyp
10.08.2009, 18:54
an einem der ausgänge kann ich ca 3,2V messen egal welcher pegel am eingang anliegt

mfg

Hubert.G
10.08.2009, 20:14
Ist das der ganze Code den du da gezeigt hast? Zwischenwerte gibt es nicht, es sei denn der Kontroller resetet sich dauernd. Hast du einen Oszi um das anzusehen?
Du hast aber auch AVCC mit VCC verbunden, sonst tut sich auf PortC nichts.

erfolgstyp
10.08.2009, 20:26
also vcc und avcc sind verbunden aber das mit reset hab ich noch nicht probiert werd das morgen mal nachschaun oszi hab ich
danke für deine hilfe

Besserwessi
10.08.2009, 21:53
Zum testen auf einen Dauernden Rest könnte man z.B. als erstes ein Signal (z.B. 0,5 s an) auf einen anderen Pin geben, wo z.B. eine LED ran hängt. So kann man einen Reset dann auch sehen.

erfolgstyp
11.08.2009, 11:59
hab grad am reset mit oszi gmessen und nix messen können also ne schwankung von 5mV und die sollt glaub ich nicht alzu viel ausmachen

Hubert.G
11.08.2009, 12:02
Und was zeigt der Oszi auf dem Ausgang an dem du 3,2V misst.

erfolgstyp
11.08.2009, 12:09
eine saubere gleichspannung von ca 3V

Hubert.G
11.08.2009, 12:36
Wenn du da ca. 3V hast, dann kann da was nicht stimmen. An dem Ausgang hängt noch was drauf und der interne PullUp ist aktiv.
Hab den Fehler gerade gefunden, da hab ich auch drübergeschaut.
Was fragst du den mit sbic portC, 4 ab?
Probier es mal mit sbic pinC, 4
Man schreibt in das Port, liest aber den Pin.

erfolgstyp
11.08.2009, 12:40
verdammt weil wir grad beim reset pin sind ich hab den als ausgang benutzt kann ich das so einfach machen oder muss ich da noch was umstellen??

Hubert.G
11.08.2009, 13:14
Den Reset kannst du nicht so einfach als IO benutzen. Dann kannst du nur mehr HV-Programmieren, es geht kein ISP mehr.

erfolgstyp
11.08.2009, 13:19
ok das mit dem port und pin war wohl der anfänger fehler im programm es hat sich aber an den pegeln an den ausgängen immer noch nix geändert... werd dann mal n neues layout machen unds nochmal probieren und diesmal 5V auf den reset pin legen
danke für deine antworten bin jetz schon mal n stück weiter

mfg

erfolgstyp
11.08.2009, 16:38
also hab jetz n neues layout gmacht und den reset pin auf 5V glegt und siehe da schon funktioniert das ganze wunderbar
tausend dank fur eure hilfe