Sida 1 av 1

Problem med MAX203

Postat: 11 maj 2005, 17:16:09
av Chrille
Gjorde ett kretskort där jag ska använda mig av seriell kommunikation och så tänkte jag att det skulle bli ordentligt gjort därför använde jag mig av en MAX203 för att få rätt nivåer på spänningar och så. Alltid annars har jag bara kört med SerIn och SerOut kommandona i PicBasic och då bara haft ett motstånd i serie med pinnen på kontakten och då har det alltid fungerat.
Så nu undrar jag om jag kanske har tänkt fel när jag ritade kopplingsschemat? Har nämligen aldrig kört med dom här MAX-kretsarna innan. Har kopplat det så här:

Bild

Postat: 11 maj 2005, 17:26:20
av Schnegelwerfer
Det där ser väldigt fel ut måste jag säga!

Kräver inte MAX203 externa kondensatorer för att pumpa upp spänningen?
Det verkar så på symbolen i alla fall.

EDIT: Det ser väldigt rätt ut efter en snabb koll i databladet! :oops:

MAX203 har ju inbyggda kondingar, jag reagerade bara på att det fanns anslutningar för externa kondensatorer. Det är kanske iofs bara för att den ska bli pin-kompatibel med MAX202.

Postat: 11 maj 2005, 17:35:59
av cykze
Har du bara kört med motstånd förut så var du väl tvungen att invertera något också för att det skulle fungera? Så, invertera tillbaka det så borde det fungera. :)

edit: åäö

Postat: 11 maj 2005, 20:30:12
av Chrille
Nja jag vet inte att jag brukar invertera något. Innan skrev jag t.ex. så här för att skicka lite text ifrån PIC:en till datorn: SerOut PORTC.6,N9600,["test"] och då hade jag bara ett 1k ohm motstånd i serie med stift två på comporten. Jag provade att pilla bort MAX kretsen ifrån sockeln och satte ett 1k motstånd mellan ben 1 och 18 och då fungerar allt perfekt så något lurt med MAX kretsen är det, har provat två olika också.

Postat: 11 maj 2005, 20:35:05
av cyr
Då är det "serout" funktionen som inverterar det den skickar ut...

Finns det ingen funktion som använder USARTen istället? Eller åtminstone någon variant av serout som är till för att användas ihop med en riktig RS232-krets och därmed inte skickar inverterat?

Postat: 11 maj 2005, 20:51:00
av Chrille
Jo kommandot som heter HSerOut borde kanske fungera då, står om det här.

Postat: 11 maj 2005, 21:38:11
av cyr
Låter som det skulle funka ja, har du testat?

Postat: 11 maj 2005, 23:12:12
av Chrille
Jag provade lite men fick det inte att fungera. Tror det är register som inte är rätt satta för just 16F877A.
Jag provade så här:

DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 2400
DEFINE HSER_SPBRG 25

HSEROUT ["test"]

Borde väl räcka med det men är kanske dom fyra första raderna som är fel värden på, ska det stå några andra värden där?
Ska kolla mer på det imorgon och se om det går bättre.

Postat: 12 maj 2005, 16:32:04
av Chrille
Fick det att fungera idag. Skrev så här:

TRISC = %10111111
SPBRG = 25
RCSTA = %10010000
TXSTA = %00100000

HSerout ["test"]