Port 0 ist OpenDrain, da könntest du Probleme bekommen.
Port 1 sollte funktionieren für deine Anwendung.
Hey,
ich habe folgendes Problem.
Ich gebe an einen Port das Signal für einen Servo aus. Das Signal stimmt (mit Oszilloskop nachgemessen), sobald ich jedoch den Servo anschließe verschwindet das Signal, obwohl der Mikrocontroller weiterläuft.
Hat jemand eine Idee wo das Problem liegen könnte?
Bei dem Controller handelt es sich um eine Atmel At89S8252 (Platine von der Schule)
Mfg Kif
Port 0 ist OpenDrain, da könntest du Probleme bekommen.
Port 1 sollte funktionieren für deine Anwendung.
Ich habe den Port2.1 für das Signal verwendet.
Was genau bedeutet OpenDrain.
Hallo!
Ohne Strommessung des für Servosteuerung benutzten Pins fällt mir leider nichts ein.
MfG
Port2.1 sollte funktionieren. Hast du ihn auch als Ausgang konfiguriert.
OpenDrain bedeutet das der Ausgang nur nach GND schaltet.
Den Port2.1 hab ich nicht als Ausgang konfiguriert. Wie kann man mit Assembler Ports als Ausgang definieren? Ich kann das ganze erst wieder Donnerstag testen (in der Schule) trotzdem schonmal Danke.
Beim AT89S8252 kann man die IO-Ports mit internem PullUp etwa so als Ein- bzw. Ausgang initialisieren wie unten für einen tiny13.Zitat von kif
Genaueres zu Deinem controller steht im Datenblatt (klick hier), leider kenne ich die Registernamen für die Ports nicht auswendig.Code:;=================================================================================== ; Initialisierungprozeduren, für µC, ADC und Timer-ISR ;=================================================================================== ; mc_init: ;=== Initialisiere Mikrocontroller ; PB0 (servo1) + PB3 (servo2) = Ausgang, PB4 (poti1) = ADC-Eingang ldi r16,0b00001000 ;Ausgang (1) auf PB3, Eingang (0) auf PB4 out ddrb,r16 ;Datenrichtungsbits setzen, Port ist Ausgang ldi r16,0b11100111 ;Portbits setzen out portb,r16 ; und initialisieren ret ;=====----->>>>>
Ciao sagt der JoeamBerg
Kann das sein das das genannte Programm nicht funktionieren würde? Der Atmel At89S8252 Controller gehört zu der 8051 Familie und in der Schule haben wir nie die Befehle "ldi" oder "out" sondern nur "move" etc.
Wie schon gesagt ich kann es erst wieder am Donnerstag in der Schule testen.
Zitat von oberallgeierStimmt, MEIN Beispielprogramm zeigt die Vorgehensweise. Es ist ja nicht für DEINEN Controller bzw. Deinen Assembler geschrieben. Der Ausdruck "etwa so" heißt ja eben nicht "genau so". Die für Deinen Controller bzw. die für Deinen Assembler zutreffenden Befehle und Register musst Du selbst aus Deinen Unterlagen raussuchen. Genau das sagt eindeutig der letzte Satz in meinem oberen Posting.Zitat von kif
Ciao sagt der JoeamBerg
Ja gut, aber auf mikrocontroller.net finde ich wiederrum einen Thread wo steht das man bei der 8051 Familie das nicht definieren muss, deshalb frag ich lieber nochmal nach ob das überhaupt geht.
((http://www.mikrocontroller.net/topic/58375 "vierter Post"))
Und das mit dem Datenblatt ist ja gut, aber für einen Laie ist das schwer zu verstehen, wenn ihr mir einen Hinweiss gibt unter welchen Unterpunkt ich schauen soll dann mache ich das gern, aber davor man sich knapp 41 Seiten übersetzten muss, darf man ja auf ein bisschen Hilfe aus dem Forum hoffen.
Mfg Kif und danke für die Mühe
Lesezeichen