Skicka seriell data över UART.
Jag tror inte ett skvatt på att "inkopplingen av MAX232 är konstig"!
Värdet på kondensatorerna kan variera beroende på exakt vilken version MAX232 man har. Vad det fattas på sista schemat är en 100nF keramisk avkoppling av spänningsmatningen, sittande nära kretsen.
Om 90% av tecknen kommer igenom och resten är skräp tror jag mer på att baud-rate kan vara "sned" och dylikt.
Värdet på kondensatorerna kan variera beroende på exakt vilken version MAX232 man har. Vad det fattas på sista schemat är en 100nF keramisk avkoppling av spänningsmatningen, sittande nära kretsen.
Om 90% av tecknen kommer igenom och resten är skräp tror jag mer på att baud-rate kan vara "sned" och dylikt.
Det som är konstigt är det att jag inte har ändrat min kod alls sedan det fungerade.
Det måste betyda att det är något med hårdvaran som är galet. Som det ser ut nu så får jag olika värden beroende på vilka kondensatorer jag kopplar in.
Vart ska jag placera 100nF? Nära kretsen?
EDIT: Det är väll elektrolytkondensatorer som jag ska använda mig av?
Det måste betyda att det är något med hårdvaran som är galet. Som det ser ut nu så får jag olika värden beroende på vilka kondensatorer jag kopplar in.
Vart ska jag placera 100nF? Nära kretsen?
EDIT: Det är väll elektrolytkondensatorer som jag ska använda mig av?
Jo det läste ja.
Det som är knstigt är som sagt varför det ena stunden fungerar och sedan så slutar det helt plötsligt att fungera. 10uF elektrolyt har fungerar bra, men gör inte de längre.
Jag har en MAX232ACPE 9546N vilket borde bli; https://www1.elfa.se/data1/wwwroot/webr ... 302326.pdf
Det som är knstigt är som sagt varför det ena stunden fungerar och sedan så slutar det helt plötsligt att fungera. 10uF elektrolyt har fungerar bra, men gör inte de längre.
Jag har en MAX232ACPE 9546N vilket borde bli; https://www1.elfa.se/data1/wwwroot/webr ... 302326.pdf
Den behöver 100nF kondensatorer för spänningspumparna men 1µF fungerar också. Dock är det bra att använda keramiska kondensatorer vilket gör 1µF lite dumma.
Och avkopplingen (100nF) ska vara så nära benen på kretsen som spänningen matas in på som praktisk möjligt. En 10µF är ingen skada heller men de 100nF keramisk är nära nog ett måste.
Och om det knasar sig och glapper är det något allvarligt fel i monteringen, gör om, gör rätt.
Och avkopplingen (100nF) ska vara så nära benen på kretsen som spänningen matas in på som praktisk möjligt. En 10µF är ingen skada heller men de 100nF keramisk är nära nog ett måste.
Och om det knasar sig och glapper är det något allvarligt fel i monteringen, gör om, gör rätt.
Senast redigerad av Icecap 2 november 2008, 17:12:29, redigerad totalt 1 gång.
-
- EF Sponsor
- Inlägg: 2109
- Blev medlem: 27 augusti 2005, 20:57:58
- Ort: Borlänge
Jag trodde jag förstod hur du menade, men inte.Icecap skrev:Den behöver 100nF kondensatorer för spänningspumparna men 1µF fungerar också. Dock är det bra att använda keramiska kondensatorer vilket gör 1µF lite dumma.
Och avkopplingen (100nF) ska vara så nära benen på kretsen som spänningen matas in på som praktisk möjligt. En 10µF är ingen skada heller men de 100nF keramisk är nära nog ett måste.
Och om det knasar sig och glapper är det något allvarligt fel i monteringen, gör om, gör rätt.
Vad menar du med "spänningspumparna"?
1. Hur vet du att AVR:en kör i 4915200 Hz? Har du gjort några fuseinställningar?
2. Som flera redan har påpekat så kan du inte göra som du gör i "recive()".
"unsigned char *value_recive;" innebär att du skapar en pekare som pekar på en minnesadress som innehåller en "unsigned char". Du kan då inte direkt börja använda "value_recive[0]" eftersom du inte vet _vad_ "value_recive" pekar på. Att det kanske fungerar ändå är bara (o)tur. Ett bättre förslag är att lösa det på typ det här sättet istället:
3. Har du provat att koppla bort in- och utgångarna från MAX232-kretsen och köra ingångarna manuellt medan du mäter med en multimeter på utgångarna? Då ser du ju i fall du får rätt spänningar. Har du någon typ av fyrkantsgenerator och oscilloskop så kan du ju prova med dom också.
2. Som flera redan har påpekat så kan du inte göra som du gör i "recive()".
"unsigned char *value_recive;" innebär att du skapar en pekare som pekar på en minnesadress som innehåller en "unsigned char". Du kan då inte direkt börja använda "value_recive[0]" eftersom du inte vet _vad_ "value_recive" pekar på. Att det kanske fungerar ändå är bara (o)tur. Ett bättre förslag är att lösa det på typ det här sättet istället:
Kod: Markera allt
#define MAX_ANTAL_ELEMENT 15 // 15 är hur många element
du vill kunna ha i arrayen
uint8_t recive(uint8_t *recive)
{
...
return ANTALET_INLÄSTA_BYTES;
}
...
int main(void)
{
uint8_t rec[MAX_ANTAL_ELEMENT];
uint8_t n;
init();
while (1)
{
n = recive(rec);
send(rec, n);
}
return 0;
}
Senast redigerad av cykze 3 november 2008, 18:03:02, redigerad totalt 1 gång.
Flera har nämnt det , men jag vill trycka lite extra på det...
*Avkopplingen* (över matningsspänningen) när man använder en MAX232
är *mycket viktig* !
Spänningspumparna i MAX232 skräpar ner matningsspänningen oerhört,
och en elektrolyt på 1uF direkt vid MAX232 är minimum. Utan den kan
man få alla möjliga konstiga problem. Vanliga logikkretsar skapar också
mycket störningar, men i ett högre frekvensband. Dessa avkopplar man
enkelt och normalt med en 100 nF keramisk konding. Men en MAX232
skapar helt andra störningar i ett frekvensband som naturligtsvis
överenstämmer med de interna spänningspumparna.
Notera att det i databladet står (du har ju läst det, eller hur?) :
spänningspumparna, så ska du även ha en 10 uF elektrolyt över
matningsspännigen så nära MAX232 som möjligt. Om du byter till 1 uF
så kan du även avkoppla med 1 uF.
När det sedan gäller kondingarna som sitter i själva spänningspumparna
så gäller naturligtsvis det som databladet anger för den modell av MAX232
som man har. Du länkade till Maxim's datablad och det är väl OK om det
är en Maxim du har. Annars bör du dubbelkolla mot rätt fabrikat, om det
inte är en Maxim du har.
Notera att databladet specar 0.1 uF för spänningspumparna till en MAX232*A*
(det var väl "A" versionen du hade?), så varför du kör med 10 uF är lite konstigt...
> Vad menar du med "spänningspumparna"?
Det är det som i databladet kallas "Dual Charge-Pump Voltage Converter".
> Jag tror att det är inkopplingen av max232 kretsen är konstig.
> Någon som möjlighen har en bra, fungerande guide?
Ja, Maxim har något som kallas "datablad". Och det fungerar utmärkt,
om man bara läser det och gör som det står. MAX232 är en av de mest
beprövade och välanvända kretsarna och det är normalt inga problem
att få en fungerande koppling. Det behövs ingen ytterligare guide utöver
databladet.
*Avkopplingen* (över matningsspänningen) när man använder en MAX232
är *mycket viktig* !
Spänningspumparna i MAX232 skräpar ner matningsspänningen oerhört,
och en elektrolyt på 1uF direkt vid MAX232 är minimum. Utan den kan
man få alla möjliga konstiga problem. Vanliga logikkretsar skapar också
mycket störningar, men i ett högre frekvensband. Dessa avkopplar man
enkelt och normalt med en 100 nF keramisk konding. Men en MAX232
skapar helt andra störningar i ett frekvensband som naturligtsvis
överenstämmer med de interna spänningspumparna.
Notera att det i databladet står (du har ju läst det, eller hur?) :
Alltså, om du använder 10 uF (vilket sannolikt är helt fel, men men...) förIn applications that are sensitive
to power-supply noise, VCC should be decoupled to
ground with a capacitor of the same value as C1 and
C2 connected as close as possible to the device.
spänningspumparna, så ska du även ha en 10 uF elektrolyt över
matningsspännigen så nära MAX232 som möjligt. Om du byter till 1 uF
så kan du även avkoppla med 1 uF.
När det sedan gäller kondingarna som sitter i själva spänningspumparna
så gäller naturligtsvis det som databladet anger för den modell av MAX232
som man har. Du länkade till Maxim's datablad och det är väl OK om det
är en Maxim du har. Annars bör du dubbelkolla mot rätt fabrikat, om det
inte är en Maxim du har.
Notera att databladet specar 0.1 uF för spänningspumparna till en MAX232*A*
(det var väl "A" versionen du hade?), så varför du kör med 10 uF är lite konstigt...
> Vad menar du med "spänningspumparna"?
Det är det som i databladet kallas "Dual Charge-Pump Voltage Converter".
> Jag tror att det är inkopplingen av max232 kretsen är konstig.
> Någon som möjlighen har en bra, fungerande guide?
Ja, Maxim har något som kallas "datablad". Och det fungerar utmärkt,
om man bara läser det och gör som det står. MAX232 är en av de mest
beprövade och välanvända kretsarna och det är normalt inga problem
att få en fungerande koppling. Det behövs ingen ytterligare guide utöver
databladet.
Jahaja...
Det är lite underligt att det tar över 10 inlägg innan du kollade det.
Alldeles för slarvigt innan man postar på ett forum och tar 100'tals
andras tid i anspråk. Nästan 600 "visningar" av tråden nu, och så
hade MAX232'an ingen matningsspänning...
Aja, du får en extrapoäng för att du i alla fall beskrev "felet"...

Det är lite underligt att det tar över 10 inlägg innan du kollade det.
Alldeles för slarvigt innan man postar på ett forum och tar 100'tals
andras tid i anspråk. Nästan 600 "visningar" av tråden nu, och så
hade MAX232'an ingen matningsspänning...
Aja, du får en extrapoäng för att du i alla fall beskrev "felet"...